Pandas期末备考:常见问题解析

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. 数据合并与连接

合并操作(如 mergeconcat)是考试中的重头戏。

示例:合并 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)

关键细节

  • mergehow 参数有 innerouterleftright 四种类型。
  • concataxis=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. 总结

  • 常考点:切片、合并、分组、缺失值处理。
  • 冷门点:时间序列、性能优化、数据透视表的细节。
  • 建议:多写代码,熟悉输出结果,尤其是边界情况。

祝你考试顺利!如果有更多问题,随时复习这些示例代码。

相关推荐
SFLYQ20 分钟前
Go AICode 工具调研
后端
这里有鱼汤30 分钟前
Python模块化开发,从此告别乱糟糟的代码!
前端·后端·python
这里有鱼汤32 分钟前
高手也容易忽略的 Python 命名空间与作用域
前端·后端·python
捡田螺的小男孩33 分钟前
新来的技术总监,把DDD落地的那叫一个高级优雅!
java·后端
xiezhr1 小时前
程序员为什么总是加班?
前端·后端·程序员
猿java1 小时前
银行系统需要服务降级吗?
java·后端·面试
风象南1 小时前
SpringBoot实现单点登录(SSO)的4种方案
java·spring boot·后端
程序员一诺1 小时前
【Flask开发】嘿马文学web完整flask项目第3篇:2.用户认证,2.用户认证【附代码文档】
后端·python·flask·框架
慕容莞青9 小时前
MATLAB语言的进程管理
开发语言·后端·golang
陈明勇9 小时前
用 Go 语言轻松构建 MCP 客户端与服务器
后端·go·mcp