我一直在研究并行化选项,发现ray
和modin
. 经过一些测试,我对使用modin
. 两个例子:
df = pd.read_csv()
对于 180 MB 文件 pandas 5.2s 与 modin.pandas 2.7s
但是df.groupby()
pandas 0.59s 与 modin.pandas 5.46s
什么样的应用程序将从使用 modin 中受益?这里有一般规则还是必须单独测试所有内容?
我一直在研究并行化选项,发现ray
和modin
. 经过一些测试,我对使用modin
. 两个例子:
df = pd.read_csv()
对于 180 MB 文件 pandas 5.2s 与 modin.pandas 2.7s
但是df.groupby()
pandas 0.59s 与 modin.pandas 5.46s
什么样的应用程序将从使用 modin 中受益?这里有一般规则还是必须单独测试所有内容?
根据经验,您在列上进行的任何转换,如聚合函数(groupby()、sum()、count())在 modin 中总是更快。
非常简单的原因是 Modin 将使用您机器的多个内核,因此所有这些都将比 pandas 更快。
通常,如果您.transform() or .apply()
在任何列上使用,Modin 将能够更快地完成它。
但是,在某些情况下 modin 会比 PANDAS 慢。例子 :
.append()
谢谢!
来自https://modin.readthedocs.io/en/latest/
Modin 使用 Ray 或 Dask 提供了一种轻松的方式来加速您的 pandas 笔记本、脚本和库。与其他分布式 DataFrame 库不同,Modin 提供与现有 pandas 代码的无缝集成和兼容性。即使使用 DataFrame 构造函数也是相同的。
突出的两个主要特点是:
在 pandas 中,当您进行任何类型的计算时,您一次只能使用一个核心。使用 Modin,您可以使用机器上的所有 CPU 内核。
使用 Modin,由于其轻量级、稳健和可扩展的特性,您可以获得 1MB 和 1TB+ 的快速 DataFrame
特别是对于问题的慢 group_by 部分,有一个 github 讨论指出常规的旧 pandas 比 modin.pandas 效果更好: https ://github.com/modin-project/modin/issues/895
Modin 仍在积极开发中,他们的 github 存储库 ( https://github.com/modin-project/modin ) 中的 README.md 列出了提到这些功能的 panda API 覆盖率: