第三方库集成#

Modin 是 Pandas 的直接替代品,因此我们希望它能像 Pandas 一样与第三方库互操作。 为了了解 Modin 在哪些方面表现良好,哪些方面需要改进,我们选择了一些重要的机器学习 + 可视化 + 统计库, 然后查看了它们如何与 Pandas 配合使用的示例(如果可能的话,来自它们的文档)。然后我们用 Modin 运行了相同的工作流程, 并跟踪了哪些工作正常,哪些失败了。

在下表中,您将看到我们测试的每个第三方库的成功测试调用次数/总测试调用次数,以及Pandas和Modin与该库集成的定性描述。

在深入探讨中,您可以查看我们用于测试API调用的Jupyter笔记本以及提交的相应Github问题。如果您在自己的工作流程中遇到其他问题/示例,我们鼓励您提交一个问题或贡献一个PR

注意

这些互操作性指标是初步的,并非每个库的所有API都经过了测试。欢迎添加更多!

Modin 库的互操作性#

API 成功次数 / 调用次数

互操作性

seaborn

73% (11/15)

Pandas: 接受 Pandas DataFrames 作为输入以生成图表
Modin: 大多数情况下接受 Modin DataFrames 作为输入以生成图表,但在某些情况下(pairplot, lmplot)完全失败,而在其他情况下(catplot, objects.Plot)仅适用于某些参数组合

plotly

78% (7 / 9)

Pandas: 接受Pandas DataFrames作为输入以生成图表,包括将X和Y参数指定为df列
Modin: 主要接受Modin DataFrames作为输入以生成图表(除了choropleth),但在将X和Y参数指定为df列时会失败

matplotlib

100% (5 / 5)

Pandas: 接受Pandas数据框作为输入,用于生成散点图、条形图等。
Modin: 接受Modin数据框作为输入,用于生成散点图、条形图等。

altair

0% (0 / 1)

Pandas: 接受Pandas DataFrames作为通过Chart生成图表的输入
Modin: 不接受Modin DataFrames作为通过Chart生成图表的输入

bokeh

0% (0 / 1)

Pandas: 通过ColumnDataSource加载Pandas数据框
Modin: 不通过ColumnDataSource加载Modin数据框

sklearn

100% (6 / 6)

Pandas: 许多函数接受Pandas DataFrames作为输入
Modin: 许多函数接受Modin DataFrames作为输入

Hugging Face (Transformers, Datasets)

100% (2 / 2)

Pandas: 将Pandas数据框加载到数据集中,并使用Transformers.InputExample(已弃用)处理Pandas数据框行作为输入。
Modin: 将Modin数据框加载到数据集中(尽管速度较慢),并通过Transformers.InputExample(已弃用)处理Modin数据框行作为输入。

Tensorflow

75% (3 / 4)

Pandas: 将Pandas数据框转换为张量
Modin: 将Modin数据框转换为张量,但像Keras这样的专用API可能还不能使用

NLTK

100% (1 / 1)

Pandas: 在Pandas数据框上执行如分词等转换
Modin: 在Modin数据框上执行如分词等转换

XGBoost

100% (1 / 1)

Pandas: 通过DMatrix函数加载Pandas数据框
Modin: 通过DMatrix函数加载Modin数据框

statsmodels

50% (1 / 2)

Pandas: 在拟合模型时可以接受Pandas DataFrames
Modin: 在拟合模型时有时接受Modin DataFrames(例如,formula.api.ols),但在其他情况下不接受(例如,api.OLS)

深入探讨#

seaborn#

Jupyter Notebook

Github Issues

plotly#

Jupyter Notebook

Github Issues

matplotlib#

Jupyter Notebook

altair#

Jupyter Notebook

Github Issues

bokeh#

Jupyter Notebook

Github Issues

sklearn#

Jupyter Notebook

Hugging Face#

Jupyter Notebook

Tensorflow#

Jupyter Notebook

Github Issues

NLTK#

Jupyter Notebook

XGBoost#

Jupyter Notebook

statsmodels#

Jupyter Notebook

Github Issues

附录:系统信息#

这里的示例脚本是在以下系统上运行的:

  • 操作系统平台和发行版(例如,Linux Ubuntu 16.04): macOS Big Sur 11.5.2

  • Modin 版本: 0.18.0+3.g4114183f

  • Ray 版本: 2.0.1

  • Python 版本: 3.9.7.final.0

  • 机器: MacBook Pro (16英寸, 2019)

  • 处理器: 2.3 GHz 8核 Intel Core i9 处理器

  • 内存: 16 GB 2667 MHz DDR4