Python中能否一步完成groupby并同时计算多项统计指标?
Python Pandas实现分组多指标一步聚合的方法
完全可以实现和R data.table等价的分组后多统计量同步计算效果,不需要分开计算再合并,借助Pandas的agg()命名聚合特性即可一步完成。
前置依赖
需要提前导入Pandas以及用于计算偏度、峰度的Scipy统计模块:
import pandas as pd from scipy.stats import skew, kurtosis
核心实现代码
和你给出的R代码逻辑完全对应,分组键为Year、Category,同步计算5项统计量后按分组键排序:
df = data.groupby(['Year', 'Category'], as_index=False).agg( # 计算Item列的唯一值数量 ItemCount=pd.NamedAgg(column='Item', aggfunc='nunique'), # 计算Value列的中位数 Median_val=pd.NamedAgg(column='Value', aggfunc='median'), # 计算Value列的均值 Avg_val=pd.NamedAgg(column='Value', aggfunc='mean'), # 计算Value列的偏度 Skew_val=pd.NamedAgg(column='Value', aggfunc=skew), # 计算Value列的峰度 Kurt_val=pd.NamedAgg(column='Value', aggfunc=kurtosis) ).sort_values(by=['Year', 'Category'], ignore_index=True)
补充说明
如果你的Pandas版本低于0.25不支持命名聚合语法,也可以用字典嵌套的方式完成聚合,后续再重命名列即可,效果一致。
内容的提问来源于stack exchange,提问作者Jiamei
相关产品推荐
相关产品推荐

