pandas原生支持to_csv的compression参数直接导出压缩csv,无需额外包或手动打包;支持gzip、bz2、xz及zstd等格式,传字典时必须含"method"键,如{"method": "gzip", "compresslevel": 6},错误写法如{"method": "gzip", "level": 6}会报错。

直接用 to_csv 的 compression 参数就行
不用额外安装包、不手动打包,Pandas 原生支持导出带压缩的 CSV。关键就是 to_csv 的 compression 参数,它接受字符串或字典,控制底层压缩行为。
常见错误是手动用 gzip 模块写文件再套一层,结果生成的是二进制 gzip 流而非标准 CSV.gz 文件——Pandas 会自动处理编码和换行,手动操作反而容易破坏 CSV 结构。
-
compression="gzip":生成.csv.gz,最常用,兼容性好 -
compression="bz2":压缩率更高但慢,生成.csv.bz2 -
compression="xz":更高压缩率,需要系统有xz工具(Windows 可能缺) -
compression={"method": "zstd", "level": 3}:需安装zstandard包,速度快、压缩平衡
compression 字典参数怎么配才不出错
传字典时必须包含 "method" 键,否则报 ValueError: Unknown compression method。其他键取决于方法,比如 zstd 支持 "level",gzip 支持 "compresslevel"(注意拼写),而 bz2 用 "compresslevel" 但取值范围是 1–9(默认 9)。
容易踩的坑是把 compresslevel 写成 compression_level 或漏掉引号——字典键必须是字符串,且大小写敏感。
-
{"method": "gzip", "compresslevel": 6}:比默认 9 快一点,体积略大 -
{"method": "zstd", "level": 1}:适合频繁读写的场景,压缩快解压也快 - 不要写
{"method": "gzip", "level": 6}——gzip不认level这个 key
导出后文件打不开?检查这三点
导出的 .csv.gz 看起来“打不开”,通常不是 Pandas 问题,而是工具链不匹配:
- Excel 不能直接双击打开
.csv.gz,得先解压,或用支持 gzip 的 CSV 查看器(如 VS Code + CSV Viewer 插件) - Linux/macOS 下用
zcat file.csv.gz | head快速验证内容是否正常 - 如果用 Python 读回,必须用
pd.read_csv("file.csv.gz")——Pandas 自动识别扩展名并解压,别手动gzip.open再传给read_csv,会报编码错误
大数据量下 compression 对性能的影响
压缩本身耗 CPU,尤其 xz 和高 compresslevel 的 gzip。实测 1GB CSV:
-
compression="gzip":比无压缩慢约 1.8×,磁盘节省 ~75% -
compression={"method": "zstd", "level": 1}:只慢 ~1.2×,节省 ~68%,推荐替代 gzip -
compression="xz":慢 4×+,节省 ~80%,仅适合归档、非实时场景
真正卡住的往往是磁盘 I/O,不是压缩;如果 SSD 速度够,选 zstd 级别 1–3 是平衡点。别为了省几 MB 开启 compresslevel=9,时间成本远超收益。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











