当前位置: 首页 > news >正文

【Pandas】pandas DataFrame agg

Pandas2.2 DataFrame

Function application, GroupBy & window

方法描述
DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴(行或列)应用一个函数
DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数
DataFrame.applymap(func[, na_action])用于对 DataFrame 中的每一个元素应用一个函数
DataFrame.pipe(func, *args, **kwargs)用于实现链式编程风格的方法
DataFrame.agg([func, axis])用于对 DataFrame 的数据进行聚合操作
DataFrame.aggregate([func, axis])用于对 DataFrame 进行聚合操作的方法
DataFrame.transform(func[, axis])用于对 DataFrame 的列或行应用函数
DataFrame.groupby([by, axis, level, …])用于进行分组操作的核心方法

pandas.DataFrame.groupby()

pandas.DataFrame.groupby() 是 Pandas 中用于进行分组操作的核心方法。它允许你根据一个或多个列的值将数据分成不同的组,然后对每个组应用聚合、转换或过滤等操作。


一、方法签名
DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, observed=<no_default>, dropna=True)

二、参数说明
参数类型描述
bymapping, function, label, or list of labels分组依据。可以是列名、函数(用于处理索引)、字典映射、Series 或列表(多列分组)。
axisint or str, default: 0沿哪个轴分组:0 表示按行分组(默认),1 表示按列分组。
levelint or str, optional如果轴是 MultiIndex,则按指定层级分组。
as_indexbool, default: True是否将分组键作为结果的索引(仅在聚合时有效)。
sortbool, default: True是否对分组键排序。
group_keysbool, default: True在使用 apply() 时是否添加分组键到结果中。
observedbool, default: False控制是否只显示观察到的类别(适用于分类变量分组)。
dropnabool, default: True是否排除包含 NaN 的分组键。

三、返回值
  • 返回一个 GroupBy 对象,支持链式调用:
    • .agg():聚合
    • .transform():变换
    • .filter():过滤
    • .apply():自定义函数

四、常用场景及示例
示例1:单列分组 + 聚合(.agg()
import pandas as pddf = pd.DataFrame({'Category': ['A', 'B', 'A', 'B'],'Sales': [100, 200, 150, 250]
})# 按 Category 分组并求和
result = df.groupby('Category').agg({'Sales': 'sum'})
print(result)
输出:
           Sales
Category       
A            250
B            450

示例2:多列分组 + 多种聚合函数
df = pd.DataFrame({'Region': ['North', 'South', 'North', 'South'],'Product': ['X', 'X', 'Y', 'Y'],'Sales': [100, 150, 200, 250],'Units': [10, 15, 20, 25]
})# 按 Region 和 Product 分组,分别对 Sales 和 Units 进行不同聚合
result = df.groupby(['Region', 'Product']).agg(Total_Sales=('Sales', 'sum'),Avg_Units=('Units', 'mean')
)
print(result)
输出:
                   Total_Sales  Avg_Units
Region  Product                         
North   X                  100       10.0Y                  200       20.0
South   X                  150       15.0Y                  250       25.0

示例3:使用 .transform() 进行标准化
# 计算每组内的平均值并广播回原 DataFrame
df['Avg_Sales_By_Region'] = df.groupby('Region')['Sales'].transform('mean')
print(df)
输出:
    Region Product  Sales  Units  Avg_Sales_By_Region
0    North       X    100     10              150.0
1    South       X    150     15              200.0
2    North       Y    200     20              150.0
3    South       Y    250     25              200.0

示例4:使用 .filter() 筛选特定组
# 只保留总销售额大于 300 的区域
filtered_df = df.groupby('Region').filter(lambda x: x['Sales'].sum() > 300)
print(filtered_df)
输出:
   Region Product  Sales  Units
1  South       X    150     15
3  South       Y    250     25

示例5:使用 .apply() 自定义操作
# 对每个组应用自定义函数(如标准化)
def normalize(group):group['Norm_Sales'] = group['Sales'] / group['Sales'].sum()return groupresult = df.groupby('Region').apply(normalize)
print(result)
输出:
   Region Product  Sales  Units  Norm_Sales
0   North       X    100     10    0.333333
2   North       Y    200     20    0.666667
1   South       X    150     15    0.375000
3   South       Y    250     25    0.625000

五、注意事项
  • 分组键类型:支持字符串、整数、日期、分类变量等。
  • 性能优化:对于大型数据集,建议关闭 group_keyssort 提升效率。
  • 缺失值处理:默认不包括含 NaN 的分组键,可通过 dropna=False 改变行为。
  • as_index:若为 False,则分组键不会成为索引,适合输出表格化结果。

六、总结
方法用途
.agg()对每个分组执行聚合操作(如 sum、mean)
.transform()对每个分组执行变换操作,返回与原数据相同长度的结果
.filter()根据条件筛选符合条件的组
.apply()对每个分组应用任意函数,灵活性最强

groupby() 是数据分析中最核心的操作之一,结合聚合、变换、过滤等功能,能实现复杂的数据分析任务。

相关文章:

  • 《数据分析与可视化》(清华)ch-6 作业 三、绘图题
  • 前端面试每日三题 - Day 26
  • 如何用爬虫获得按关键字搜索淘宝商品
  • 【能力比对】K8S数据平台VS数据平台
  • 第2章 神经网络的数学基础
  • 【高级IO】多路转接之select
  • SQLark可以支持PostgreSQL了,有哪些新功能?
  • AI应用爆发或将进入临界点
  • 【HarmonyOS 5】鸿蒙发展历程
  • uv简单使用
  • Vue 3 和 Vue 2 有哪些主要区别
  • 使用OpenCV 和 Dlib 实现年龄性别预测
  • OpenCV 图形API(78)图像与通道拼接函数-----调整图像大小的函数resize()
  • python仓库库存管理系统-药房药品库存管理系统
  • 颠覆监测体验!WM102无线温湿度记录仪开启智能物联新时代
  • .NET 通过回调函数执行 Shellcode启动进程
  • 基于nacos实现动态线程池设计与实践:告别固定配置,拥抱弹性调度
  • 即开即用,封装 Flask 项目为 exe 文件实操步骤
  • Os 库报错指南 路径处理常见陷阱
  • 在 Sheel 中运行 Spark:开启高效数据处理之旅
  • 马上评|独生子女奖励不能“私了”,政府诚信是第一诚信
  • 港股5月迎开门红,恒生科指涨3%,欧股开盘全线上扬
  • 净海护渔,中国海警局直属第一局开展伏季休渔普法宣传活动
  • 南京106亿元成交19宗涉宅地块:建邺区地块楼面单价重回4.5万元
  • 工业富联一季度净利增长25%,云计算业务营收增长超50%
  • 4月人文社科联合书单|天文学家的椅子