当前位置: 首页 > news >正文

Modin - pandas 替代和扩展

在这里插入图片描述

文章目录

      • 一、关于 Modin?
      • 二、安装
        • 1、使用 PyPI
        • 2、 conda-forge
        • 3、选择计算引擎
        • 4、我应该使用哪个引擎?
      • 三、Pandas API 覆盖范围
        • 通过更改一行代码来扩展您的 pandas 工作流程。
        • 更快的 pandas,甚至在你的笔记本电脑上
        • Modin可以处理pandas无法处理的数据集
        • Modin 架构
      • 四、其他资源
        • 使用 Modin 入门
        • Modin 社区
        • 了解更多关于 Modin 的信息


一、关于 Modin?

Modin 是 pandas 的直接替代品。

pandas 是单线程,Modin 允许您通过扩展 pandas 以使其利用所有您的 cores.

Modin特别适用于较大的数据集,在这些数据集中,pandas会变得非常慢或运行缓慢 内存不足.

此外,Modin 还附带 额外的 API 以提高用户体验。

通过简单地替换导入语句,Modin 为用户提供了轻松的速度和可扩展性,以支持他们的 pandas 工作流程:

import pandas as pd
import modin.pandas as pd

  • github : https://github.com/modin-project/modin
  • 官方文档:https://modin.readthedocs.io/en/latest/
  • Stack over flow : https://stackoverflow.com/questions/tagged/modin
  • SLACK : https://join.slack.com/t/modin-project/shared_invite/zt-yvk5hr3b-f08p_ulbuRWsAfg9rMY3uA
  • Twitter : https://twitter.com/modin_project

下图显示了根据上述示例用Modin替换pandas所获得的加速。示例笔记本可以在此处找到。

要了解更多关于Modin的加速效果,并自己尝试一些示例,请查看我们的10分钟快速入门指南自己尝试一些例子!

在这里插入图片描述


二、安装


1、使用 PyPI

Modin 可以使用 pip 在 Linux、Windows 和 MacOS 上进行安装:

pip install "modin[all]" # (Recommended) Install Modin with Ray and Dask engines.

如果您想使用特定引擎安装 Modin,我们推荐:

pip install "modin[ray]" # Install Modin dependencies and Ray.
pip install "modin[dask]" # Install Modin dependencies and Dask.
pip install "modin[mpi]" # Install Modin dependencies and MPI through unidist.

要通过unidist(从unidist 0.5.0开始)使Modin在MPI上完全工作,需要事先安装一个可工作的MPI实现。

否则,modin[mpi] 的安装可能会失败。请参阅 使用pip安装 部分了解有关安装的更多详细信息。

注意: 自Modin 0.30.0以来,我们使用了一组减少的Ray依赖关系:Ray而不是Ray[default]。这意味着默认情况下不再安装仪表板和集群启动器。如果你需要这些,可以考虑安装ray[default]modin[ray]

Modin会自动检测您安装的引擎,并将其用于调度计算。


2、 conda-forge

从 conda forge 使用 modin-all 安装
将安装 Modin 和三个引擎:Ray, Dask 和
通过 unidist 使用 MPI.

conda install -c conda-forge modin-all

每个引擎也可以单独安装(也可以作为几个引擎的组合进行安装):

conda install -c conda-forge modin-ray  # Install Modin dependencies and Ray.
conda install -c conda-forge modin-dask # Install Modin dependencies and Dask.
conda install -c conda-forge modin-mpi # Install Modin dependencies and MPI through unidist.

注意: 自 Modin 0.30.0 版本起,我们使用了一个更少的 Ray 依赖集:ray-core 而不是 ray-default
这意味着仪表板和集群启动器不再默认安装。
如果您需要这些,请考虑安装 ray-defaultmodin-ray
参考:使用 conda 安装


关于如何在特定系统上运行如何安装特定MPI实现的详细信息,请参阅unidist文档的相应部分。
为了加快 conda 安装速度,我们建议使用 libmamba 求解器。为此,在基础环境中安装它:

conda install -n base conda-libmamba-solver

然后在使用安装程 序时,可以像这样使用:

conda install -c conda-forge modin-ray --experimental-solver=libmamba

或从 conda 22.11 和 libmamba solver 22.12 版本开始:

conda install -c conda-forge modin-ray --solver=libmamba

3、选择计算引擎

如果您想选择特定的计算引擎来运行,您可以为环境设置
变量 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 modin.config as modin_cfg
import unidist.config as unidist_cfg

modin_cfg.Engine.put("ray")  # Modin will use Ray
modin_cfg.Engine.put("dask")  # Modin will use Dask

modin_cfg.Engine.put('unidist') # Modin will use Unidist
unidist_cfg.Backend.put('mpi') # Unidist will use MPI backend

