- Python Pandas 教程
- Python Pandas - 首页
- Python Pandas - 简介
- Python Pandas - 环境搭建
- Python Pandas - 基础
- Python Pandas - 数据结构介绍
- Python Pandas - 索引对象
- Python Pandas - 面板
- Python Pandas - 基本功能
- Python Pandas - 数据索引与选择
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - Series 对象切片
- Python Pandas - Series 对象的属性
- Python Pandas - Series 对象的算术运算
- Python Pandas - 将 Series 转换为其他对象
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 访问 DataFrame
- Python Pandas - DataFrame 对象切片
- Python Pandas - 修改 DataFrame
- Python Pandas - 从 DataFrame 中删除行
- Python Pandas - DataFrame 的算术运算
- Python Pandas - IO 工具
- Python Pandas - IO 工具
- Python Pandas - 处理 CSV 格式
- Python Pandas - 读取和写入 JSON 文件
- Python Pandas - 从 Excel 文件读取数据
- Python Pandas - 将数据写入 Excel 文件
- Python Pandas - 处理 HTML 数据
- Python Pandas - 剪贴板
- Python Pandas - 处理 HDF5 格式
- Python Pandas - 与 SQL 的比较
- Python Pandas - 数据处理
- Python Pandas - 排序
- Python Pandas - 重索引
- Python Pandas - 迭代
- Python Pandas - 连接
- Python Pandas - 统计函数
- Python Pandas - 描述性统计
- Python Pandas - 处理文本数据
- Python Pandas - 函数应用
- Python Pandas - 选项和自定义
- Python Pandas - 窗口函数
- Python Pandas - 聚合操作
- Python Pandas - 合并/连接
- Python Pandas - 多级索引
- Python Pandas - 多级索引基础
- Python Pandas - 使用多级索引进行索引
- Python Pandas - 使用多级索引进行高级重索引
- Python Pandas - 重命名多级索引标签
- Python Pandas - 对多级索引进行排序
- Python Pandas - 二元运算
- Python Pandas - 二元比较运算
- Python Pandas - 布尔索引
- Python Pandas - 布尔掩码
- Python Pandas - 数据重塑和透视表
- Python Pandas - 透视表
- Python Pandas - 堆叠和取消堆叠
- Python Pandas - 熔化
- Python Pandas - 计算虚拟变量
- Python Pandas - 分类数据
- Python Pandas - 分类数据
- Python Pandas - 分类数据的排序和排序
- Python Pandas - 分类数据的比较
- Python Pandas - 处理缺失数据
- Python Pandas - 缺失数据
- Python Pandas - 填充缺失数据
- Python Pandas - 缺失值的插值
- Python Pandas - 删除缺失数据
- Python Pandas - 对缺失数据进行计算
- Python Pandas - 处理重复数据
- Python Pandas - 重复数据
- Python Pandas - 计数和检索唯一元素
- Python Pandas - 重复标签
- Python Pandas - 分组和聚合
- Python Pandas - GroupBy
- Python Pandas - 时间序列数据
- Python Pandas - 日期功能
- Python Pandas - 时间增量
- Python Pandas - 稀疏数据结构
- Python Pandas - 稀疏数据
- Python Pandas - 可视化
- Python Pandas - 可视化
- Python Pandas - 其他概念
- Python Pandas - 注意事项和陷阱
- Python Pandas 有用资源
- Python Pandas - 快速指南
- Python Pandas - 有用资源
- Python Pandas - 讨论
Python Pandas - 聚合操作
数据聚合是数据分析中的一个关键步骤,尤其是在处理大型数据集时。在 Pandas 中,您可以使用 DataFrame.agg() 方法执行聚合操作。此方法非常灵活,可以执行各种操作来汇总和分析您的数据。Pandas 中的聚合操作可以应用于索引轴(默认)或列轴。
在本教程中,我们将讨论如何使用 DataFrame.agg() 方法执行各种聚合技术,包括如何应用多个聚合函数、为特定列自定义聚合以及同时处理行和列。
了解 DataFrame.agg() 方法
DataFrame.agg() 方法(aggregate 的别名)是一个强大的工具,允许您将一个或多个聚合函数应用于 DataFrame,无论是跨行还是跨列,从而提供数据的摘要。
语法
以下是语法:
DataFrame.agg(func=None, axis=0, *args, **kwargs)
其中,
func:此参数指定要应用的聚合函数。它接受单个函数或函数名(例如,np.sum、'mean')、函数或函数名的列表,或者将轴标签映射到函数的字典。
axis:指定应用聚合的轴。0 或 'index' 将函数应用于每一列(默认),而 1 或 'columns' 将函数应用于每一行。
*args:传递给聚合函数的位置参数。
**kwargs:传递给聚合函数的关键字参数。
agg() 方法的结果取决于输入,如果使用单个函数,则返回标量或Series,如果应用多个函数,则返回DataFrame。
在 DataFrame 行上应用聚合
您可以使用 agg 函数在行(索引轴)上聚合多个函数。此方法将指定的聚合函数应用于 DataFrame 中的每一列。
示例
让我们创建一个 DataFrame 并对其应用聚合函数sum和min。在本例中,sum 和 min 函数应用于每一列,提供数据的摘要。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg(['sum', 'min']) print("\nResults:\n",result)
其输出如下:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: A B C D sum 12.0 17 18.0 6.0 min 1.0 2 3.0 1.0
为每一列应用不同的函数
您还可以通过将字典传递给 agg 函数,为不同的列应用不同的聚合函数。字典中的每个键对应一列,值是要应用的聚合函数列表。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg({'A': ['sum', 'min'], 'B': ['min', 'max']}) print("\nResults:\n",result)
执行上述代码后,它会产生以下输出:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: A B sum 12.0 NaN min 1.0 2.0 max NaN 8.0
对单个列应用聚合
您可以将聚合函数应用于单个列,例如计算滚动总和。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10, 4), index = pd.date_range('1/1/2000', periods=10), columns = ['A', 'B', 'C', 'D']) print(df) r = df.rolling(window=3,min_periods=1) print(r['A'].aggregate(np.sum))
其输出如下:
A B C D 2000-01-01 1.088512 -0.650942 -2.547450 -0.566858 2000-01-02 1.879182 -1.038796 -3.215581 -0.299575 2000-01-03 1.303660 -2.003821 -3.155154 -2.479355 2000-01-04 1.884801 -0.141119 -0.862400 -0.483331 2000-01-05 1.194699 0.010551 0.297378 -1.216695 2000-01-06 1.925393 1.968551 -0.968183 1.284044 2000-01-07 0.565208 0.032738 -2.125934 0.482797 2000-01-08 0.564129 -0.759118 -2.454374 -0.325454 2000-01-09 2.048458 -1.820537 -0.535232 -1.212381 2000-01-10 2.065750 0.383357 1.541496 -3.201469 2000-01-01 1.088512 2000-01-02 1.879182 2000-01-03 1.303660 2000-01-04 1.884801 2000-01-05 1.194699 2000-01-06 1.925393 2000-01-07 0.565208 2000-01-08 0.564129 2000-01-09 2.048458 2000-01-10 2.065750 Freq: D, Name: A, dtype: float64
自定义结果
Pandas 允许您跨列聚合不同的函数并重命名结果 DataFrame 的索引。这可以通过将元组传递给agg() 函数来完成。
示例
以下示例使用自定义索引标签应用聚合。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg(x=('A', 'max'), y=('B', 'min'), z=('C', 'mean')) print("\nResults:\n",result)
其输出如下:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: A B C x 7.0 NaN NaN y NaN 2.0 NaN z NaN NaN 6.0
在列上应用聚合
除了在行上进行聚合外,您还可以通过将 axis 参数设置为列 (axis=1) 在列上进行聚合。当您想跨行应用聚合函数时,这很有用。
示例
此示例跨列为每一行应用mean()函数。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg("mean", axis="columns") print("\nResults:\n",result)
其输出如下:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: 2024-01-01 1.75 2024-01-02 5.00 2024-01-03 6.50 2024-01-04 2.50 Freq: D, dtype: float64