【进阶篇】使用Pandas的分组和聚合函数进行数据分组和汇总统计
发布时间: 2024-06-24 16:35:27 阅读量: 66 订阅数: 128
![【进阶篇】使用Pandas的分组和聚合函数进行数据分组和汇总统计](https://www.shanelynn.ie/wp-content/uploads/2019/10/pandas-python-group-by-named-aggregation-update.jpg)
# 1. Pandas数据分组与聚合函数概述**
Pandas数据分组和聚合函数是用于对数据进行分组、汇总和分析的强大工具。它们允许您根据数据中的特定列或列组合对数据进行分组,然后对每个组应用聚合函数来计算汇总统计信息或执行其他操作。
数据分组和聚合函数在数据分析和处理中非常有用,例如:
* 计算不同类别或组别的平均值、总和或最大值
* 识别数据中的模式和趋势
* 汇总和简化大型数据集
* 准备数据进行建模和机器学习
# 2. Pandas数据分组方法
### 2.1 groupby()方法
#### 2.1.1 groupby()方法的基本用法
`groupby()`方法是Pandas数据分组的基础方法,它根据指定的分组键对数据进行分组,返回一个GroupBy对象。GroupBy对象包含了分组后的数据,并提供了各种聚合和转换方法。
```python
import pandas as pd
df = pd.DataFrame({
"name": ["John", "Mary", "John", "Mary", "Bob"],
"age": [20, 25, 22, 28, 30],
"city": ["New York", "London", "New York", "London", "Paris"]
})
# 按"name"列分组
grouped = df.groupby("name")
```
执行上述代码后,`grouped`将是一个GroupBy对象,它包含了按"name"列分组后的数据。
#### 2.1.2 groupby()方法的常见参数
`groupby()`方法支持多种参数,用于控制分组行为:
- `by`: 指定分组键。可以是单个列名或列名的列表。
- `axis`: 指定分组的方向。0表示按行分组,1表示按列分组。
- `level`: 指定分组的层次结构。
- `sort`: 指定是否在分组前对数据进行排序。
- `group_keys`: 指定是否返回分组键。
- `as_index`: 指定是否将分组键设置为索引。
### 2.2 agg()方法
#### 2.2.1 agg()方法的基本用法
`agg()`方法是GroupBy对象上用于聚合数据的常用方法。它可以应用各种聚合函数对分组后的数据进行聚合,并返回一个聚合后的DataFrame。
```python
# 按"name"列分组并聚合年龄列
grouped.agg({"age": "mean"})
```
执行上述代码后,将返回一个DataFrame,其中包含按"name"列分组后的年龄列的平均值。
#### 2.2.2 agg()方法的常见聚合函数
`agg()`方法支持多种聚合函数,包括:
- `sum()`: 求和
- `mean()`: 求平均值
- `max()`: 求最大值
- `min()`: 求最小值
- `count()`: 计数
- `std()`: 求标准差
- `var()`: 求方差
# 3.1 数值聚合函数
Pandas提供了多种数值聚合函数,用于对分组数据进行汇总统计。这些函数可以应用于数值列,并返回一个标量值,表示该组中数据的聚合结果。
#### 3.1.1 sum()函数
`sum()`函数计算一组数据的总和。其语法如下:
```python
df.groupby('column_name')['numerical_column'].sum()
```
其中:
- `df` 是要分组的数据框
- `column_name` 是要分组的列名
- `numerical_column` 是要计算总和的数值列名
**示例:**
```python
import pandas as pd
# 创建一个数据框
df = pd.DataFrame({
'group': ['A', 'A', 'B', 'B', 'C'],
'value': [1, 2, 3, 4, 5]
})
# 按 'group' 列分组并计算 'value' 列的总和
result = df.groupby('group')['value'].sum()
print(result)
```
输出:
```
group
A 3
B 7
C 5
Name:
```
0
0