如何提升Pandas中df.to_csv的写入性能?1.14GB数据耗时1分20秒
提升Pandas写入CSV性能的方法
针对你写入1.14GB数据耗时1分20秒的情况,可以试试这些优化手段:
使用C引擎加速:Pandas的
to_csv默认有Python和C两种引擎,C引擎基于底层C实现,速度明显优于Python引擎。只需添加engine="c"参数:df.to_csv(filename, sep=",", engine="c")移除不必要的输出内容:如果你的业务场景不需要索引列或表头,直接禁用它们,减少写入的数据量:
df.to_csv(filename, sep=",", index=False, header=False)分块写入数据:将大DataFrame拆分成小块逐块写入,既能降低内存占用压力,也能提升写入效率,尤其适合内存有限的环境:
df.to_csv(filename, sep=",", chunksize=100000) # 每10万行执行一次写入操作切换到更高效的文件格式:CSV是文本格式,读写效率远不如列式存储格式。如果业务允许,换成Parquet或Feather格式,读写速度能提升数倍,还能大幅压缩数据体积:
# 需要先安装pyarrow或fastparquet依赖库 df.to_parquet(f"{filename}.parquet", engine="pyarrow")启用压缩(针对CSV场景):如果必须使用CSV格式,启用压缩选项,虽然写入时会有少量性能损耗,但生成的文件更小,部分压缩算法(如gzip)的性能影响可以忽略:
df.to_csv(f"{filename}.gz", sep=",", compression="gzip")优化数据类型:提前将DataFrame的列转换为更紧凑的数据类型,减少整体数据体积,间接提升写入速度:
# 将类别型列转为category类型(适合类别数量远少于行数的场景) df["cat_col"] = df["cat_col"].astype("category") # 将整数列转为更小的数值类型(需确保数值范围符合要求) df["int_col"] = df["int_col"].astype("int32")
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

