Pandas 期末考试备考指南
准备 Python Pandas 期末考试可能会让人感到压力山大,尤其是当你不确定老师会考查哪些冷门知识点,还是专注于常见内容时。这篇指南将为你提供核心概念 、代码示例 以及边角知识点,帮助你全面备考,轻松应对考试。让我们开始吧!
1. Pandas 基础:Series 和 DataFrame
Pandas 的核心是 Series (一维)和 DataFrame(二维)。你必须熟练掌握它们的创建和操作。
示例:创建 Series 和 DataFrame
python
import pandas as pd
import numpy as np
# 从列表创建 Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)
# 从字典创建 DataFrame
data = {'姓名': ['张三', '李四', '王五'], '年龄': [25, 30, 35], '分数': [85.5, 90.0, 88.5]}
df = pd.DataFrame(data)
print(df)
关键细节:
np.nan
表示缺失值,而不是None
(不过 Pandas 会自动将None
转换为NaN
)。- Series 的索引是不可变的,但值是可变的。
2. 索引和切片
切片是 Pandas 中非常重要的操作,考试中可能会考查切片区间的细节,比如它是闭区间 还是开区间。
示例:切片操作
python
# Series 切片
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
print(s['b':'d']) # 输出 20, 30, 40
# DataFrame 切片
print(df[1:3]) # 行切片,输出第 1 和第 2 行
关键细节:
- Series 标签切片 (如
s['b':'d']
)是闭区间,包含起点和终点。 - DataFrame 整数切片 (如
df[1:3]
)是半开区间,包含起点但不包含终点。 - 使用
.loc
(标签索引)和.iloc
(位置索引)时,.loc
是闭区间,.iloc
是半开区间。
3. 数据清洗
数据清洗是 Pandas 的核心功能,常考点包括处理缺失值和重复值。
示例:处理缺失值
python
df_with_nan = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, 5, np.nan]})
print(df_with_nan)
# 填充缺失值
df_filled = df_with_nan.fillna(0)
print(df_filled)
# 删除含缺失值的行
df_dropped = df_with_nan.dropna()
print(df_dropped)
冷门知识点:
fillna(method='ffill')
会用前一个值填充,method='bfill'
用后一个值填充。dropna(how='all')
只删除全为 NaN 的行,而how='any'
删除任意含 NaN 的行。
4. 数据合并与连接
合并操作(如 merge
和 concat
)是考试中的重头戏。
示例:合并 DataFrame
python
df1 = pd.DataFrame({'ID': [1, 2, 3], '姓名': ['张三', '李四', '王五']})
df2 = pd.DataFrame({'ID': [2, 3, 4], '分数': [90, 85, 88]})
# 内连接
merged = pd.merge(df1, df2, on='ID', how='inner')
print(merged)
# 纵向拼接
concatenated = pd.concat([df1, df2], axis=0, ignore_index=True)
print(concatenated)
关键细节:
merge
的how
参数有inner
、outer
、left
、right
四种类型。concat
的axis=0
是纵向拼接,axis=1
是横向拼接。
5. 分组与聚合
分组操作(groupby
)和聚合函数是数据分析的核心。
示例:分组计算
python
df = pd.DataFrame({'班级': ['A', 'A', 'B', 'B'], '分数': [85, 90, 88, 92]})
grouped = df.groupby('班级').agg({'分数': ['mean', 'max']})
print(grouped)
冷门知识点:
agg
可以接受多个函数,如['mean', 'sum', 'count']
。groupby
后可以用.apply()
自定义函数,但返回值必须与分组结构兼容。
6. 数据透视表
数据透视表(pivot_table
)是考试中可能出现的复杂操作。
示例:创建数据透视表
python
df = pd.DataFrame({'班级': ['A', 'A', 'B', 'B'], '性别': ['男', '女', '男', '女'], '分数': [85, 90, 88, 92]})
pivot = pd.pivot_table(df, values='分数', index='班级', columns='性别', aggfunc='mean')
print(pivot)
关键细节:
pivot_table
默认使用mean
作为聚合函数,可通过aggfunc
修改。- 如果数据有重复项,
pivot
会报错,而pivot_table
会自动聚合。
7. 时间序列
时间序列可能是冷门考点,但非常实用。
示例:处理时间数据
python
dates = pd.date_range('2025-01-01', periods=5, freq='D')
df = pd.DataFrame({'值': [10, 20, 30, 40, 50]}, index=dates)
print(df)
# 按月重采样
monthly = df.resample('M').mean()
print(monthly)
冷门知识点:
freq='D'
表示按天,M
表示按月,W
表示按周。asfreq()
和resample()
的区别:前者只取样,后者可以聚合。
8. 性能优化
老师可能会问如何处理大数据集。
示例:优化操作
python
# 避免循环,使用向量化操作
df['分数加倍'] = df['分数'] * 2
# 使用 category 类型减少内存
df['班级'] = df['班级'].astype('category')
关键细节:
apply()
比循环快,但仍不如向量化操作。category
类型适合低基数(重复值多)的列。
9. 常见问题与调试
考试可能涉及代码调试或解释输出。
示例:常见错误
python
# KeyError
# print(df['不存在的列']) # 报错
# 修复:检查列名
print(df.columns)
冷门知识点:
df.loc[]
如果标签不存在会报错,而df.get()
返回 None。SettingWithCopyWarning
:使用.loc
赋值避免警告。
10. 总结
- 常考点:切片、合并、分组、缺失值处理。
- 冷门点:时间序列、性能优化、数据透视表的细节。
- 建议:多写代码,熟悉输出结果,尤其是边界情况。
祝你考试顺利!如果有更多问题,随时复习这些示例代码。