首页 > 解决方案 > 在 chunksize 模式下提高 Pandas read_csv 速度

问题描述

我正在使用 chunksize pd read_csv 读取 10Gb 文件,但我注意到 read_csv 的速度越来越慢。此外,经过一些迭代,我会收到一条关于“我的磁盘几乎已满”的警告消息。感觉 pd 在加载新数据块时不会删除旧内存。如果我能以某种方式告诉 python 在加载块大小数据帧并写出输出后,擦除该块的内存并用新块替换它,那就太好了

我把chunksize从10000改成了3000,read_csv()越来越慢的问题依然存在。读取文件块后,我对其进行一些操作(根据某些标准删除一些行)并将新输出写入 csv 文件。

for i in range(0, number_lines, chucksize):
    read_all_cat=pd.read_csv(all_cat_file_name, error_bad_lines=False, sep='\\t', header=None, nrows=chucksize, skiprows=i, engine='python')

标签: pythonpandas

解决方案


您可以在 for 循环结束时使用垃圾收集器。

import gc

for i in range(0, number_lines, chucksize):
    read_all_cat=pd.read_csv(file, **kwargs)
    # ...
    # other operations
    # ...

    del read_all_cat, other_variables
    gc.collect()

或者您可以使用pd.read_csv(**options) chunksize选项,它可能会更有效。


推荐阅读