为啥我使用 modin.pandas 比使用 Pandas 需要更长的时间 [ray]
Posted
技术标签:
【中文标题】为啥我使用 modin.pandas 比使用 Pandas 需要更长的时间 [ray]【英文标题】:Why does it take longer than using Pandas when I used modin.pandas [ray]为什么我使用 modin.pandas 比使用 Pandas 需要更长的时间 [ray] 【发布时间】:2021-09-18 01:41:41 【问题描述】:我只是一个喜欢用 Python 处理数据的 Python 新手。
当我能够使用 Python 的代表性数据工具 Pandas 时,它似乎可以很快地在 Excel 上工作。
但是,我有点失望地看到检索 470,000 行的数据 (.xlsx) 需要超过 1 到 2 分钟,因此,我发现使用 modin 和 ray(或 dask)可以更快操作。
在学习了如何使用它之后,我将它与仅使用 Pandas 进行了比较。 (这次是1亿行数据,大约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]
【问题讨论】:
电脑规格为:AMD Ryzen 5 3600 6-Core Processor 3.60 GHz / RAM 16GB 【参考方案1】:首先,要进行公平的评估,您始终需要使用 %%timeit 魔术命令,该命令可为您提供多次运行的平均值。
Modin 通常在以下情况下效果最佳:
-
非常大的文件
大量内核
我认为,就您而言,表现不佳主要是由于 Ray/Dask 完成的多处理管理,例如工人调度和所有进入并行化的设置。当您满足上述 2 个标准中的至少一个(特别是第一个,给定任何当前处理器)时,资源管理和从 Modin 获得的加速之间的权衡对您有利,但 5GB 文件也不是 6核心足够大,可以对您有利。并行化成本高昂,任务必须值得。
如果是一次性的,1-2分钟对于这类事情来说根本不是不合理的时间。如果它是您要连续读写的文件,我建议将其写入 HDF5 或 pickle 格式,在这种情况下your read/write performance will improve far more 而不是仅使用 Modin。
或者,Vaex 是读取任何 df 的最快选项。尽管如此,我个人认为它仍然非常不完整,有时与除了简单的数字数据操作之外的承诺不符,例如当您的数据中有大字符串时。
【讨论】:
以上是关于为啥我使用 modin.pandas 比使用 Pandas 需要更长的时间 [ray]的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 CGContextDrawImage 旋转图像比绘制旋转的 UIImage 慢得多?