Pandas群体百分比

2024-05-15 09:40:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如何计算大熊猫的群体百分比?在

类似于 Pandas: .groupby().size() and percentagesPandas Very Simple Percent of total size from Group by我想计算每组值的百分比。在

我怎样才能做到这一点?在

我的数据集结构如下

ClassLabel, Field

最初,我在ClassLbelField上进行聚合

^{pr2}$

现在我想知道每个组的客户百分比。{3}我不可能得到一个更简单的方法,也不可能得到一个更简单的方法。在

编辑

我只想根据单个组计算百分比,例如30 0 0.125 1 0.250 0+1之和-->0.125+0.250=0375,并使用此值来划分/规范化分组分组.sum() enter image description here


Tags: andof方法fieldpandassizesimple群体
1条回答
网友
1楼 · 发布于 2024-05-15 09:40:31

IIUC您可以使用:

mydf = pd.DataFrame({'Field':[1,1,3,3,3],
                   'ClassLabel':[4,4,4,4,4],
                   'A':[7,8,9,5,7]})

print (mydf)
   A  ClassLabel  Field
0  7           4      1
1  8           4      1
2  9           4      3
3  5           4      3
4  7           4      3

grouped = mydf.groupby(['Field', 'ClassLabel']).size()
print (grouped)
Field  ClassLabel
1      4             2
3      4             3
dtype: int64

print (100 * grouped / grouped.sum())
Field  ClassLabel
1      4             40.0
3      4             60.0
dtype: float64

^{pr2}$

按注释编辑:

mydf = pd.DataFrame({'Field':[1,1,3,3,3,4,5,6],
                   'ClassLabel':[0,0,0,1,1,0,0,6],
                   'A':[7,8,9,5,7,5,6,4]})

print (mydf)

grouped = mydf.groupby(['Field', 'ClassLabel']).size()
df =  grouped / grouped.sum()

df = (grouped / df.groupby(level=0).transform('sum')).reset_index(name='new')
print (df)
   Field  ClassLabel       new
0      1           0  8.000000
1      3           0  2.666667
2      3           1  5.333333
3      4           0  8.000000
4      5           0  8.000000
5      6           6  8.000000

相关问题 更多 >