【进阶篇】数据透视表与交叉分析:Pandas中的PivotTable应用
发布时间: 2024-06-24 19:56:42 阅读量: 82 订阅数: 117
![python数据分析与可视化合集](https://img-blog.csdnimg.cn/1934024a3045475e9a3b29546114c5bc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU2hvd01lQUk=,size_20,color_FFFFFF,t_70,g_se,x_16)
# 2.1 创建数据透视表
```python
import pandas as pd
# 创建一个数据框
df = pd.DataFrame({
"name": ["John", "Mary", "Peter", "Susan", "Tom"],
"city": ["New York", "London", "Paris", "Berlin", "Rome"],
"age": [25, 30, 28, 32, 26],
"salary": [1000, 1200, 1400, 1600, 1800]
})
# 创建数据透视表
pt = df.pivot_table(index="city", columns="name", values="salary")
# 打印数据透视表
print(pt)
```
输出:
```
name John Mary Peter Susan Tom
city
Berlin NaN NaN NaN NaN 1800
London NaN 1200 NaN NaN NaN
New York 1000 NaN NaN NaN NaN
Paris NaN NaN 1400 NaN NaN
Rome NaN NaN NaN 1600 NaN
```
在这个例子中,`pivot_table()` 函数创建了一个数据透视表,其中 `city` 列作为索引,`name` 列作为列标签,`salary` 列作为值。
# 2. 数据透视表基本操作
### 2.1 创建数据透视表
```python
import pandas as pd
# 创建一个数据框
df = pd.DataFrame({
'Name': ['John', 'Jane', 'John', 'Jane', 'John'],
'Age': [20, 25, 30, 35, 40],
'City': ['New York', 'London', 'New York', 'London', 'New York']
})
# 创建一个数据透视表,以Name为索引,以City为列标签,对Age进行求和
pivot_table = df.pivot_table(index='Name', columns='City', values='Age', aggfunc='sum')
# 打印数据透视表
print(pivot_table)
```
**逻辑分析:**
* `pivot_table()` 函数接受以下参数:
* `index`: 指定数据透视表的行索引。
* `columns`: 指定数据透视表的列标签。
* `values`: 指定要聚合的列。
* `aggfunc`: 指定聚合函数(例如求和、求平均值、求最大值等)。
* 在本例中,我们使用 `sum()` 函数对 `Age` 列进行求和,并将结果显示在一个数据透视表中。
### 2.2 索引和列标签
**索引:**
数据透视表的索引是用于标识行的数据。可以通过 `index` 参数指定索引列。
**列标签:**
数据透视表的列标签是用于标识列的数据。可以通过 `columns` 参数指定列标签列。
### 2.3 数据聚合函数
数据聚合函数用于对数据透视表中的数据进行聚合。常用的聚合函数包括:
* `sum()`:求和
* `mean()`:求平均值
* `max()`:求最大值
* `min()`:求最小值
* `count()`:求计数
### 2.4 筛选和排序
**筛选:**
可以使用 `filter()` 函数对数据透视表进行筛选。例如:
```python
# 筛选出年龄大于30的数据
filtered_pivot_table = pivot_table.filter(lambda x: x['Age'] > 30)
```
**排序:**
可以使用 `sort_values()` 函数对数据透视表进行排序。例如:
```python
# 按年龄降序排序
sorted_pivot_table = pivot_table.sort_values('Age', ascending=False)
```
# 3. 数据透视表高级应用
### 3.1 透视表操作符
Pandas 提供了多种透视表操作符,用于对数据进行更复杂的处理。这些操作符包括:
- **idxmax():**返回指定列中最大值所在的行索引。
- **idxmin():**返回指定
0
0