Python 数据帧分组按图(扩展)

Python 数据帧分组按图(扩展),python,pandas,Python,Pandas,我想问你关于延长“职位”的问题。当我们多次应用函数“groupby”时,这种扩展就开始发挥作用。具体来说,我对绘制此函数感兴趣。我正在处理下面这行,它与函数图不兼容 行: f=s['Amount'].groupby([s['classe'],s['Month'],s['Year']]).sum() 其总和超过“金额”并分为“类别”、“月份”和“年份”。为了简单起见,让“年份”始终保持相同的值:2017年 现在我想做以下的情节: 针对特定类型的“类别”绘制“月份与金额” 我的尝试: for

我想问你关于延长“职位”的问题。当我们多次应用函数“
groupby
”时,这种扩展就开始发挥作用。具体来说,我对绘制此函数感兴趣。我正在处理下面这行,它与函数图不兼容

行:

f=s['Amount'].groupby([s['classe'],s['Month'],s['Year']]).sum()
其总和超过“金额”并分为“类别”、“月份”和“年份”。为了简单起见,让“年份”始终保持相同的值:2017年

现在我想做以下的情节:

  • 针对特定类型的“类别”绘制“月份与金额”
我的尝试:

for label, df in s.groupby('classe').get_group('Rent'):
      df.plot.scatter(x='Month', y='Amount', s=50)
plt.show()
其中租金代表上述特定的“类别”。此尝试无效,且未考虑“金额”上的金额。我无法将这样的“
sum()
”与函数绘图一起使用。显然,这些没有
get_group('Rent')
的行给了我与类数一样多的图。他们还没有算过“数量”。有什么想法/建议吗

我还尝试使用
pivot\u 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
函数中绘制我想要的任何内容

考虑按循环通过当前
pivot\u表
unstack
例程的每个唯一类进行过滤。下面用正数随机数据演示了如何通过定义的种子始终复制相同的数据:

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()
面积图输出


编辑队列已满,因此我无法添加它,但您所指的问题似乎是这样的?我已经阅读过,但不是我的案例。“groupby”只使用一次:p_df.groupby('class')。在我的例子中,我想通过几个列来分组:“classe”、“Month”、“Year”:(明白了,我只是链接它以节省某人查找它的时间。我刚才建议进行编辑,添加该内容并更新您的标记,希望有更多的pandas知识的人能够看到它!如果是Python版本特定的,请随时返回版本标记。谢谢。现在已经清楚了!最后一个问题。如果我想获得分散的pl我可以修改什么代码来代替“区域”类型的绘图?下面的代码:“test.unstack('classe')。unstack('Year')。plot.scatter(x='Month',y='Amount',figsize=(16,6),stacked=False,colormap='秋')。legend(loc=2,prop={'size':9})”给出了错误“keyrerror:Month”…感谢advacedYou无需使用
取消堆栈
方法。只需使用
重置索引()运行
pivot\u table
将月份作为0级列而不是分层1级列。然后运行“散布”。请参见编辑。请注意颜色映射已被删除。非常感谢。我想将我获得的所有信息汇总到一个散点图中。是否可以使用此迭代方法?最好使用不同的颜色。此外,如果我使用您的代码并想查看某个特定的在每个散点图上写下,我该怎么做?非常感谢@parfait这些听起来像是一个新问题。请接受这个问题(在旁边打勾)以确认解决方案。是的,因为它偏离了这个问题。