pandas 读取 CSV 编码问题

708 字
4 分钟
pandas 读取 CSV 编码问题

pandas 读取 CSV 编码问题#

CSV 看起来是最简单的数据格式,但实际项目里经常因为编码、分隔符或表头问题让第一步就卡住。特别是中文表格,从 Excel、网页、系统后台导出后,编码并不总是 UTF-8。

排查读取问题时,不要一上来就改业务逻辑。先把文件读对,再谈清洗和分析。

先判断编码#

如果中文变成乱码,优先尝试 utf-8-sig 和 gbk。utf-8-sig 常见于带 BOM 的 CSV,gbk 常见于 Windows 环境导出的中文文件。

import pandas as pd
for enc in ["utf-8", "utf-8-sig", "gbk", "gb18030"]:
try:
df = pd.read_csv("data.csv", encoding=enc, nrows=5)
print(enc, df.head())
break
except UnicodeDecodeError as e:
print(enc, "failed", e)

再检查分隔符#

有些文件扩展名叫 .csv,实际却用制表符、分号或多个空格分隔。读取后如果只有一列,或者列名挤在一起,就要检查 sep。

df = pd.read_csv("data.csv", encoding="gbk", sep=None, engine="python")
print(df.shape)
print(df.columns.tolist())

最后看空值和表头#

后台导出的表格常会在前几行放说明文字,真正表头不在第一行。这时可以用 skiprows 或 header 指定读取位置。

读完后立刻打印 shape、columns、head,不要等分析结果异常时再回头查输入。

复查点#

  • 行数是否和原文件大致一致。

  • 中文列名是否正常显示。

  • 是否出现 Unnamed: 0 这类多余索引列。

  • 数值列有没有被整体读成字符串。

实战复盘#

复用《pandas 读取 CSV 编码问题》时,不要只复制代码块。先把自己的字段名、数据口径和异常规则写出来,再替换示例里的列名。pandas 的函数很通用,但业务字段的含义不能自动迁移。

每次处理完成后,我会抽样看几条原始记录和处理后记录。尤其是日期、金额、分类字段,机器统计和肉眼抽查要一起做,才能发现格式看似正常但含义错位的问题。

这类文章后续可以继续补充真实小表格作为输入示例。输入、处理、输出三者都出现,教程才不会变成只解释 API。

最小验收样例#

验收《pandas 读取 CSV 编码问题》时,我会手写一个三到五行的小 DataFrame:一行正常数据,一行缺失或异常数据,一行边界数据。先让示例在小表上跑通,再换成完整数据集。

小表的好处是结果可以人工计算。只要人工结果和 pandas 输出对不上,就说明代码逻辑或字段口径还没想清楚。这个过程比直接在大表上调试更可靠。

小结#

CSV 读取问题要按编码、分隔符、表头、空值的顺序排查。第一步读错,后面所有统计都会跟着错。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

pandas 读取 CSV 编码问题
https://blog.tjcheng.cn/posts/backfill/2026-05-12/pandas-read-csv-encoding/
作者
TengJinCheng
发布于
2026-05-12
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录