pd.read_csv()是唯一可靠主流的csv读取入口,路径需注意windows反斜杠转义、mac/linux绝对路径开头斜杠及相对路径工作目录;中文乱码应先用chardet探测编码;分隔符、列名、空值等参数需按实际文件结构调整。

pd.read_csv() 是唯一可靠、主流的入口,其他方式(比如手动解析、用 csv 模块逐行读)在 Jupyter 里既低效又容易出错,除非你明确要控制每一行的解码逻辑。
路径写错是最常见的失败原因
Windows 下 D 盘文件不能直接写 D:data.csv,反斜杠会被当成转义符;Mac/Linux 下绝对路径也不能漏掉开头的 /。正确写法只有两种:
-
"D:\data.csv"(双反斜杠) -
r"D:data.csv"(原始字符串,推荐) -
"/Users/you/data.csv"(Mac/Linux,注意开头斜杠)
相对路径(如 "data.csv")只在当前 notebook 所在目录下有效——不是你“觉得”它该在的位置,而是右上角文件浏览器里显示的当前工作目录。
中文乱码?先看错误信息再动 encoding 参数
遇到 UnicodeDecodeError 时,别一上来就试 encoding='utf-8' 或 'gbk'。先用以下代码快速探查真实编码:
使用 qbo-mileage CLI 及用户凭证,从 Airtable、Outlook 或 Google Calendar 记录生成 QuickBooks Online 里程 CSV 文件。
import chardet
with open("your_file.csv", "rb") as f:
raw = f.read(10000)
print(chardet.detect(raw))
输出类似 {'encoding': 'GB2312', 'confidence': 0.99},就用 encoding='GB2312'。盲目指定编码可能跳过真正问题,比如 BOM 头没处理——这时加 encoding='utf-8-sig' 更稳妥。
列名、分隔符、空值这些细节决定能不能读对
pd.read_csv() 默认按逗号分隔、自动推断列名、把 NA/NULL 当空值。但现实 CSV 往往不标准:
- 用分号或制表符分隔 → 显式传
sep=';'或sep=' ' - 第一行不是列名,是备注 → 加
header=None,再用names=...手动设列名 - 数值列混了单位(如
"123 kg")→ 用converters或后续str.extract()清洗,别指望read_csv自动识别 - 文件超大卡死 → 加
chunksize=10000分批读,或用nrows=1000先试跑
参数太多不用全记,Jupyter 里输入 pd.read_csv? 或光标停在括号内按 Shift+Tab 就能弹出完整说明。
df.shape 和预期不符、某列全是 object 类型、时间字段没解析成 datetime64——这些都得回溯到 read_csv() 的参数组合上,而不是事后硬改。










