在块大小模式下提高熊猫的read_csv速度

时间:2019-04-26 23:08:54

标签: python pandas

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

我已将块大小从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')

1 个答案:

答案 0 :(得分:0)

您可以在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 选项,它可能会更有效。