【问题标题】:trying to read a large csv file and concat too slow试图读取一个大的 csv 文件并且连接速度太慢
【发布时间】:2019-07-25 08:17:25
【问题描述】:

我正在尝试读取一个大的 csv 文件(超过 100 GB)
我找到了使用 chunksize 选项读取大型 csv 文件的方法

%%time
import time
filename = "../code/csv/file.csv"
lines_number = sum(1 for line in open(filename))
lines_in_chunk = 100# I don't know what size is better
counter = 0
completed = 0
reader = pd.read_csv(filename, chunksize=lines_in_chunk)

这部分速度更快
但问题是串联

%%time
df = pd.concat(reader,ignore_index=True)

这花费了 4 多个小时,但尚未完成。
ram 内存使用量也在不断增长

有没有办法更快更有效地连接这个阅读器文件?

【问题讨论】:

  • 我对 pandas 了解不多,但对齐数据帧显然会带来很大的加速:stackoverflow.com/questions/31860671/…
  • 我认为您需要将 dask 用于 100GB CSV,或者将其加载到 SQL 中以进行数据准备。最近自己遇到了一个类似的问题。

标签: python pandas concatenation concat read.csv


【解决方案1】:

您可以通过首先使用conda install dask 安装 Dask 来更快地读取文件。然后通过import dask 导入。您还需要导入 pathlib 的路径,并传递文件名,如 Path('filename')。然后您可以像这样读取文件:dask.dataframe.read_csv(filename)。或者,您可以将其转换为 pickle 文件,使用 pd.read_pickle(filename) 读取它,但转换它需要先使用 pandas 读取它,然后再使用 pandas 进行转换。

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2012-01-01
    • 2023-03-21
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多