modin logo

要使用Modin,请替换pandas导入:

_images/Modin_Pandas_Import.gif

通过更改一行代码来扩展您的pandas工作流程#

Modin 使用 Ray, DaskUnidist 提供了一种轻松的方式来加速您的 pandas 笔记本、脚本和库。与其他分布式 DataFrame 库不同,Modin 提供了与现有 pandas 代码的无缝集成和兼容性。即使是使用 DataFrame 构造函数也是相同的。

import modin.pandas as pd
import numpy as np

frame_data = np.random.randint(0, 100, size=(2**10, 2**8))
df = pd.DataFrame(frame_data)

使用Modin时,无需提前了解可用的硬件资源。 此外,也无需指定如何分发或放置数据。 Modin作为pandas的即插即用替代品,这意味着您可以继续使用之前的 pandas笔记本,无需更改,同时由于Modin的加入,即使在单台 机器上也能体验到显著的加速。一旦更改了导入语句,您就可以像使用 pandas一样使用Modin。

安装和选择您的计算引擎#

Modin 可以从 PyPI 安装:

pip install modin

如果你没有安装RayDaskUnidist,你需要安装带有以下目标之一的Modin:

pip install "modin[ray]" # Install Modin dependencies and Ray to run on Ray
pip install "modin[dask]" # Install Modin dependencies and Dask to run on Dask
pip install "modin[mpi]" # Install Modin dependencies and MPI to run on MPI through unidist
pip install "modin[all]" # Install all of the above

Modin 会自动检测您安装的引擎并使用它来调度计算!

如果你想选择一个特定的计算引擎来运行,你可以设置环境变量 MODIN_ENGINE,Modin 将使用该引擎进行计算:

export MODIN_ENGINE=ray  # Modin will use Ray
export MODIN_ENGINE=dask  # Modin will use Dask
export MODIN_ENGINE=unidist # Modin will use Unidist

如果你想选择Unidist引擎,你应该设置额外的环境变量 UNIDIST_BACKEND,因为目前Modin仅通过unidist支持MPI:

export UNIDIST_BACKEND=mpi # Unidist will use MPI backend

这也可以在导入 Modin 之前在笔记本/解释器中完成:

import os

os.environ["MODIN_ENGINE"] = "ray"  # Modin will use Ray
os.environ["MODIN_ENGINE"] = "dask"  # Modin will use Dask

os.environ["MODIN_ENGINE"] = "unidist" # Modin will use Unidist
os.environ["UNIDIST_BACKEND"] = "mpi" # Unidist will use MPI backend

import modin.pandas as pd

更快的pandas,即使在你的笔记本电脑上#

read_csv的图表

modin.pandas DataFrame 是一个极其轻量级的并行 DataFrame。Modin 透明地分发数据和计算,因此您只需继续使用 pandas API,就像在安装 Modin 之前一样。与其他并行 DataFrame 系统不同,Modin 是一个极其轻量级且健壮的 DataFrame。因为它如此 轻量级,Modin 在具有 4 个物理核心的笔记本电脑上提供了高达 4 倍的加速。

在pandas中,当你进行任何类型的计算时,你只能使用一个核心。使用Modin,你可以使用机器上的所有CPU核心。即使在read_csv中,我们通过有效地将工作分配到整个机器上,看到了显著的性能提升。

import modin.pandas as pd

df = pd.read_csv("my_dataset.csv")

Modin 是一个适用于从1MB到1TB+数据集的DataFrame#

我们非常注重在小数据(例如pandas)和大数据之间架起解决方案的桥梁。通常,数据科学家需要不同的工具来处理不同规模的数据。适用于1MB的DataFrame解决方案无法扩展到1TB以上,而适用于1TB以上的解决方案对于1KB范围内的数据集来说开销太大。由于Modin的轻量、健壮和可扩展性,您可以在1MB和1TB+的情况下获得快速的DataFrame。

Modin 目前正在积极开发中。欢迎提出请求和贡献!

如果您有兴趣了解更多关于Modin的信息,请查看入门指南,然后参考开发者文档部分,在这里您可以找到系统架构、内部实现细节和其他有用信息。同时,查看Github以查看开放问题并做出贡献。