Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 如何用条形图绘制最大的聚合groupby数据?_Pandas_Sorting_Pandas Groupby_Bar Chart_Seaborn - Fatal编程技术网

Pandas 如何用条形图绘制最大的聚合groupby数据?

Pandas 如何用条形图绘制最大的聚合groupby数据?,pandas,sorting,pandas-groupby,bar-chart,seaborn,Pandas,Sorting,Pandas Groupby,Bar Chart,Seaborn,我相信这已经在某个地方得到了回答,但我对熊猫不太在行,需要有人帮我把它解释清楚 我有这个功能: def process_data(data): data = data[data['Bucket Number'] == 25.0].groupby(['Activity Month', 'Agent Sign']).agg({'Total Ping Current Forecast': [np.sum]}) return data 编辑:固定样本 产生此输出的:

我相信这已经在某个地方得到了回答,但我对熊猫不太在行,需要有人帮我把它解释清楚

我有这个功能:

def process_data(data):
    data = data[data['Bucket Number'] == 25.0].groupby(['Activity Month', 'Agent Sign']).agg({'Total Ping Current Forecast': [np.sum]})
    return data
编辑:固定样本

产生此输出的:

                          Total Ping Current Forecast
                                                  sum
Activity Month Agent Sign                            
202001         CRCDIF                        618485.0
               CRCTLD                      47746137.0
               DFW1DF                      16220228.0
               HDQ9LO                         19995.0
               HDQBDE                         10739.0
...                                               ...
202007         HDQRPT                             0.0
               HDQZED                             0.0
               MSCUHD                             0.0
               RDUSMD                         56732.0
               {Various}                  245079251.0
如果X轴是
活动月
,Y轴是总和,每个勾号是两个最大的
代理符号
条,我如何制作条形图?


因此,例如,
202001
处的勾号将有两个条形,一个用于
代理符号
CRCTLD,一个用于DFW1DF。

让我们尝试使用
groupby().cumcount
提取行(也可以使用
nlargest
),然后使用
sns.barplot()
进行打印:

processed=处理数据(数据)
sns.barplot(数据=已处理。排序_值('sum',升序=False)
.assign(rank=lambda x:x.groupby(level=0).cumcount())
.reset_index()

.loc[lambda x:x['rank']我得到一个错误,说
Dataframe对象没有指向\u frame的属性,我得到一个'sum'的键错误。只需将
放到_frame
中,因为您已经有了一个数据帧。请参阅更新的答案。我得到了。我得到了一个
sum
的键错误。我没有一个名为sum的列,这正是我调用
.agg({总Ping Current Forecast':[np.sum]})时返回的结果
是的,忘了提到tat
数据
这是
过程数据(数据)
的输出。是的,这是我正在使用的输出。但是我在
中得到了
,因为我不认为
sum
实际上是数据帧中的一个序列,对吗?
processed = process_data(data)

sns.barplot(data=processed.sort_values('sum',ascending=False)
                     .assign(rank=lambda x: x.groupby(level=0).cumcount())
                     .reset_index()
                     .loc[lambda x: x['rank']<=1],
            x='Activity Month',y='sum', hue='rank'     
           )