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. 总结

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

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

相关推荐
Tony Bai4 小时前
【Go开发者的数据库设计之道】05 落地篇:Go 语言四种数据访问方案深度对比
开发语言·数据库·后端·golang
eqwaak04 小时前
Flask实战指南:从基础到高阶的完整开发流程
开发语言·后端·python·学习·flask
笨蛋不要掉眼泪5 小时前
SpringBoot项目Excel成绩录入功能详解:从文件上传到数据入库的全流程解析
java·vue.js·spring boot·后端·spring·excel
追逐时光者7 小时前
一款专门为 WPF 打造的开源 Office 风格用户界面控件库
后端·.net
Lin_Aries_04218 小时前
容器化 Flask 应用程序
linux·后端·python·docker·容器·flask
yuriy.wang9 小时前
Spring IOC源码篇六 核心方法obtainFreshBeanFactory.parseCustomElement
java·后端·spring
Eoch7710 小时前
HashMap夺命十连问,你能撑到第几轮?
java·后端
每天进步一点_JL10 小时前
🔥 一个 synchronized 背后,JVM 到底做了什么?
后端
SamDeepThinking10 小时前
有了 AI IDE 之后,为什么还还要 CLI?
后端·ai编程·cursor
yinke小琪10 小时前
线程池七宗罪:你以为的优化其实是在埋雷
java·后端·面试