gpt4 book ai didi

python - 在 groupby 之后获取每列的百分比

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:55 24 4
gpt4 key购买 nike

我有一个包含两列 AB 的 pandas 数据框。 B 列包含三个类别 XY、'Z'。我需要检查 A 中每个组的特定值的百分比是多少。数据框如下所示:

  A   B
AA X
BB Y
CC Z
AA Y
AA Y
BB Z
.. ..

现在我想绘制一个堆积图,但它应该是基于百分比的堆积图,而不仅仅是基于 B 中对应于 A 中的组的每个类别的计数.这是我到目前为止所做的:

df.groupby(['A'])['B'].value_counts().unstack() 这给了我这个

B   X    Y      Z
A
AA 65 666 5
BB 123 475 6
CC 267 1337 40

现在我想将每一列除以它对应行的总和,就像第一行 (65/(65+666+5), 666/(65+666+5), 5/(65+ 666+5),)并将结果绘制为堆积条形图。有人可以帮忙吗?

最佳答案

您可以找到按行求和并沿轴除法,如下所示:

freq_df = df.groupby(['A'])['B'].value_counts().unstack()
pct_df = freq_df.divide(freq_df.sum(axis=1), axis=0)

然后绘制您应该能够简单地使用

pct_df.plot(kind="bar", stacked=True)

关于python - 在 groupby 之后获取每列的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53161212/

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