有没有更快的方法将数据从 Dask DataFrame 导出到 CSV?

Pri*_* K. 5 python csv dask

我正在使用 Dask 读取 CSV 文件(10 GB)。然后在执行一些操作后,我使用 .csv 格式以 CSV 格式导出文件to_csv。但问题是导出此文件需要大约27 分钟(根据 ProgressBar 诊断)。

CSV 文件包括 350 列,其中一列是时间戳,另一列的数据类型设置为float64.

  • 机器规格:
    • 英特尔 i7-4610M @ 3.00 GHz
    • 8 GB DDR3 内存
    • 500 GB 固态硬盘
    • 视窗 10 专业版

我试过在单独的文件中导出,to_csv('filename-*.csv')也试过不包括.csv. 因此,Dask 导出扩展名为.part. 但是这样做也需要与上面提到的相同的时间。

我认为这应该不是 I/O 操作的问题,因为我使用的是 SSD。但我不确定。

这是我的代码(简化):

df = dd.read_csv('path\\to\\csv')
# Doing some operations using df.loc
df.to_csv('export.csv', single_file=True)
Run Code Online (Sandbox Code Playgroud)

我正在使用 Dask v2.6.0。

预期输出 --> 在不改变机器规格的情况下在更短的时间内完成此过程。

无论如何,我可以在更短的时间内导出此文件吗?

MRo*_*lin 2

默认情况下,dask dataframe 使用多线程调度程序。这对于大多数 pandas 操作来说是最佳的,但read_csv部分保留了 GIL,因此您可能想尝试使用多处理或 dask.distributed 调度程序。

请在此处查看更多信息:https ://docs.dask.org/en/latest/scheduling.html

如果可以的话,我还建议使用更高效的文件格式,例如 Parquet

https://docs.dask.org/en/latest/dataframe-best-practices.html#store-data-in-apache-parquet-format