人工智能之数据分析 Pandas
第十章 知识总结
文章目录
- [人工智能之数据分析 Pandas](#人工智能之数据分析 Pandas)
- 前言
- [🧱 一、核心数据结构](#🧱 一、核心数据结构)
- [📥 二、数据读写(I/O)](#📥 二、数据读写(I/O))
- [🔍 三、数据查看与基本信息](#🔍 三、数据查看与基本信息)
- [🎯 四、数据选择与索引](#🎯 四、数据选择与索引)
- [🧹 五、数据清洗(Data Cleaning)](#🧹 五、数据清洗(Data Cleaning))
- [🔄 六、数据变换与应用](#🔄 六、数据变换与应用)
- [📊 七、分组聚合(GroupBy)](#📊 七、分组聚合(GroupBy))
- [🔗 八、数据合并与重塑](#🔗 八、数据合并与重塑)
- [📈 九、时间序列处理](#📈 九、时间序列处理)
- [📉 十、相关性与统计分析](#📉 十、相关性与统计分析)
- [🖼️ 十一、数据可视化(基础)](#🖼️ 十一、数据可视化(基础))
- [⚡ 十二、性能优化技巧](#⚡ 十二、性能优化技巧)
- [🧩 十三、高频函数速查表](#🧩 十三、高频函数速查表)
- [✅ 十四、最佳实践总结](#✅ 十四、最佳实践总结)
- [📚 学习路径建议](#📚 学习路径建议)
- 后续
- 资料关注
前言
本文是对Pandas 核心知识点的系统性总结 ,涵盖从基础到进阶的关键概念、常用操作和最佳实践,适合用于快速复习、面试准备或日常开发参考。
🧱 一、核心数据结构
| 结构 | 说明 | 特点 |
|---|---|---|
Series |
一维带标签数组 | 类似带索引的 NumPy 数组,单列数据 |
DataFrame |
二维表格型结构 | 行(index)+ 列(columns),最常用 |
✅ 所有操作围绕这两个对象展开。
📥 二、数据读写(I/O)
| 格式 | 读取 | 写入 |
|---|---|---|
| CSV | pd.read_csv() |
df.to_csv() |
| Excel | pd.read_excel() |
df.to_excel() |
| JSON | pd.read_json() |
df.to_json() |
| SQL | pd.read_sql() |
df.to_sql() |
| Parquet | pd.read_parquet() |
df.to_parquet() |
💡 关键参数 :
encoding,dtype,parse_dates,usecols,index_col
🔍 三、数据查看与基本信息
python
df.head() / .tail() # 查看前/后几行
df.shape # (行数, 列数)
df.info() # 列名、非空数、类型、内存
df.describe() # 数值列统计摘要
df.dtypes # 每列数据类型
df.columns / df.index # 列名与行索引
🎯 四、数据选择与索引
| 方法 | 说明 | 示例 |
|---|---|---|
df['col'] |
选单列(返回 Series) | df['姓名'] |
df[['col1', 'col2']] |
选多列(DataFrame) | 注意双括号 |
.loc[row, col] |
标签索引(含末端) | df.loc[0:2, 'A':'C'] |
.iloc[row, col] |
位置索引(不含末端) | df.iloc[0:3, 0:2] |
| 布尔索引 | 条件筛选 | df[df['age'] > 30] |
.query() |
字符串条件查询 | df.query('age > 30 & salary < 10000') |
⚠️ 避坑 :避免链式赋值 → 用
.loc[condition, 'col'] = value
🧹 五、数据清洗(Data Cleaning)
| 问题 | 解决方法 |
|---|---|
| 缺失值 | isnull(), dropna(), fillna(), interpolate() |
| 重复值 | duplicated(), drop_duplicates() |
| 异常值 | IQR、3σ、业务规则过滤 |
| 类型错误 | astype(), pd.to_numeric(), pd.to_datetime() |
| 格式混乱 | .str.strip(), .str.lower(), 正则替换 |
| 列名不规范 | rename(), columns = ... |
✅ 清洗流程:概览 → 缺失 → 重复 → 异常 → 类型 → 标准化
🔄 六、数据变换与应用
| 操作 | 方法 |
|---|---|
| 列运算 | df['new'] = df['A'] * 2 |
| 条件赋值 | np.where(cond, x, y) 或 np.select() |
| 分箱离散化 | pd.cut(), pd.qcut() |
| 映射替换 | map(), replace() |
| 自定义函数 | apply()(逐行/列), applymap()(逐元素,已弃用) |
| 链式新增列 | assign()(推荐) |
| 分组标准化 | groupby().transform() |
📊 七、分组聚合(GroupBy)
python
# 基础聚合
df.groupby('部门')['工资'].mean()
# 多列多函数
df.groupby('部门').agg({
'工资': ['mean', 'max'],
'姓名': 'count'
})
# 命名聚合(pandas ≥ 0.25)
df.groupby('部门', as_index=False).agg(
平均工资=('工资', 'mean'),
人数=('姓名', 'size')
)
🔑 GroupBy 三大操作:Split → Apply → Combine
🔗 八、数据合并与重塑
| 操作 | 函数 | 说明 |
|---|---|---|
| 上下拼接 | pd.concat([df1, df2]) |
axis=0 |
| 左右拼接 | pd.concat([df1, df2], axis=1) |
|
| SQL 式连接 | pd.merge(df1, df2, on='key', how='left') |
支持 inner/left/right/outer |
| 宽变长 | df.melt() |
逆透视 |
| 长变宽 | df.pivot() / pd.pivot_table() |
透视表 |
📈 九、时间序列处理
python
# 转换为 datetime
df['date'] = pd.to_datetime(df['date'])
# 提取时间属性
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['weekday'] = df['date'].dt.dayofweek
# 重采样(Resample)
df.set_index('date').resample('M').sum() # 月度汇总
✅ 时间序列是 Pandas 的强项!
📉 十、相关性与统计分析
python
# 相关性矩阵
df.corr(method='pearson')
# 描述性统计
df.mean(), df.std(), df.quantile(0.75)
# 交叉表
pd.crosstab(df['性别'], df['是否购买'])
🖼️ 十一、数据可视化(基础)
python
df.plot(kind='line') # 折线图
df.plot(kind='bar') # 柱状图
df.plot(kind='hist') # 直方图
df.plot(kind='box') # 箱线图
df.plot.scatter(x='A', y='B') # 散点图
💡 快速 EDA 用 Pandas,精美图表用 Seaborn/Plotly
⚡ 十二、性能优化技巧
| 技巧 | 说明 |
|---|---|
| 使用合适 dtype | category, Int8, float32 节省内存 |
| 向量化操作 | 避免 for 循环,用 +, np.where 等 |
| 避免链式赋值 | 用 .loc 安全赋值 |
| 分块读取大文件 | read_csv(..., chunksize=10000) |
使用 eval/query |
对复杂表达式加速 |
| 删除无用列 | df.drop() 早释放内存 |
| 考虑替代库 | Dask / Modin(并行),Polars(更快) |
🧩 十三、高频函数速查表
| 类别 | 核心函数 |
|---|---|
| 创建 | DataFrame(), read_csv() |
| 查看 | head(), info(), describe() |
| 筛选 | .loc, .iloc, query(), isin() |
| 排序 | sort_values(), sort_index() |
| 缺失值 | isnull(), fillna(), dropna() |
| 去重 | drop_duplicates(), value_counts() |
| 聚合 | groupby().agg(), pivot_table() |
| 合并 | concat(), merge() |
| 字符串 | .str.contains(), .str.split() |
| 时间 | to_datetime(), .dt.year |
✅ 十四、最佳实践总结
- 优先向量化,避免循环
- 明确数据类型,节省内存
- 清洗先行,质量第一
- 用
.loc赋值,避免警告 - 大文件分块处理
- 链式编程提升可读性 (
df.pipe().assign().query()) - 可视化辅助理解数据
📚 学习路径建议
python
基础 → 数据读写 → 索引选择 → 清洗 → 聚合 → 合并 → 时间序列 → 可视化 → 性能优化
💡 记住 :
Pandas 不是"会用就行",而是"用对才高效" 。掌握上述知识点,你已具备中级以上 Pandas 能力,可应对绝大多数数据分析任务!
后续
python过渡项目部分代码已经上传至gitee,后续会逐步更新。
资料关注
公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning
《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》