You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何加速处理大型CSV文件与pandas dataframe?

1-2GB规模CSV高效处理方案

加载阶段优化

  • 裁剪加载范围:仅加载需要的字段,使用pd.read_csv()的usecols参数指定目标列,避免加载全量无用列,可直接降低数倍内存占用。如果仅需查看数据样例,增加nrows=100参数即可秒级返回前N行,无需全量加载。
  • 指定字段类型:提前指定每列的数据类型,避免pandas自动推断为占内存更高的object类型,数值列可指定为int32/float32(精度允许的前提下),离散分类列指定为'category'类型,示例代码:
dtype_config = {
    "user_id": "int32",
    "category": "category",
    "amount": "float32"
}
df = pd.read_csv("your_file.csv", dtype=dtype_config, usecols=list(dtype_config.keys()))
  • 更换加载引擎:pandas 2.0及以上版本支持engine='pyarrow'参数,CSV加载速度可达默认C引擎的3-5倍,内存占用也更低。
  • 分块加载:如果不需要一次性处理全量数据,增加chunksize=100000参数,每次仅加载10万行处理,处理完成后自动释放内存,不会占用大量系统资源。

格式转换优化

首次加载CSV后,将数据转成列式存储格式parquet或feather保存,后续直接读取列式文件:

  • 加载速度是CSV的10倍以上,全量加载1-2GB对应parquet文件仅需数秒
  • 内存占用仅为CSV加载后的1/3到1/5,不会出现系统卡顿问题
    示例代码:
# 首次处理转格式
df = pd.read_csv("your_file.csv")
df.to_parquet("your_file.parquet")
# 后续直接读parquet
df = pd.read_parquet("your_file.parquet")

工具替换优化

  • 若pandas优化后仍无法满足需求,可替换为polars库:基于Rust开发,内存效率和运算速度远高于pandas,API设计和pandas高度接近,迁移成本极低,1-2GB规模数据的各类操作均可在秒级完成。
  • 简单预处理操作可直接用shell命令完成:比如用cut命令提取目标列、grep命令筛选目标行,先把原始CSV缩小到目标规模后再导入Python处理,适合仅需处理部分数据的场景。

设备适配优化

2019款MacBook Pro若为8GB内存版本,全量加载CSV后数据膨胀会触发系统交换内存写入SSD,直接导致处理速度骤降、整机卡顿,处理数据前可关闭其他占用高内存的应用,释放足够内存空间。

内容的提问来源于stack exchange,提问作者ranky123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:09:02