python - 如何使用 groupby 函数计算数据集的百分比
问题描述
我是使用 Python 的新初学者,我对如何使用 python 通过 groupby 函数计算某些列的百分比有一些疑问。如果您能帮助我解决这个问题,我将不胜感激。非常感谢!!!
我已经尝试过这样的代码:
import pandas as pd
import numpy as np
from itertools import groupby
#dataset = pd.read_excel('ABC.xlsx')
casual = dataset[['Location', 'Fruit_Types']].dropna()
casual_group = casual.groupby(['Location', 'Fruit_Types'], sort = False).count().reset_index()
casual_matrix = casual_group.pivot(index = 'Location', columns = 'Fruit_Types').fillna(0)
我有一个 excel 数据文件,如下所示:
我的预期输出是这样的:
解决方案
这应该这样做:
map_key = dataset.groupby(['Fruit_Types']).size().to_dict()
df = dataset.dropna().groupby(['Fruit_Types', 'Location']).size()
df = df.reset_index().rename(columns={0:'Count'})
df['Total'] = df['Fruit_Types'].map(map_key)
df['Percentage'] = df.Count / df.Total
df = df.set_index(['Fruit_Types', 'Location'])
print(df)
Count Total Percentage
Fruit_Types Location
Apple Japan 1 4 0.250000
USA 3 4 0.750000
Bannana Costa Rica 1 3 0.333333
Philippines 1 3 0.333333
USA 1 3 0.333333
Mango Ecuador 2 3 0.666667
Philippines 1 3 0.333333
Strawberry Japan 2 5 0.400000
Korea 3 5 0.600000
推荐阅读
- java - spring-boot native-image 在 graalvm compile 上失败
- node.js - 如何为用户生成唯一的 URL 并使用参数来验证链接的有效性?
- javascript - 在错误的位置打开图层 WMTS
- node.js - 无法通过订阅更新商店,因为 ConnectionHandler.getConnection 总是返回 undefined
- angular - Angular:如何测试单击组件 nativeElement 会打开一个对话框
- bash - Bash脚本将环境变量作为命令传递但不执行它?
- ruby-on-rails - 如何在 Ruby on Rails 表单中添加 document.getElementById 值?
- vue.js - 从输入 vue 中获取日期
- javascript - Angular 10:我正在尝试从跨度复制字符串数据,而不使用 HTML 中的 @Input 括号
- r - 使用 R 中的数据表在值旁边呈现彩色箭头