将非常大的CSV文件拆分为较小的文件

时间:2019-11-27 11:03:19

标签: python-3.x dask dask-delayed

Dask是否可以并行读取大型csv文件并将它们拆分为多个较小的文件?

2 个答案:

答案 0 :(得分:1)

您好,Nutsa Nazgaide,欢迎您。首先,我建议您阅读有关how-to-askmcve的信息。您的问题足够好,但是对原始数据框的样本进行抽样将非常有用。我将生成一个基本的数据框,但是在您的情况下逻辑应该没有太大不同,因为您只需要考虑位置即可。

生成数据框

import dask.dataframe as dd
import numpy as np
import pandas as pd
import string

letters = list(string.ascii_lowercase)

N = int(1e6)
df = pd.DataFrame({"member":np.random.choice(letters, N),
                   "values":np.random.rand(N)})

df.to_csv("file.csv", index=False)

每个成员一个parquet文件(文件夹)

如果您很高兴以parquet的形式输入输出,则可以将选项partition_on用作

df = dd.read_csv("file.csv")
df.to_parquet("output", partition_on="member")

如果您确实需要csv,则可以转换为这种格式。我强烈建议您将数据移至parquet

答案 1 :(得分:0)

是的,dask可以读取大型CSV文件。它将它们分成大块

df = dd.read_csv("/path/to/myfile.csv")

然后,在保存时,Dask始终将CSV数据保存到多个文件中

df.to_csv("/output/path/*.csv")

有关更多信息,请参见read_csv和to_csv文档字符串。