pd.read_csv() 能运行不代表数据正确加载,常见问题包括路径错误、编码不匹配(如Excel导出的GBK需指定encoding="gbk")、分隔符误设(可用sep=None自动推断),以及目录结构理解偏差。

pd.read_csv() 能跑通,不代表数据真被正确读进来了——很多坑藏在路径、编码、分隔符和隐式格式里。
为什么 pd.read_csv("data.csv") 报错或读错?
最常见原因不是代码写错,而是文件根本没放在 Jupyter 当前工作目录下。Jupyter 只能访问启动时所在目录及其子目录里的文件,不会自动扫描你电脑任意位置。
- 用
!pwd(Linux/macOS)或!cd(Windows)在 notebook 里查当前路径,确认你的 CSV 确实在这个目录里 - 上传文件后,必须刷新浏览器页面才能在文件列表里看到它;不刷新就直接运行
read_csv,大概率报FileNotFoundError - 中文路径或文件名含空格、括号时,Python 容易解析失败,建议全用英文+下划线命名
读取时乱码或列错位,怎么调 encoding 和 sep?
Excel 导出的 CSV 经常是 GBK 编码,而 pandas 默认用 UTF-8,一读就崩;另外有些数据用分号 ; 或制表符 \t 分隔,但你硬用逗号,列就全挤歪了。
- 先试
pd.read_csv("data.csv", encoding="gbk"),尤其 Windows 上 Excel 直接另存为 CSV 时默认就是 GBK - 不确定分隔符?加
sep=None让 pandas 自动推断:pd.read_csv("data.csv", sep=None, engine="python") - 如果第一行被误当成列名,加
header=None;如果想跳过前几行垃圾注释,用skiprows=2
怎么从子目录或上级目录读文件?
路径写错是高频问题。相对路径要以 notebook 所在目录为起点,不是以你心里“觉得应该在”的位置为起点。
- 文件在
./data/raw/abc.csv→ 用pd.read_csv("data/raw/abc.csv") - 文件在上一级目录的
../config/settings.json→ 用pd.read_json("../config/settings.json") - 绝对路径虽可用,但会破坏 notebook 可移植性,不推荐;真要用,Windows 写成
r"C:\path\to\file.csv",注意加r前缀防转义
导入 Excel、JSON、TXT 等非 CSV 格式要注意什么?
pd.read_excel() 需要 openpyxl 或 xlrd 支持;pd.read_json() 对 JSON 结构敏感;纯文本 open() 更可控。
- 读 Excel:先
!pip install openpyxl,再pd.read_excel("data.xlsx", sheet_name="Sheet1");sheet_name=0表示第一个 sheet - 读 JSON:若报
ValueError: Expected object or value,说明不是标准 JSON 行格式,试试lines=True参数 - 读纯文本(如日志):用
with open("log.txt", encoding="utf-8") as f: lines = f.readlines(),比 pandas 更稳妥
read_csv 就会静默出错——数据显示看着像,但索引错、类型错、字段截断,后续分析全偏。别依赖“能跑就行”,多打一行 df.shape 和 df.head().T 看真实结构。


















