pandas当中的交叉表出十道代码题
时间: 2024-09-19 11:17:28 浏览: 50
当然可以,以下是10道关于pandas交叉表的代码题目,供你参考练习:
**第1题:**
给定一个DataFrame `df`,有两列 'Category1' 和 'Category2',创建一个简单的交叉表。
```python
import pandas as pd
data = {
'Category1': ['A', 'B', 'A', 'C', 'B', 'A'],
'Category2': ['X', 'Y', 'X', 'X', 'Y', 'Z']
}
df = pd.DataFrame(data)
# 你的代码
cross_tab_1 = pd.crosstab(df['Category1'], df['Category2'])
```
**第2题:**
在一个包含 'ID', 'Category', 'Score' 的 DataFrame 上,按 'Category' 和 'Score' 列创建交叉表,并求每个分数段的平均分。
```python
df = pd.DataFrame({
'ID': [1, 2, 3, 4, 5],
'Category': ['A', 'A', 'B', 'B', 'A'],
'Score': [80, 90, 75, 85, 95]
})
# 你的代码
score_groups = pd.cut(df['Score'], bins=[0, 75, 85, 95, float('inf')]) # 分段
cross_tab_2 = pd.crosstab(df['Category'], score_groups).mean()
```
**第3题:**
创建一个交叉表,显示 'Category1' 中所有可能的组合,即使在原始数据中不存在。
```python
df = pd.DataFrame({
'Category1': ['A', 'B', 'C'],
'Category2': ['X', 'Y', 'Z']
})
# 你的代码
cross_tab_3 = pd.crosstab(df['Category1'], df['Category2'], dropna=False)
```
**第4题:**
为交叉表的行和列添加名为 'Group1' 和 'Group2' 的标签。
```python
df = pd.DataFrame({
'Category1': ['A', 'B', 'A', 'B', 'A'],
'Category2': ['X', 'Y', 'X', 'Y', 'Z']
})
# 你的代码
labels = {'Category1': ['Group1', 'Group2'], 'Category2': ['Group3', 'Group4']}
cross_tab_4 = pd.crosstab(df['Category1'], df['Category2'], rownames=labels['Category1'], colnames=labels['Category2'])
```
**第5题:**
创建一个交叉表,并对 'Category1' 进行降序排序。
```python
df = pd.DataFrame({
'Category1': ['D', 'A', 'C', 'B'],
'Category2': ['Z', 'X', 'Y', 'W']
})
# 你的代码
cross_tab_5 = pd.crosstab(df['Category1'].sort_values(ascending=False), df['Category2'])
```
**第6题:**
用 DataFrame `df`,创建一个多级索引交叉表,其中一级索引是 'Category1',二级索引是 'Category2'。
```python
df = pd.DataFrame({
'Category1': ['A', 'B', 'A', 'B'],
'Category2': ['X', 'Y', 'X', 'Y'],
'Value': [1, 2, 3, 4]
})
# 你的代码
cross_tab_6 = pd.crosstab(df.set_index(['Category1', 'Category2']), level=['Category1', 'Category2'])
```
**第7题:**
在交叉表中,如果遇到缺失值,用 'Missing' 来替换。
```python
df = pd.DataFrame({
'Category1': ['A', 'B', np.nan, 'A'],
'Category2': ['X', np.nan, 'Y', 'Z']
})
# 你的代码
cross_tab_7 = pd.crosstab(df['Category1'], df['Category2']).fillna(value='Missing')
```
**第8题:**
创建交叉表并将其转换为HTML格式以便于展示。
```python
df = pd.DataFrame({
'Category1': ['A', 'B', 'C', 'A'],
'Category2': ['X', 'Y', 'Z', 'Y']
})
# 你的代码
html_cross_tab = cross_tab_8.to_html()
```
**第9题:**
对比一个简单交叉表和一个基于 'Score' 列的数据透视表。
```python
df = pd.DataFrame({
'ID': [1, 2, 3, 4, 5],
'Category': ['A', 'A', 'B', 'B', 'A'],
'Score': [80, 90, 75, 85, 95]
})
# 你的代码
cross_tab_pivot = df.pivot_table(index='Category', values='Score')
# 比较两个表格
cross_tab_vs_pivot(cross_tab_1, cross_tab_pivot)
```
**第10题:**
将交叉表的值标准化到[0, 1]范围。
```python
df = pd.DataFrame({
'Category1': ['A', 'B', 'A', 'B', 'A'],
'Category2': ['X', 'Y', 'X', 'Y', 'Z']
})
# 你的代码
normalized_cross_tab = (cross_tab_1 - cross_tab_1.min()) / (cross_tab_1.max() - cross_tab_1.min())
```
完成以上题目后,你可以通过运行代码、观察结果和理解背后的原理来提升对pandas交叉表的理解。如果有任何疑问,随时提问哦!
阅读全文