【发布时间】:2021-06-19 18:08:33
【问题描述】:
我有一个庞大的数据集。它有近 300k 行。我想把它分成两半。它们每个都包含 150k 行。是否可以使用 dask 来做到这一点?
【问题讨论】:
标签: python pandas dataframe dask
我有一个庞大的数据集。它有近 300k 行。我想把它分成两半。它们每个都包含 150k 行。是否可以使用 dask 来做到这一点?
【问题讨论】:
标签: python pandas dataframe dask
Dask 设计为具有分区的 DataFrame。让我们举个例子,您在某个名为/path/ 的目录中有任意数量的 CSV 文件(如果您的 300k 行的整个数据集位于某个目录中的许多 CSV 文件中,这将创建两个大小为 150k 的分区):
import dask.dataframe as dd
df = dd.read_csv("/path/*.csv").repartition(npartitions=2)
如果您已经拥有以前工作的数据框,当然可以使用
df = df.repartition(npartitions=2)
以 CSV 为例,如果您恰好有两个 CSV 文件,则调用重新分区是多余的。请记住,重新分区将为 dask 任务图添加额外的步骤,您可能希望在初始化数据帧后调查重新分区的性能成本/收益。查看the diagnostics part of the documentation for more
【讨论】:
dask.dataframe.to_csv,如果您在输出名称中使用通配符 (*),Dask 默认会将分区保存到单独的 csv 文件中。