人工智能之数据分析 Pandas:第五章 文件处理

人工智能之数据分析 Pandas

第五章 文件处理


文章目录

  • [人工智能之数据分析 Pandas](#人工智能之数据分析 Pandas)
  • 前言
  • [📁 一、CSV 文件处理(最常用)](#📁 一、CSV 文件处理(最常用))
  • [📊 二、Excel 文件处理](#📊 二、Excel 文件处理)
    • [1. 读取 Excel:`pd.read_excel()`](#1. 读取 Excel:pd.read_excel())
    • [2. 写入 Excel:`df.to_excel()`](#2. 写入 Excel:df.to_excel())
      • 基本用法:
      • [多工作表写入(使用 `ExcelWriter`):](#多工作表写入(使用 ExcelWriter):)
      • 关键参数:
      • [示例:追加到现有 Excel 模板](#示例:追加到现有 Excel 模板)
  • [🌐 三、JSON 文件处理](#🌐 三、JSON 文件处理)
  • [🛠️ 四、通用技巧与避坑指南](#🛠️ 四、通用技巧与避坑指南)
    • [1. 编码问题(尤其中文)](#1. 编码问题(尤其中文))
    • [2. 大文件处理](#2. 大文件处理)
    • [3. 数据类型保持](#3. 数据类型保持)
    • [4. 时间解析优化](#4. 时间解析优化)
  • [✅ 五、总结对比表](#✅ 五、总结对比表)
  • 后续
  • 资料关注

前言

Pandas 提供了强大而灵活的文件 I/O 功能 ,能够轻松读写多种格式的数据文件。本文将对 CSV、Excel、JSON 三种最常用的格式进行详细、具体、实战导向的介绍,包括:

  • 文件读取(read_*

  • 文件写入(to_*

  • 常见参数详解

  • 编码、缺失值、数据类型处理

  • 性能与错误排查技巧


📁 一、CSV 文件处理(最常用)

CSV(Comma-Separated Values)是数据分析中最通用的文本格式。

1. 读取 CSV:pd.read_csv()

基本用法:

python 复制代码
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

实战示例:

python 复制代码
# 读取含中文的 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()

基本用法:

python 复制代码
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'

示例:

python 复制代码
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)适合小规模结构化数据交互,但不适合大数据(性能差、体积大)。

⚠️ 需安装额外依赖:

bash 复制代码
pip install openpyxl    # .xlsx 支持(推荐)
pip install xlrd        # .xls 支持(旧版)

1. 读取 Excel:pd.read_excel()

基本用法:

python 复制代码
df = pd.read_excel('report.xlsx')  # 默认读第一个 sheet

常用参数:

参数 说明
io 文件路径
sheet_name 工作表名或索引
header 列名行(同 CSV)
usecols 读取列范围
skiprows 跳过行数
nrows 读取行数
dtype 指定类型
engine 引擎(openpyxl / xlrd

示例:

python 复制代码
# 读取多个 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()

基本用法:

python 复制代码
df.to_excel('output.xlsx', index=False)

多工作表写入(使用 ExcelWriter):

python 复制代码
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 模板

python 复制代码
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, ...]}

基本用法:

python 复制代码
df = pd.read_json('data.json')

常用参数:

参数 说明
path_or_buf 文件路径或 JSON 字符串
orient JSON 结构方向
dtype 类型推断控制
encoding 编码(如 'utf-8'
lines 每行一个 JSON 对象(NDJSON 格式)

示例:

python 复制代码
# 读取每行一个 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()

基本用法:

python 复制代码
df.to_json('output.json', orient='records', indent=2)

关键参数:

参数 说明
orient 输出格式(推荐 'records'
indent 缩进(美化输出)
date_format 日期格式('iso' / 'epoch'
force_ascii 是否转义非 ASCII 字符(中文设为 False
lines 每行一个 JSON(用于流式处理)

示例:

python 复制代码
# 输出带缩进、支持中文的 JSON
df.to_json('result.json', 
           orient='records',
           indent=2,
           force_ascii=False,
           date_format='iso')

🛠️ 四、通用技巧与避坑指南

1. 编码问题(尤其中文)

  • CSV/JSON :优先用 utf-8
  • Windows Excel 导出 CSV :常用 gbkgb2312
  • 写入 CSV 给 Excel 用 :用 utf-8-sig(带 BOM)

2. 大文件处理

  • CSV :用 chunksize 分块

    python 复制代码
    for chunk in pd.read_csv('huge.csv', chunksize=10000):
        process(chunk)
  • Excel:避免使用,改用 CSV 或数据库

  • JSON :用 lines=True 流式读取

3. 数据类型保持

  • 读取时用 dtype 明确指定(避免自动转 object)

  • 整数含缺失 → 用 'Int64'(可空整型)

    python 复制代码
    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》

相关推荐
weixin_437497771 小时前
读书笔记:Context Engineering 2.0 (上)
人工智能·nlp
喝拿铁写前端1 小时前
前端开发者使用 AI 的能力层级——从表面使用到工程化能力的真正分水岭
前端·人工智能·程序员
goodfat1 小时前
Win11如何关闭自动更新 Win11暂停系统更新的设置方法【教程】
人工智能·禁止windows更新·win11优化工具
北京领雁科技1 小时前
领雁科技反洗钱案例白皮书暨人工智能在反洗钱系统中的深度应用
人工智能·科技·安全
落叶,听雪1 小时前
河南建站系统哪个好
大数据·人工智能·python
清月电子1 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
Dev7z1 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
七月shi人2 小时前
AI浪潮下,前端路在何方
前端·人工智能·ai编程
橙汁味的风2 小时前
1隐马尔科夫模型HMM与条件随机场CRF
人工智能·深度学习·机器学习
itwangyang5202 小时前
AIDD-人工智能药物设计-AI 制药编码之战:预测癌症反应,选对方法是关键
人工智能