作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我知道我们可以从 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
希望获得:
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_product
和 subset_close
并且需要 size
by subset_product
仅用于规范化。
可能的解决方案是 map
或 transform
对于与 df2
具有相同大小的 Series
和 div
:
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/
我是一名优秀的程序员,十分优秀!