要使用Modin,请替换pandas导入:
通过更改一行代码来扩展您的pandas工作流程#
Modin 使用 Ray, Dask 或 Unidist 提供了一种轻松的方式来加速您的 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
如果你没有安装Ray、Dask或Unidist,你需要安装带有以下目标之一的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,即使在你的笔记本电脑上#
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以查看开放问题并做出贡献。