python - 如何在 python 中向 groupby 中的聚合添加函数?

标签 python pandas group-by aggregation

我正在尝试通过聚合之间的额外数学运算来获取 groupby 统计信息

我试过了

...agg({
'id':"count",
'repair':"count",
('repair':"count")/('id':"count")
})
yr    id    repair
2016  37    27 
2017  53    28

分组后我可以通过以下方式获得此统计信息

gr['repair']/gr['id']*100
yr      
2016    0.73
2017    0.53

如何在 groupby 中进行此类计算?

最佳答案

考虑一个返回聚合数据集的自定义函数:

def agg_func(g):
    g['id'] = g['id'].count()
    g['repair'] = g['repair'].count()
    g['repair_per_id'] = (g['repair'] / g['id']) * 100

    return g.aggregate('max')   # CAN ALSO USE: min, max, mean, median, mode 

agg_df = (df.groupby(['group'])
            .apply(agg_func)
            .reset_index(drop=True)
         )

使用种子随机数据进行演示:

import numpy as np
import pandas as pd

data_tools = ['sas', 'stata', 'spss', 'python', 'r', 'julia']

np.random.seed(8192019)
random_df = pd.DataFrame({'group': np.random.choice(data_tools, 500),
                          'id': np.random.randint(1, 10, 500),
                          'repair': np.random.uniform(0, 100, 500)
                         })

# RANDOMLY ASSIGN NANs
random_df['repair'].loc[np.random.choice(random_df.index, 75)] = np.nan

# RUN AGGREGATIONS
agg_df = (random_df.groupby(['group'])
                   .apply(agg_func)
                   .reset_index(drop=True)
         )

print(agg_df)

#     group  id  repair  repair_per_id
# 0   julia  79      70      88.607595
# 1  python  89      74      83.146067
# 2       r  82      69      84.146341
# 3     sas  74      66      89.189189
# 4    spss  77      69      89.610390
# 5   stata  99      84      84.848485

关于python - 如何在 python 中向 groupby 中的聚合添加函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57558956/

相关文章:

python - VGG16 Keras 微调 : low accuracy

python - Pandas :删除不构成完整四分之一的观测值

python - 在 python (pygtk) 中从网络摄像头监视器拍摄快照

mysql - 如何使用 group by 加速 mysql 查询

group-by - with 函数可以与 Laravel Eloquent 中的 Group By 子句一起使用吗?

python - 如果所有值都在同一列中,如何从 csv 文件读取数据?

Python pandas - 平均 10 分钟测量到 15 分钟平均值和 60 分钟平均值,具体取决于数据差距的长度

python - Pandas ,如何访问 multiIndex 数据框?

sql - 比较sql中组内的列

python - 地理 Pandas : sort a sample of points like a cycle graph