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

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

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

相关推荐
落尘29813 分钟前
Spring MVC——传递参数的方式
后端
ITCharge28 分钟前
Docker 万字教程:从入门到掌握
后端·docker·容器
落尘2981 小时前
Bean 的作用域和生命周期
后端
是店小二呀1 小时前
处理Linux下磁盘空间不足问题的实用指南
后端
落尘2981 小时前
如何通过 JWT 来解决登录认证问题
后端
是店小二呀1 小时前
处理Linux下内存泄漏问题的诊断与解决方法
后端
倚栏听风雨1 小时前
IDEA 插件开发 对文件夹下的类进行 语法检查
后端
郝同学的测开笔记1 小时前
云原生探索系列(十七):Go 语言sync.Cond
后端·云原生·go
uhakadotcom1 小时前
持续写作的“农耕思维”:如何像农民一样播种,收获稳定成长与收入
后端·面试·github
Java中文社群1 小时前
国内首个「混合推理模型」Qwen3深夜开源,盘点它的N种对接方式!
java·人工智能·后端