在 Python 中读取 20GB 的 CSV 文件



我正在尝试从远程路径读取 python 中的 20 GB 文件。下面的代码以块的形式读取文件,但如果由于任何原因与远程路径的连接丢失,我必须重新启动整个读取过程。有没有办法我可以从最后一个读取行继续并继续附加到我正在尝试创建的列表。这是我的代码:

from tqdm import tqdm
chunksize=100000
df_list = [] # list to hold the batch dataframe
for df_chunk in tqdm(pd.read_csv(pathtofile, chunksize=chunksize, engine='python')):
df_list.append(df_chunk)
train_df = pd.concat(df_list)

你的内存要多于 20GB 吗?因为您将整个文件读入 RAM,并将其表示为 Python 对象。df_list.append(df_chunk)是罪魁祸首。

您需要的是:

  • 逐个小块阅读(你已经这样做了(;
  • 逐件处理;
  • 处理后丢弃旧件。Python 的垃圾收集会为你做这件事,除非你保留对用过的块的引用,就像你目前在df_list中所做的那样。

请注意,您可以将中间/摘要数据一直保存在RAM中。只是不要一直将整个输入保留在 RAM 中。

或者获得 64GB/128GB RAM,以您更快为准。有时,将更多资源投入到一个问题上会更快。

最新更新