gpt4 book ai didi

python - 在应用 pandas groupby 后向图中添加条形以显示平均值

转载 作者:行者123 更新时间:2023-11-30 22:03:51 25 4
gpt4 key购买 nike

我有一个示例数据框:

test = pd.DataFrame({'cluster':['1','1','1','1','2','2','2','2','2','3','3','3'],
'type':['a','b','c','a','a','b','c','c','a','b','c','a']})

然后我使用 groupby 绘制每个集群的类型值百分比:

pct_col = test.groupby(['cluster','type'])['type'].count()/(test.groupby('cluster').size())*100 # don't reset the index!
test = test.set_index(['cluster', 'type']) # make the same index here
test['count %'] = pct_col
test = test.reset_index() # to take the hierarchical index off again
sns.catplot(x="cluster", y="count %", hue="type", kind="bar", data=test)

enter image description here

如何添加额外的三个条形图,显示基于整个数据集的每种类型的平均值 --> test.groupby('type')['type'].count()/(len(test ))*100

非常感谢您的帮助!

最佳答案

使用交叉表

pd.crosstab(test.cluster,test.type,normalize='index',margins=True)
Out[305]:
type a b c
cluster
1 0.500000 0.250000 0.250000
2 0.400000 0.200000 0.400000
3 0.333333 0.333333 0.333333
All 0.416667 0.250000 0.333333

#pd.crosstab(test.cluster,test.type,normalize='index',margins=True).mul(100).stack()

更新我认为用pandas绘制情节很容易

pd.crosstab(test.cluster,test.type,normalize='index',margins=True).plot(kind='bar')

enter image description here

关于python - 在应用 pandas groupby 后向图中添加条形以显示平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53451635/

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