##### `pd.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)`
**功能简介:**
- 函数用于创建交叉表(crosstab),也称为列联表。交叉表用于汇总和分析两个或多个分类变量之间的关系。
**参数说明:**
- `index`:用作行索引的列名或列索引。
- `columns`:用作列索引的列名或列索引。
- `values`:要聚合的值,通常是一个数值列的列名或列索引。
- `rownames`:行索引的名称。
- `colnames`:列索引的名称。
- `aggfunc`:用于聚合的函数,默认为 `None`,可以是 `'sum'`、`'count'`、`'mean'` 等。
- `margins`:是否显示汇总行和列。
- `margins_name`:汇总行和列的名称。
- `dropna`:是否在计算之前删除包含缺失值的行或列。
- `normalize`:是否对结果进行标准化,以显示相对频率。
**返回值:**
- 返回一个新的交叉表(DataFrame)。
**用法示例:**
1. 创建交叉表:
```python
import pandas as pd
# 创建一个包含分类数据的 DataFrame
data = {'Name': ['Alice', 'Bob', 'Alice', 'Bob'],
'Subject': ['Math', 'Math', 'Science', 'Science'],
'Type': ['Midterm', 'Midterm', 'Final', 'Final'],
'Score': [90, 85, 88, 92]}
df = pd.DataFrame(data)
# 使用 crosstab 函数创建交叉表
cross_tab = pd.crosstab(index=df['Name'], columns=df['Subject'], values=df['Score'], aggfunc='mean')
print(cross_tab)
```
2. 创建包含汇总行和列的交叉表:
```python
import pandas as pd
# 创建一个更复杂的分类数据的 DataFrame
data = {'Name': ['Alice', 'Bob', 'Alice', 'Bob'],
'Subject': ['Math', 'Math', 'Science', 'Science'],
'Type': ['Midterm', 'Midterm', 'Final', 'Final'],
'Score': [90, 85, 88, 92]}
df = pd.DataFrame(data)
# 使用 crosstab 函数创建交叉表,包含汇总行和列
cross_tab = pd.crosstab(index=df['Name'], columns=[df['Subject'], df['Type']], values=df['Score'], aggfunc='mean', margins=True)
print(cross_tab)
```