gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:53:33 24 4
gpt4 key购买 nike

我知道我们可以从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com