python - 如何获取每个 `user_id`对应的每个tag值的比例

标签 python pandas pandas-groupby

我得到一个数据框如下:

    user_id label
0   937922  1
1   937922  2
2   937922  2
3   937922  2
4   1369473 1
5   1330642 2
6   1330642 2
7   1330642 1
8   1330642 1
9   411741  1
10  411741  1
11  1552476 2
12  1552476 1
13  1552476 1
... ...
... ...

我想获取每个user_id对应的label2的比例,应该是这样的:

user_id label
937922  0.7500
1369473 0
1330642 0.5000
411741  0
1552476 0.3333

我知道我应该以某种方式使用 pd.groupby 并将其除以 pd.groubpy(['user_id']).count()[['type']].
但是我很难做到,我找不到我想要的。
如果不介意谁能帮助我?
提前致谢。

最佳答案

groupbyvalue_counts 为您提供所有计数:

df.groupby('user_id').label.value_counts(normalize=True)

输出:

user_id  label
411741   1        1.000000
937922   2        0.750000
         1        0.250000
1330642  1        0.500000
         2        0.500000
1369473  1        1.000000
1552476  1        0.666667
         2        0.333333
Name: label, dtype: float64

关于python - 如何获取每个 `user_id`对应的每个tag值的比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56764743/

相关文章:

python - 将 numpy 数组转换为类别

python - 如何安装pandas在Eclipse下运行

python - Pandas 数据框,如何按多列分组并对特定列应用总和并添加新的计数列?

python - 使用 pyparsing 解析多行的单词转义拆分

python - 保存时使用主键创建字段描述

python - 使用 Flask-WTForms,如何设置 html 表单部分的样式?

python pandas resample 应用 bin 开始和 bin 宽度

python - 在 Pandas 中的 GroupBy 对象内进行过滤

python - 根据 Pandas Groupby 中的组合标准添加新列

SGE 集群上的 Java 最大堆大小