gpt4 book ai didi

python - 使用 Pandas 进行分组数据帧的统计

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:13 28 4
gpt4 key购买 nike

我有一个 DataFrame,它基本上可以按两列分组:LevelSub_level

数据如下所示:

    Level_1    Sub_level   Value

0 Group A A1 100
1 Group A A2 200
2 Group A A1 150
3 Group B B1 100
4 Group B B2 200
5 Group A A1 200
6 Group A A1 300
7 Group A A1 400
8 Group B B2 450
...

我想获得每个 Sub_level 与每个可比较的 Level_1 相比的频率/计数,即

Level_1   Sub_level   Pct_of_total

Group A A1 5 / 6 (as there are 6 Group A instances in 'Level_1', and 5 A1:s in 'Sub_level')
A2 1 / 6
Group B B1 1 / 3 (as there are 3 Group B instances in 'Level_1', and 1 B1:s in 'Sub_level')
B2 2 / 3

当然,新列Pct_of_total中的分数应表示为百分比。

有什么线索吗?

谢谢

/N

最佳答案

我认为你需要groupby + size首先 df,然后按第一级 (Level_1) 和 transform groupby 总和。最后除以div :

df1 = df.groupby(['Level_1','Sub_level'])['Value'].size()
print (df1)
Level_1 Sub_level
Group A A1 5
A2 1
Group B B1 1
B2 2
Name: Value, dtype: int64

df2 = df1.groupby(level=0).transform('sum')
print (df2)
Level_1 Sub_level
Group A A1 6
A2 6
Group B B1 3
B2 3
Name: Value, dtype: int64

df3 = df1.div(df2).reset_index(name='Pct_of_total')
print (df3)
Level_1 Sub_level Pct_of_total
0 Group A A1 0.833333
1 Group A A2 0.166667
2 Group B B1 0.333333
3 Group B B2 0.666667

关于python - 使用 Pandas 进行分组数据帧的统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43937955/

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