【问题标题】:Splitting very large csv files into smaller files将非常大的 csv 文件拆分为较小的文件
【发布时间】:2020-03-22 22:07:29
【问题描述】:

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

【问题讨论】:

    标签: python dask dask-delayed


    【解决方案1】:

    您好 Nutsa Nazgaide,欢迎来到 SO。首先,我建议您阅读有关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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-21
        • 2018-10-08
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        • 2018-12-27
        相关资源
        最近更新 更多