人工智能之数据分析 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》

相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
墨染天姬5 小时前
【AI】端侧AIBOX可以部署哪些智能体
人工智能
AI成长日志5 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
2501_948114246 小时前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
小小工匠6 小时前
LLM - awesome-design-md 从 DESIGN.md 到“可对话的设计系统”:用纯文本驱动 AI 生成一致 UI 的新范式
人工智能·ui
黎阳之光6 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
小超同学你好6 小时前
面向 LLM 的程序设计 6:Tool Calling 的完整生命周期——从定义、决策、执行到观测回注
人工智能·语言模型
2501_944934736 小时前
直播运营需要哪些数据分析能力?场观、停留、成交和投流怎么联动分析
数据挖掘·数据分析
智星云算力6 小时前
本地GPU与租用GPU混合部署:混合算力架构搭建指南
人工智能·架构·gpu算力·智星云·gpu租用
jinanwuhuaguo6 小时前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin