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'
)