我想问你关于帖子的延伸" Plotting grouped data in same plot using Pandas"。当我们应用函数' groupby
'时,这种扩展会发挥作用。不止一次。具体来说,我有兴趣绘制这个函数。我正在处理下面的行,这与功能图不兼容。
行:
f=s['Amount'].groupby([s['classe'],s['Month'],s['Year']]).sum()
总结超过'金额'和群体' classe','月'和'年'。为简单起见,让我们来看看年份。永远是相同的价值:2017年。
现在我想制作以下情节:
我的尝试:
for label, df in s.groupby('classe').get_group('Rent'):
df.plot.scatter(x='Month', y='Amount', s=50)
plt.show()
其中Rent代表具体的上述' classe'。这种尝试不起作用,也没有考虑到“金额”的总和。我无法使用这样的sum()
'连同功能图。显然,没有get_group('Rent')
的这些行给出了与类数一样多的图。他们不计算金额'金额'金额然而。有什么想法/建议吗?
我还尝试使用pivot_table
,如下面的代码所示。我可以一起画,但我不能画一个班。在这里我的尝试:
test=pd.pivot_table(s,index=['classe','Month','Year'],values=['Amount'],aggfunc=np.sum)
test.unstack('classe').unstack('Year').plot(kind='area', figsize,[16,6],stacked=False,colormap='autumn').legend(loc=2,prop={'size':9})
plt.show()
任何想法/建议或好例子?我想了解如何从这些pivot_table
和groupby
函数中绘制出我想要的内容。
答案 0 :(得分:0)
考虑按照当前pivot_table
和unstack
例程循环的每个唯一 Classe 进行过滤。下面用正数随机数据进行演示,该数据应始终通过定义的种子重现相同:
import pandas as pd
import numpy as np
import random
from matplotlib import pyplot as plt
np.random.seed(176)
random.seed(16)
df = pd.DataFrame({'classe': random.sample(list('ABCDE')*50, k=15),
'Amount': np.random.sample(15)*100,
'Year': random.sample(list(range(2010,2018))*50, k=15),
'Month': random.sample(list(range(1,12))*50, k=15)})
for cls in df['classe'].unique():
# AREA GRAPH
test = pd.pivot_table(df[df['classe']==cls], index=['classe', 'Month', 'Year'], values=['Amount'], aggfunc=np.sum)
test.unstack('classe').unstack('Year').plot(kind='area', figsize=(16,6), stacked=False, colormap='autumn').legend(loc=2,prop={'size':9})
# SCATTER PLOT
test = pd.pivot_table(df[df['classe']==cls], index=['classe', 'Month', 'Year'], values=['Amount'], aggfunc=np.sum).reset_index()
test.plot(kind='scatter', x='Month',y='Amount', figsize=(16,6), stacked=False).legend(loc=2,prop={'size':9})
plt.show()
plt.clf()
plt.close()
区域图输出