gpt4 book ai didi

python - 在 Pandas 的 groupby 对象中绘制每个组的大小

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:22 25 4
gpt4 key购买 nike

我有一个数据框,下面的代码为我提供了两个“分支”0 和 1 之一的每个性别的交易数量。假设我们有以下 groupby 对象

data.groupby(['branch','gender']).agg(np.size)['count']
branch gender
0 FEMALE 1317771
MALE 1214686
1 FEMALE 254173
MALE 179210
Name: count, dtype: int64

我这样做是因为我想创建一个条形图来显示每个性别和分支机构的交易数量。

这是我的做法:F 和 M 表示女性和男性。

plt.bar([0,1,2,3,],data.groupby(['end_reason','gender']).agg(np.size)['listener_id'],align='center')
plt.xticks(range(4),['F_0','M_0','F_1','M_1'])
plt.title("Number of transactions per gender and branch")

问题是我确信这不是正确的方法,因为我必须自己对标签进行硬编码。我认为可能有更好的方法来做到这一点,因为想象我们有更多的组,并且在 xticks 中硬编码所有组组合是不切实际的。谢谢

最佳答案

如果我没理解错的话,你的 df 是这样的:

   branch  gender  listener_id
0 0 male 1
1 0 male 3
2 1 female 2
3 1 female 4
4 1 male 1

你可以这样做:

import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
df.groupby(['branch','gender']).agg(np.size)['listener_id'].unstack().plot(kind='bar')
plt.show()

并且有: enter image description here

关于python - 在 Pandas 的 groupby 对象中绘制每个组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51619164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com