python - 如何从 groupby 和 size 获取归一化值

标签 python pandas group-by

我知道我们可以从 pandas 系列的 value_counts() 中获取归一化值,但是当我们对数据帧进行分组时,获取计数的唯一方法是通过 size( )。有什么方法可以使用 size() 获得标准化值吗?

例子:

df = pd.DataFrame({'subset_product':['A','A','A','B','B','C','C'],
                   'subset_close':[1,1,0,1,1,1,0]})
df2 = df.groupby(['subset_product', 'subset_close']).size().reset_index(name='prod_count')

df.subset_product.value_counts()
A    3
B    2
C    2

df2

enter image description here

希望获得:

subset_product subset_close prod_count norm
A              0            1          1/3
A              1            2          2/3
B              1            2          2/2
C              1            1          1/2
C              0            1          1/2

子集_产品 除了手动计算归一化值作为 prod_count/total 之外,还有什么方法可以得到归一化值吗?

最佳答案

我认为不可能只有一个 groupby + size 因为 groupby 由 2 列 subset_productsubset_close 并且需要 size by subset_product 仅用于规范化。

可能的解决方案是 maptransform对于与 df2 具有相同大小的 Seriesdiv :

df2 = df.groupby(['subset_product', 'subset_close']).size().reset_index(name='prod_count')
s = df.subset_product.value_counts()
df2['prod_count'] = df2['prod_count'].div(df2['subset_product'].map(s))

或者:

df2 = df.groupby(['subset_product', 'subset_close']).size().reset_index(name='prod_count')
a = df2.groupby('subset_product')['prod_count'].transform('sum')
df2['prod_count'] = df2['prod_count'].div(a)

print (df2)
  subset_product  subset_close  prod_count
0              A             0    0.333333
1              A             1    0.666667
2              B             1    1.000000
3              C             0    0.500000
4              C             1    0.500000

关于python - 如何从 groupby 和 size 获取归一化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105734/

相关文章:

列表中的Python CSV多个数字

MySQL UNION - 每个派生表都必须有自己的别名

mysql - 如何将相同类型的值分组为共同值并按该值分组

c# - c# 使用 linq 对数据表中的多列进行分组

python - 在 mac 上使用 python 安装 lxml

python - 在 theano 中使用 CUDA8

python - 时间间隔到均匀间隔的时间序列

python - Pandas 数据框 : Why I can't change the value of one column based on value of another through row iteration?

python - pandas str contains 返回匹配项

Python NumPy 'Expected an input array of unsigned byte data type'