首页 > 解决方案 > 熊猫数据框中分类列的概率

问题描述

我有一个像这样的熊猫数据框

0 Age color country
1  23  red    Us
2  25  black  UK
3  19  blue   UK
4  10  red    India
5  15  red    UK

我想要做的是在“颜色”列中找到每个类别的概率,并有这样的东西:

0 Age color country  color_pro
1  23  red    Us       0.6 
2  25  black  UK       0.2
3  19  blue   UK       0.2
4  10  red    India    0.6
5  15  red    UK       0.6

我应该怎么做才能在元组中找到概率?像这样:

0 color color_pro
1 red    0.6 
2 black  0.2
3 blue   0.2
4 red    0.6
5 red    0.6

我想在另一个元组中有概率:

0 color_pro
1  0.6 
2  0.2
3  0.2
4  0.6
5  0.6

标签: pythonstatistics

解决方案


使用groupbycount获取值,然后计算比例。

df['color_pro'] = df.groupby('color')['color'].transform('count')
df['color_pro'] = df['color_pro'].map(lambda x : x/len(df))

或者,将两条线结合在一起,我们也可以这样做。

df['color_pro'] = df.groupby('color')['color'].transform(lambda x : x.count()/len(df))

推荐阅读