将非常大的 csv 文件拆分为较小的文件
Splitting very large csv files into smaller files
Dask 是否适合并行读取大型 csv 文件并将它们拆分为多个较小的文件?
嗨,Nutsa Nazgaide,欢迎来到 SO。首先,我建议您阅读有关 how-to-ask and 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
as
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 文档字符串。
Dask 是否适合并行读取大型 csv 文件并将它们拆分为多个较小的文件?
嗨,Nutsa Nazgaide,欢迎来到 SO。首先,我建议您阅读有关 how-to-ask and 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
as
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 文档字符串。