首页 > 解决方案 > 如何使用 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 数据文件,如下所示: excel数据文件

我的预期输出是这样的: 预期产出

标签: pythonpandas

解决方案


这应该这样做:

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

推荐阅读