【发布时间】:2020-03-22 22:07:29
【问题描述】:
Dask 是否适合并行读取大型 csv 文件并将它们拆分为多个较小的文件?
【问题讨论】:
标签: python dask dask-delayed
Dask 是否适合并行读取大型 csv 文件并将它们拆分为多个较小的文件?
【问题讨论】:
标签: python dask dask-delayed
您好 Nutsa Nazgaide,欢迎来到 SO。首先,我建议您阅读有关how-to-ask 和mcve 的信息。您的问题已经足够好,但是生成原始数据框的样本会很棒。我将生成一个基本数据框,但在您的情况下逻辑不应有太大不同,因为您只需要考虑位置。
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。
【讨论】:
是的,dask 可以读取大型 CSV 文件。它会将它们分成块
df = dd.read_csv("/path/to/myfile.csv")
然后,在保存时,Dask 总是将 CSV 数据保存到多个文件中
df.to_csv("/output/path/*.csv")
有关更多信息,请参阅 read_csv 和 to_csv 文档字符串。
【讨论】: