为什么我用modin.pandas的时候比用Pandas的时间还长 [ray]

Why does it take longer than using Pandas when I used modin.pandas [ray]

我只是一个 Python 新手,喜欢用 Python 处理数据。

当我能够使用Python的代表性数据工具Pandas时,似乎可以很快地在Excel上工作。

然而,我有点失望地看到它需要超过 1 到 2 分钟来检索具有 470,000 行的数据(.xlsx),结果,我发现使用 modin 和 ray(或 dask)会启用更快的操作。

在学习了如何简单地使用它之后,我将其与仅使用 Pandas 进行了比较。 (本次100M行数据,约5GB)

import ray
ray.init()
import modin.pandas as md

%%time
TB = md.read_csv('train.csv')
TB

但是写Pandas只用了1分3秒,但是写modin[ray]却用了1分9秒。 我很失望地发现这需要更长的时间,而不仅仅是一个小的差异。

我怎样才能比 pandas 更快地使用 modin? groupby 或 merge 等复杂操作?单纯读取数据差别不大吗?

其他人用modin读取数据速度更快,是不是我的电脑设置有问题?我想知道为什么。

enter image description here

记下提示安装的方法,以备不时之需。

!pip install modin[ray]
!pip install ray[default]

首先,要进行公平评估,您始终需要使用 %%timeit 魔术命令,它会为您提供多次运行的平均值。

Modin 通常在满足以下条件时效果最佳:

  1. 非常大的文件
  2. 大量内核

在你的情况下,性能不佳,我认为主要是由于 Ray/Dask 完成的多进程管理,例如工人调度和所有进入并行化的设置。当您至少满足上述 2 个标准中的一个(特别是第一个,给定任何当前处理器)时,资源管理和您从 Modin 获得的速度之间的权衡将对您有利,但 5GB 文件也不是 6核心足够大,可以让您受益。并行化代价高昂,任务必须是值得的。

如果是一次性的,对于这种事情,1-2分钟的时间一点都不合理。如果它是一个您要连续读写的文件,我建议将其写入 HDF5 或 pickle 格式,在这种情况下 而不是仅使用 Modin。

或者,Vaex 是读取任何 df 最快的选择。不过,我个人认为它仍然非常不完整,有时不符合除了简单的数字数据操作之外的承诺,例如当您的数据中有大字符串时。