如何解决如何根据条件获取列的百分比?蟒蛇
我想根据每个相关国家/地区的出现次数来计算“产品”列的百分比。非常感谢您的帮助。
这是我到目前为止所做的, 我使用以下代码计算了新的数据框:
gb = data1.groupby(['Country','Products']).size()
df = gb.to_frame(name = 'ProductsCount').reset_index()
df
哪个给我的东西看起来像这样:
Countries Products ProductsCount
0 Country 1 Product 1 5
1 Country 1 Product 2 31
2 Country 2 Product 1 2
3 Country 2 Product 2 1
我的目标是直接根据国家/地区获得每种产品的百分比,而无需计算['ProductsCount'],如下所示:
Countries Products Percentage
0 Country 1 Product 1 0.138
1 Country 1 Product 2 0.861
2 Country 2 Product 1 0.667
3 Country 2 Product 2 0.333
Countries Products ProductsCount Products%
0 Country 1 Product 1 5 0.138
1 Country 1 Product 2 31 0.861
2 Country 2 Product 1 2 0.667
3 Country 2 Product 2 1 0.333
我设法使用以下代码根据整个数据集只计算了百分比:
df['Products%'] = df.ProductsCount/len(df.Country)
提前谢谢!
解决方法
将SeriesGroupBy.value_counts
与normalize=True
参数一起使用:
df = (data1.groupby('Countries')['Products']
.value_counts(normalize=True,sort=False)
.reset_index(name='Percentage'))
print (df)
Countries Products Percentage
0 Country 1 Product 1 0.138889
1 Country 1 Product 2 0.861111
2 Country 2 Product 1 0.666667
3 Country 2 Product 2 0.333333
编辑:
df = (data1.groupby('Countries')['Products']
.value_counts(sort=False)
.reset_index(name='ProductsCount')
.assign(Percentage = lambda x: x['ProductsCount'].div(len(x))))
print (df)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。