人工智能之数据分析 Pandas:第五章 文件处理 - 教程
2026-01-22 14:47 tlnshuju 阅读(0) 评论(0) 收藏 举报人工智能之数据分析 Pandas
第五章 文件处理
文章目录
- 人工智能之数据分析 Pandas
- 前言
- 一、CSV 文件处理(最常用)
- 1. 读取 CSV:`pd.read_csv()`
- 基本用法:
- 常用参数详解:
- 实战示例:
- 2. 写入 CSV:`df.to_csv()`
- 基本用法:
- 关键参数:
- 示例:
- 二、Excel 文件处理
- 1. 读取 Excel:`pd.read_excel()`
- 基本用法:
- 常用参数:
- 示例:
- 2. 写入 Excel:`df.to_excel()`
- 基本用法:
- 多工作表写入(使用 `ExcelWriter`):
- 关键参数:
- 示例:追加到现有 Excel 模板
- 三、JSON 文件处理
- 1. 读取 JSON:`pd.read_json()`
- 支持两种主要结构:
- 基本用法:
- 常用参数:
- 示例:
- 2. 写入 JSON:`df.to_json()`
- 基本用法:
- 关键参数:
- 示例:
- ️ 四、通用技巧与避坑指南
- 1. 编码问题(尤其中文)
- 2. 大文件处理
- 3. 数据类型保持
- 4. 时间解析优化
- ✅ 五、总结对比表
- 后续
- 资料关注
前言
Pandas 提供了强大而灵活的文件 I/O 功能,能够轻松读写多种格式的数据文件。本文将对 CSV、Excel、JSON 三种最常用的格式进行详细、具体、实战导向的介绍,包括:
文件读取(
read_*)文件写入(
to_*)常见参数详解
编码、缺失值、数据类型处理
性能与错误排查技巧
一、CSV 文件处理(最常用)
CSV(Comma-Separated Values)是数据分析中最通用的文本格式。
1. 读取 CSV:pd.read_csv()
基本用法:
import pandas as pd
df = pd.read_csv('data.csv')
常用参数详解:
| 参数 | 说明 | 示例 |
|---|---|---|
filepath_or_buffer | 文件路径或 URL | 'sales.csv', 'https://example.com/data.csv' |
sep / delimiter | 分隔符(默认 ,) | sep='\t'(TSV) |
header | 指定列名行(默认 0) | header=None(无列名),header=1(第二行为列名) |
names | 自定义列名 | names=['ID', 'Name', 'Score'] |
index_col | 指定某列作为行索引 | index_col='ID' 或 index_col=0 |
usecols | 只读取部分列 | usecols=['A', 'B'] 或 usecols=[0, 2] |
dtype | 指定列数据类型 | dtype={'ID': 'str', 'Age': 'int8'} |
parse_dates | 解析日期列 | parse_dates=['Date'] |
encoding | 文件编码 | encoding='utf-8', encoding='gbk'(中文常见) |
na_values | 自定义缺失值标识 | na_values=['N/A', 'NULL', ''] |
skiprows | 跳过开头若干行 | skiprows=2 |
nrows | 仅读前 N 行(调试用) | nrows=1000 |
chunksize | 分块读取(大文件) | chunksize=10000 → 返回 TextFileReader |
实战示例:
# 读取含中文的 CSV(常见于 Windows 导出)
df = pd.read_csv('员工表.csv', encoding='gbk')
# 自定义缺失值 + 指定类型
df = pd.read_csv(
'data.csv',
na_values=['-', 'N/A'],
dtype={'user_id': 'str', 'score': 'float32'},
parse_dates=['login_time']
)
提示:若遇
UnicodeDecodeError,尝试encoding='latin1'或chardet库检测编码。
2. 写入 CSV:df.to_csv()
基本用法:
df.to_csv('output.csv', index=False) # 通常不保存行索引
关键参数:
| 参数 | 说明 |
|---|---|
path_or_buf | 输出路径 |
sep | 分隔符(默认 ,) |
index | 是否写入行索引(默认 True,建议设为 False) |
encoding | 编码(如 encoding='utf-8-sig' 支持 Excel 正确显示中文) |
na_rep | 缺失值表示(默认空,可设为 'NULL') |
date_format | 日期格式(如 '%Y-%m-%d') |
float_format | 浮点数格式(如 '%.2f') |
示例:
df.to_csv('result.csv',
index=False,
encoding='utf-8-sig', # 避免 Excel 打开中文乱码
na_rep='N/A',
date_format='%Y/%m/%d')
二、Excel 文件处理
Excel(.xlsx, .xls)适合小规模结构化数据交互,但不适合大数据(性能差、体积大)。
⚠️ 需安装额外依赖:
pip install openpyxl # .xlsx 支持(推荐) pip install xlrd # .xls 支持(旧版)
1. 读取 Excel:pd.read_excel()
基本用法:
df = pd.read_excel('report.xlsx') # 默认读第一个 sheet
常用参数:
| 参数 | 说明 |
|---|---|
io | 文件路径 |
sheet_name | 工作表名或索引 |
header | 列名行(同 CSV) |
usecols | 读取列范围 |
skiprows | 跳过行数 |
nrows | 读取行数 |
dtype | 指定类型 |
engine | 引擎(openpyxl / xlrd) |
示例:
# 读取多个 sheet
sheets = pd.read_excel('data.xlsx', sheet_name=['用户', '订单'])
# 读取特定区域
df = pd.read_excel('file.xlsx', sheet_name='Data', usecols='B:D', skiprows=2, nrows=100)
✅ 技巧:若 Excel 中有合并单元格,Pandas 会将其上方/左侧值填充,可能需后处理。
2. 写入 Excel:df.to_excel()
基本用法:
df.to_excel('output.xlsx', index=False)
多工作表写入(使用 ExcelWriter):
with pd.ExcelWriter('report.xlsx', engine='openpyxl') as writer:
df1.to_excel(writer, sheet_name='用户', index=False)
df2.to_excel(writer, sheet_name='订单', index=False)
df_summary.to_excel(writer, sheet_name='汇总', index=False)
关键参数:
| 参数 | 说明 |
|---|---|
sheet_name | 工作表名 |
index | 是否写入索引 |
startrow / startcol | 写入起始位置(用于追加到已有模板) |
freeze_panes | 冻结窗格(如 (1, 0) 冻结首行) |
示例:追加到现有 Excel 模板
with pd.ExcelWriter('template.xlsx', mode='a', if_sheet_exists='replace') as writer:
df.to_excel(writer, sheet_name='Data', startrow=2, header=False, index=False)
⚠️ 注意:
mode='a'表示追加,if_sheet_exists='replace'覆盖同名 sheet(需 pandas ≥ 1.4.0)
三、JSON 文件处理
JSON(JavaScript Object Notation)常用于 API 数据交换和 Web 应用。
1. 读取 JSON:pd.read_json()
支持两种主要结构:
- 记录列表(Records):
[{"col1": a, "col2": b}, ...]→ 推荐 - 列字典(Columns):
{"col1": [a, ...], "col2": [b, ...]}
基本用法:
df = pd.read_json('data.json')
常用参数:
| 参数 | 说明 |
|---|---|
path_or_buf | 文件路径或 JSON 字符串 |
orient | JSON 结构方向 |
dtype | 类型推断控制 |
encoding | 编码(如 'utf-8') |
lines | 每行一个 JSON 对象(NDJSON 格式) |
示例:
# 读取每行一个 JSON(日志常见)
df = pd.read_json('logs.jsonl', lines=True)
# 指定 orient(若自动推断失败)
df = pd.read_json('data.json', orient='records')
如何判断
orient?
- 若 JSON 是 对象数组 →
'records'- 若 JSON 是 列名映射到值数组 →
'columns'
2. 写入 JSON:df.to_json()
基本用法:
df.to_json('output.json', orient='records', indent=2)
关键参数:
| 参数 | 说明 |
|---|---|
orient | 输出格式(推荐 'records') |
indent | 缩进(美化输出) |
date_format | 日期格式('iso' / 'epoch') |
force_ascii | 是否转义非 ASCII 字符(中文设为 False) |
lines | 每行一个 JSON(用于流式处理) |
示例:
# 输出带缩进、支持中文的 JSON
df.to_json('result.json',
orient='records',
indent=2,
force_ascii=False,
date_format='iso')
️ 四、通用技巧与避坑指南
1. 编码问题(尤其中文)
- CSV/JSON:优先用
utf-8 - Windows Excel 导出 CSV:常用
gbk或gb2312 - 写入 CSV 给 Excel 用:用
utf-8-sig(带 BOM)
2. 大文件处理
- CSV:用
chunksize分块for chunk in pd.read_csv('huge.csv', chunksize=10000): process(chunk) - Excel:避免使用,改用 CSV 或数据库
- JSON:用
lines=True流式读取
3. 数据类型保持
- 读取时用
dtype明确指定(避免自动转 object) - 整数含缺失 → 用
'Int64'(可空整型)pd.read_csv(..., dtype={'user_id': 'Int64'})
4. 时间解析优化
- 使用
parse_dates而非后续pd.to_datetime - 指定
date_parser(pandas ≥ 2.0 已弃用,改用date_format)
✅ 五、总结对比表
| 格式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| CSV | 轻量、通用、高效 | 不支持多表、无格式 | 数据交换、中间存储 |
| Excel | 人类友好、支持多表/公式 | 体积大、性能差、依赖引擎 | 小数据交付、报表 |
| JSON | 结构灵活、Web 友好 | 体积大、无标准 schema | API、日志、嵌套数据 |
最佳实践建议:
- 日常分析用 CSV
- 交付业务用 Excel
- 接收 API 数据用 JSON
- 超大数据考虑 Parquet/HDF5(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》
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1200545.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!