按频率分组数据并估算每组的百分比

时间:2017-03-09 17:34:15

标签: python pandas dataframe

我有这个DataFrame df

ID  EVAL
11  1
11  0
22  0
11  1
33  0
44  0
22  1
11  1

我需要估算两个组中EVAL等于1和0的行的百分比:组1包含IDs重复次数大于或等于3次的df }。第2组包含IDs,在df中重复次数少于3次。

结果应该是这个:

GROUP    EVAL_0    EVAL_1       
1        25        75
2        75        25

1 个答案:

答案 0 :(得分:1)

您可以使用value_counts()获取重复三次或更多次的ID的百分比,然后使用带有mean的布尔索引。

>>> (df.ID.value_counts() >= 3).mean()
0.25

这是作品的要点,但取决于你想要用它做什么,如果你想要像你的那样输出你可以创建一个DataFrame

>>> g1_perc = (df.ID.value_counts() >= 3).mean()
>>> pd.DataFrame(dict(group=[1, 2], perc_group=[g1_perc*100, (1-g1_perc)*100]))
   group  perc_group
0      1        25.0
1      2        75.0

相反百分比的第二列看起来对我来说有点不用了。