Modin 初探 Modin 是一款强大的分布式数据处理库,让你的 pandas 运行更加迅速,尤其是在面对巨大数据集时表现更加出色。 项目地址:https://github.com/modin-project/modin 安装 Modin Modin 的安装过程简单明了。 对于绝大多数用户来说,通过 pip 即可完成安装: pip install modin[all] # 推荐方式,安装 Modin 并包含 Ray 和Dask 引擎 你也可以选择安装包含特定引擎的 Modin : pip install modin[ray] # 仅安装 Modin 依赖和 Ray 引擎 pip install modin[dask] # 仅安装 Modin 依赖和 Dask 引擎 主要特征 选择计算引擎 Modin 支持通过设置环境变量 MODIN_ENGINE 来选择特定计算引擎。
------------------------------------------------- File Name : example Description : AIM: modin Functions : Envs : python == 3.6 pip install modin pandas ray
Modin 提供了一个优化 Pandas 的解决方案,这样数据科学家就可以把时间花在从数据中提取价值上,而不是花在提取数据的工具上。 Modin ? 安装 Modin 是完全开源的,可以通过下面的 GitHub 链接获得: https://github.com/modin-project/modin 我们可以使用如下所示的 PyPi 指令来安装 Modin : pip install modin 在 Windows 环境下,Ray 是安装 Modin 所需的依赖之一。 Pandas 和 Modin 对 CPU 内核的使用情况 从本质上讲,Modin 所做的只是增加了 CPU 所有内核的利用率,从而提供了更好的性能。 modin 的一般架构 在 Modin 中实现 Pandas API pandas 有大量的 API,这可能也是它应用如此广泛的原因之一。 ?
本文会解释何时该用Modin处理数据,并给出Modin的一些真实案例。 下文内容主要包括: 为什么需要Modin? Modin厉害在哪里? Modin使用方法 对比Modin和Pandas 对比Modin和其他加速库有何不同? Modin VS Vaex Modin VS Dask Modin VS cuDF 为什么需要Modin? Modin就是这样一个存在。只要你有使用Pandas的经验,就可以轻松上手Modin。 Modin厉害在哪里? ; Modin使用方法 首先要安装Modin,使用pip安装即可。 前面说过,Modin使用Ray或Dask作为后端,在这里我们使用 dask,命令行输入以下代码同时安装Modin和Dask: pip install modin[dask] 接下来是导入Modin,
本文要介绍的工具modin就是一个致力于在改变代码量最少的前提下,调用起多核计算资源,对pandas的计算过程进行并行化改造的Python库,并且随着其近期的一系列内容更新,modin基于Dask开始对 图1 2 基于modin的pandas运算加速 modin支持Windows、Linux以及Mac系统,其中Linux与Mac平台版本的modin工作时可基于并行运算框架Ray和Dask,而Windows 平台版本目前只支持Dask作为计算后端(因为Ray没有Win版本),安装起来十分方便,可以用如下3种命令来安装具有不同后端的modin: pip install modin[dask] # 安装dask 系统上演示modin的功能,执行命令: pip install modin[all] 成功安装modin+dask之后,在使用modin时,只需要将我们习惯的import pandas as pd变更为 对于这部分功能,modin会在执行代码时检查自己是否支持,对于尚未支持的功能modin会自动切换到pandas单核后端来执行运算,但由于modin中组织数据的形式与pandas不相同,所以中间需要经历转换
本文要介绍的工具modin就是一个致力于在改变代码量最少的前提下,调用起多核计算资源,对pandas的计算过程进行并行化改造的Python库,并且随着其近期的一系列内容更新,modin基于Dask开始对 图1 2 基于modin的pandas运算加速 modin支持Windows、Linux以及Mac系统,其中Linux与Mac平台版本的modin工作时可基于并行运算框架Ray和Dask,而Windows 系统上演示modin的功能,执行命令: pip install modin[all] 成功安装modin+dask之后,在使用modin时,只需要将我们习惯的import pandas as pd变更为 对于这部分功能,modin会在执行代码时检查自己是否支持,对于尚未支持的功能modin会自动切换到pandas单核后端来执行运算,但由于modin中组织数据的形式与pandas不相同,所以中间需要经历转换 modin还处于快速开发阶段,很多目前无法支持的功能也许未来不久就会被加入modin: 图9 以上就是本文的全部内容,如有疑问欢迎在评论区与我讨论。
了解一下新的库 Modin,Modin 是为了分布式 panda 的计算来加速你的数据准备而开发的。 Pandas是处理 Python 数据的首选库。 这正是 Modin 所做的。它将 DataFrame 分割成不同的部分,这样每个部分都可以发送到不同的 CPU 核。Modin 在行和列之间划分 DataFrame。 Modin 速度基准测试 安装 Modin 的最简单的方法是通过 pip。 下表显示了我进行的一些实验中 panda 与 Modin 的运行时间。 正如你所看到的,在某些操作中,Modin 要快得多,通常是读取数据并查找值。 我们可以通过 Ray 中的初始化设置来限制 Modin 可以访问的 CPU 内核的数量,因为 Modin 在后端使用它。
使用它可以很好的突破操作优化上的瓶颈,而这个工具就是Modin。 Modin存在的意义就是:更改一行代码来提速pandas工作流程。 Modin对优化pandas提供了解决方案,以便数据科学家可以花更多时间从数据中提取价值,而不是在工具上。 Modin ? 安装 Modin是完全开源的,可以在GitHub上找到: https://github.com/modin-project/modin Modin可以从PyPI安装: pip install modin pandas vs modin CPU核使用对比 modin所做的基本上就是增加了CPU所有内核的利用率,从而提供了更好的性能。 在一个更大型机器上 在大型机器上,modin的有利用率变得更加明显。 可能很难看到绿色条纹,因为modin的运行时间非常短。 Modin的架构 我们来看看Modin的架构。
我们将看一下Dask,Vaex,PySpark,Modin(全部使用python)和Julia。 Modin 在结束有关Pandas替代品的讨论之前,我必须提到Modin库。它的作者声称,modin利用并行性来加快80%的Pandas功能。不幸的是,目前没发现作者声称的速度提升。 并且有时在初始化Modin库导入命令期间会中断。 有一些情况,modin提示:“not supported, defaulting to pandas”,然后该操作终崩溃了,只剩下4个python进程,每个进程都占用大量内存。 我喜欢modin背后的想法,我希望有一天能够弥补这些差距,从而使modin提升为值得考虑的替代方案。
了解一下新的库 Modin,Modin 是为了分布式 panda 的计算来加速你的数据准备而开发的。 Pandas是处理 Python 数据的首选库。 这正是 Modin 所做的。它将 DataFrame 分割成不同的部分,这样每个部分都可以发送到不同的 CPU 核。Modin 在行和列之间划分 DataFrame。 Modin 速度基准测试 安装 Modin 的最简单的方法是通过 pip。 下表显示了我进行的一些实验中 panda 与 Modin 的运行时间。 正如你所看到的,在某些操作中,Modin 要快得多,通常是读取数据并查找值。 我们可以通过 Ray 中的初始化设置来限制 Modin 可以访问的 CPU 内核的数量,因为 Modin 在后端使用它。
基准测试Modin的速度 pip是安装Modin最简单的方法。 代码在Pandas和Modin中都是一样的。 Pandas和Modin中的pd.concat()函数能很好实现这一操作。 预计Modin能在这类操作中表现很好,因为这项任务涉及的数据量很大。代码如下。 Modin实用技巧 Modin还是相对比较新的库,还在开发扩展中。所以并不是所有Pandas函数都能在Modin中得以实现。 如果想把一部分CPU用到别的地方,可以通过Ray的初始设定来设置Modin的权限,因为Modin会在后端使用Ray这个工具。
环境配置pip install snowflake-snowpark-python[modin]注意:需Python 3.9+,Modin 0.28.1+和Pandas 2.2.1+2. 数据加载与操作import modin.pandas as pdimport snowflake.snowpark.modin.plugin# 读取数据df = pd.read_snowflake('< filtered_df = df[df['column_name'] > 100]# 数据回写df.to_snowflake('<your_table>', overwrite=True)架构设计客户端层:Modin
对比python中的datatable、pandas、dask、cuDF、modin,R中data.table以及spark、clickhouse 3. modin.pandas vs data.table modin.pandas与data.table测试结果如下,所用数据5G,数据格式如上。 1.读取 data.table用时89秒,内存峰值消耗7G modin.pandas用时58秒,内存峰值消耗25G 本测试所用的是modin[ray],似乎modin.pandas一直有内存管理的问题, 参考: 1.1 Fundamental memory leak in Modin:https://url.cn/5HlosKF 1.2 modin read big csv failed:https:/ (id4, id5)] modin用时174秒,由于modin暂不支持多列的groupby,实际上还是用的pandas的groupby x.groupby([‘id4’,‘id5’]).agg({‘v3
用 Modin! Modin 是一个 Python 模块,能够通过更好地利用你的硬件来增强 Pandas 的功能。 Modin DataFrames 不需要任何额外的代码,在大多数情况下会将你对 DataFrames 所做的一切加速 3 倍或更多。 Modin 的作用更多的是作为一个插件而不是一个库来使用,因为它使用 Pandas 作为后备,不能单独使用。 Modin 的目标是悄悄地增强 Pandas,让你在不学习新库的情况下继续工作。 大多数人需要的唯一一行代码是 import modin.pandas as pd 来取代你正常的 import pandas as pd,但如果你想了解更多,请查看这里的文档(https://modin.readthedocs.io 为了避免重新创建已经完成的测试,我从 Modin 文档中加入了这张图片,展示了它在标准笔记本上对 read_csv() 函数的加速作用。
import pandas as pd import swifter df.swifter.apply(lambda x: x.sum() - x.min()) 7、Modin Modin后端使用dask pip install modin import pandas import modin.pandas as pd import time ## pandas pandas_df = pandas.DataFrame = pd.concat([modin_df for _ in range(25)]) end = time.time() modin_duration = end - start print("Time to concat with Modin: {} seconds".format(round(modin_duration, 3))) print("Modin is {}x faster than format(round(pandas_duration / modin_duration, 2)))
Modin Modin是一个多进程的Dataframe库,可以加速Pandas的工作流程。多进程意味着,如果在多核的计算机上查询速度就会成倍的提升。 Modin具有与pandas相同的API,使用上只需在import导入时修改一下,其余操作一模一样。 # 导入 modin pandas import modin.pandas as pd 原理、安装、使用可参考这篇:pandas慢怎么办?来试试Modin 3.
3.modin:使用所有可用的CPU核来运行pandas,基本上是pandas的替代品。 安装库 使用pip命令在终端安装: pip install polars pip install datatable pip install modin[all] 测试情况 使用pandas作为基准性能指标 1.polars库在所有测试中都获胜,但apply函数除外,这里modin更快。 2.modin在apply和concat函数中非常快,但在其他函数中非常慢。 值得注意的是,在许多测试(merge、filter、groupby等)中,modin比Panda慢。 3.Datatable在进行简单的列计算时并不差,而且速度非常快。
7、Modin 注意:Modin现在还在测试阶段。 pandas是单线程的,但Modin可以通过缩放pandas来加快工作流程,它在较大的数据集上工作得特别好,因为在这些数据集上,pandas会变得非常缓慢或内存占用过大导致OOM。 ! pip install modin[all] import modin.pandas as pd df = pd.read_csv("my_dataset.csv") 以下是modin官网的架构图,有兴趣的研究把
大数据集有大数据集的处理手段,有不少类pandas的替代加速库可以使用,比如polars、dash、modin、cudf等,它们采用并行计算、分布式或者硬件加速的方式来加快数据处理速度。 而且它们大多是用pandas的接口,函数、方法和pandas类似,切换的学习成本很低,比如Polars、Modin、cuDF。 那什么场景下使用对应的数据处理库呢? 就像之前说的,小数据集或者快速验证的数据可以用pandas,单机处理中大数据集用Polars或Modin,分布式处理超大数据集用Dask,有GPU加速用cuDF,复杂查询则用DuckDB。
NumPy Pandas Matplotlib Datacleaner Dora Seaborn Arrow Scrubadub Tabulate Missingno Modin Ftfy SciPy 它逐列识别和可视化 DataFrame 中的缺失值,以便用户可以看到他们数据所处的状态 将问题可视化是解决问题的第一步,而 Missingno 是一个简单易用的库,可以很好的完成这项工作 Modin 正如我们上面提到的 ,Pandas 已经是一个快速的库了,但 Modin 将 Pandas 带到一个全新的水平。 Modin 通过分发数据和计算速度来提高 Pandas 的性能 Modin 用户将受益于与 Pandas 语法的完美契合和不显眼的集成,可以将 Pandas 的速度提高多达 400%!