注意:您在使用 Modin 进行首次操作后不应更改引擎,因为这会导致未定义的行为。


4、我应该使用哪个引擎?

在 Linux、MacOS 和 Windows 上,您可以通过 unidist 安装并使用 Ray、Dask 或 MPI。

使用这些引擎无需任何知识,因为 Modin 隐藏了所有复杂性,所以任意选择任何一个!


三、Pandas API 覆盖范围

pandas 对象Modin 的 Ray 引擎覆盖范围Modin 的 Dask 引擎覆盖范围Modin 的 Unidist 引擎覆盖范围
pd.DataFrameapi coverage 90.8%api coverage 90.8%api coverage 90.8%
pd.Seriesapi coverage 88.05%api coverage 88.05%api coverage 88.05%
pd.read_csv
pd.read_table
pd.read_parquet
pd.read_sql
pd.read_feather
pd.read_excel
pd.read_json✳️✳️✳️
pd.read_<other>✴️✴️✴️

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

注意:在本地模式(没有集群)下,Modin将为执行创建和管理本地(Dask或Ray)集群

要使用Modin,您不需要指定如何分发数据,甚至不需要知道您的系统有多少内核。
事实上,即使在一台机器上,您也可以继续使用之前的pandas笔记本电脑,同时体验到Modin的显著加速。
一旦您更改了导入语句,您就可以像使用pandas一样使用Modin了!


更快的 pandas,甚至在你的笔记本电脑上

在这里插入图片描述

modin.pandas DataFrame是一个极其轻量级的并行DataFrame。

Modin透明地分发数据和计算,以便您可以继续使用相同的pandas API,同时更快地处理更多数据。由于重量轻,Modin在具有4个物理内核的笔记本电脑上提供了高达4倍的速度。

在pandas中,当你进行任何类型的计算时,一次只能使用一个核心。使用Modin,您可以使用计算机上的所有CPU内核。
即使是像 read_csv 这样的传统同步任务,通过在整个机器上有效地分配工作,我们也会看到巨大的加速。

import modin.pandas as pd

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

Modin可以处理pandas无法处理的数据集

数据科学家经常需要在不同的工具之间切换,以便对不同大小的数据集进行操作。

使用pandas处理大型数据帧很慢,并且pandas不支持处理太大而无法放入可用内存的数据帧。

因此,在几MB数据上进行原型设计的pandas工作流不会扩展到数十或数百GB(取决于您的机器大小)。

Modin支持对不适合内存的数据进行操作,因此您可以轻松地处理数百GB的数据,而不必担心速度大幅减慢或内存错误。

使用 集群 和核心外 支持,Modin是一个DataFrame库,在集群中具有出色的单节点性能和高可扩展性。


Modin 架构

我们设计了 Modin 的架构 以便模块化,这样我们就可以在它们发展和改进时插入不同的组件:
在这里插入图片描述


四、其他资源


使用 Modin 入门
  • 文档
  • 10分钟快速入门指南
  • 示例和教程
  • 视频和博客文章
  • 基准测试 Modin

Modin 社区
  • Slack
  • Twitter
  • 邮件列表
  • GitHub 问题
  • StackOverflow

了解更多关于 Modin 的信息
  • 常见问题解答 (FAQs)
  • 故障排除指南
  • 开发指南
  • Modin 是在加州大学伯克利分校多年研究和开发的基础上构建的。查看以下精选论文,了解 Modin 的工作原理:
    • Flexible Rule-Based Decomposition and Metadata Independence in Modin (VLDB 2021)
    • Dataframe Systems: Theory, Architecture, and Implementation (PhD Dissertation 2021)
    • Towards Scalable Dataframe Systems (VLDB 2020)

2025-03-30(日)

相关文章:

  • 搜索-BFS
  • 【数据结构】优先级队列(堆) —— PriorityQueue
  • SKBD(Scorpion-Killer) Linux-SSH长期隐藏后门持久化控制注入工具
  • 如何设置动态代理提高Python爬虫稳定性?
  • 模块化开发实战:解剖module-info.java的8个关键场景
  • Jmeter中的身份认证:cookie和token
  • Linux系统中快速安装docker
  • github匿名链接获取方法
  • 深度学习处理文本(1)
  • 深入理解MySQL索引:从二叉搜索树到B+Tree
  • STM32-DMA
  • opencv python的 Canny findContours得到两个非常接近的轮廓,角点有几个像素的差距,如何处理?
  • Java学习笔记1——编程基础
  • 终值定理的推导与理解
  • <em>乐</em><em>发</em><em>V</em><em>Ⅱ</em><em>彩</em><em>票</em>
  • 在MCU工程中优化CPU工作效率的几种方法
  • 变量1(WEB)
  • dart错误记录
  • 高项第十六章——项目采购管理
  • word-spacing 属性