Pandas数据分组分析实战教程:从分组运算到聚合函数,全面掌握分组技巧
发布时间: 2024-07-20 22:19:52 阅读量: 40 订阅数: 47
![Pandas数据分组分析实战教程:从分组运算到聚合函数,全面掌握分组技巧](https://img-blog.csdnimg.cn/20201225101602133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nsb255MQ==,size_16,color_FFFFFF,t_70)
# 1. Pandas数据分组基础
Pandas数据分组是将数据帧中的数据根据指定的分组键进行分组,从而对每个分组进行操作和分析。
### 分组操作:groupby()函数
groupby()函数是Pandas中用于分组操作的核心函数。其基本用法为:
```python
df.groupby(key)
```
其中,`key`可以是列名、列表或函数。分组后,数据帧将被拆分成多个分组对象,每个分组对象代表一个分组键下的数据。
# 2. 分组运算和聚合函数
### 2.1 分组运算:groupby()函数详解
#### 2.1.1 基本用法和参数介绍
`groupby()`函数是Pandas中用于分组运算的核心函数,其基本用法如下:
```python
df.groupby(by=column_name)
```
其中:
* `df`:需要进行分组运算的数据框
* `by`:分组依据的列名
例如,对`df`数据框按`column_name`列进行分组:
```python
df_grouped = df.groupby(by='column_name')
```
`groupby()`函数还支持多个列作为分组依据,此时需要使用列表或元组指定:
```python
df_grouped = df.groupby(by=['column_name1', 'column_name2'])
```
#### 2.1.2 分组后的数据操作
对数据框进行分组后,可以通过`groupby`对象进行各种数据操作,包括:
* **迭代分组:**使用`for`循环迭代分组对象,访问每个分组的数据:
```python
for group_name, group_data in df_grouped:
print(group_name)
print(group_data)
```
* **获取分组信息:**使用`groups`属性获取分组信息,返回一个字典,键为分组依据的值,值为分组后的数据索引:
```python
group_info = df_grouped.groups
```
* **过滤分组:**使用`filter`方法过滤分组,返回满足条件的分组数据:
```python
filtered_groups = df_grouped.filter(lambda x: x['column_name'].mean() > 10)
```
### 2.2 聚合函数:agg()函数详解
#### 2.2.1 常用聚合函数介绍
Pandas提供了丰富的聚合函数,用于对分组后的数据进行聚合操作,常用函数包括:
| 函数 | 描述 |
|---|---|
| `sum()` | 求和 |
| `mean()` | 求平均值 |
| `max()` | 求最大值 |
| `min()` | 求最小值 |
| `count()` | 计数 |
| `std()` | 求标准差 |
| `var()` | 求方差 |
例如,对`df_grouped`分组数据求每组的平均值:
```python
df_grouped['column_name'].mean()
```
#### 2.2.2 多个聚合函数同时使用
`agg()`函数支持同时使用多个聚合函数,返回一个包含多个聚合结果的数据框:
```python
df_grouped.agg({'column_name1': ['mean', 'max'], 'column_name2': ['sum', 'count']})
```
该代码将返回一个数据框,包含`column_name1`列的平均值和最大值,以及`column_name2`列的和和计数。
**代码块逻辑分析:**
```python
# 导入Pandas库
import pandas as pd
# 创建一个示例数据框
df = pd.DataFrame({
'column_name1': [1, 2, 3, 4, 5],
'column_name2': ['a', 'b', 'c', 'd', 'e']
})
# 对数据框按column_name1列进行分组
df_grouped = df.groupby(by='column_name1')
# 使用agg()函数对分组后的数据进行聚合操作
result = df_grouped.agg({'column_name1': ['mean', 'max'], 'column_name2': ['sum',
```
0
0