计算python中每个目标变量的百分比

时间:2019-11-20 07:38:04

标签: python pandas numpy dataframe group-by

我有一个这样的数据框,

category    target
A               1
B               1
A               0
A               0
A               0
B               0
C               1
C               1

我想计算每个类别中每个目标值的百分比。 例如,

的百分比

'A'== 1是count(1)/(count(1)+count(0))

'A'== 0是count(0)/(count(1)+count(0))

如何获得这样的桌子

category        1          0
A              25%        75%
B              50%        50%
C             100%         0%

也许我应该使用一些分组功能?

1 个答案:

答案 0 :(得分:3)

crosstab与参数normalize='index'一起使用:

df = pd.crosstab(df['category'], df['target'], normalize='index').mul(100)
print (df)
target       0      1
category             
A         75.0   25.0
B         50.0   50.0
C          0.0  100.0

或将SeriesGroupBy.value_countsSeries.unstack一起使用以进行整形:

df = df.groupby('category').target.value_counts(normalize=True).unstack(fill_value=0).mul(100)
print (df)
target       0      1
category             
A         75.0   25.0
B         50.0   50.0
C          0.0  100.0