如何解决您如何绘制最大的汇总groupby数据?
我确定这已经在某处得到了回答,但是我对熊猫并不满意,需要有人为我分解。
我有这个功能:
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轴是Activity Month
,Y轴是总和,并且每个刻度是两个最大的Agent Sign
条形图? / strong>
例如,202001
的刻度线将有两个小节,一个为Agent Sign
CRCTLD,另一个为DFW1DF。
解决方法
让我们尝试使用groupby().cumcount
(也可以使用nlargest
)提取行,然后使用sns.barplot()
进行绘制:
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'
)
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。