当前位置:

首页 > 软件教程 > 想让Pandas更快?试试Modin加速!

想让Pandas更快?试试Modin加速!

选自towardsdatascience作者:ParulPandey机器之心编译参与:GeekAI、Chita「通过更改一行代码扩展你的pandas工作流。」Pandas是数据科学领域的专业人员所熟知的库。它提供了高性能且易于使用的结构和数据分析工具。然而,当处理超大数据集时,单核运行的Pandas性能会大打折扣,用户不得不转向不同的分布式系统来提升性能。然而,为了提升性能而进行的这种权衡会带来陡峭的学习曲线。实际上,用户只希望Pandas运行得更快,而不是为特定的硬件设置调整他们的工

选自towardsdatascience

作者: Parul Pandey

机器之心编译

参与:Geek AI、Chita

想让pandas运行更快吗?那就用Modin吧「通过更改一行代码扩展你的 pandas 工作流。」

Pandas 是数据科学领域的专业人员所熟知的库。它提供了高性能且易于使用的结构和数据分析工具。然而,当处理超大数据集时,单核运行的 Pandas 性能会大打折扣,用户不得不转向不同的分布式系统来提升性能。然而,为了提升性能而进行的这种权衡会带来陡峭的学习曲线。

实际上,用户只希望 Pandas 运行得更快,而不是为特定的硬件设置调整他们的工作流程。这意味着人们希望在处理 10KB 和 10TB 的数据集时,可以使用相同的 Pandas 脚本。Modin 提供了一个优化 Pandas 的解决方案,使数据科学家能够专注于从数据中提取价值,而不是专注于处理数据的工具。

Modin

想让pandas运行更快吗?那就用Modin吧Modin 是加州大学伯克利分校 RISELab 的一个早期项目,旨在推动分布式计算在数据科学领域的应用。它是一个多进程的数据框架(Dataframe)库,具有与 Pandas 相同的应用程序接口(API),使用户能够加速他们的 Pandas 工作流程。

在一台 8 核的机器上,用户只需修改一行代码,Modin 就能将 Pandas 查询任务加速 4 倍。

该系统是为希望程序运行得更快、扩展性更强,而无需进行重大代码更改的 Pandas 用户设计的。这项工作的最终目标是能够在云环境中使用 Pandas。

安装

Modin 是完全开源的,可以通过下面的 GitHub 链接获得:

https://github.com/modin-project/modin

我们可以使用如下所示的 PyPi 指令来安装 Modin:

pip install modin

在 Windows 环境下,Ray 是安装 Modin 所需的依赖之一。Windows 本身并不支持 Ray,因此为了安装它,用户需要使用 WSL(适用于 Linux 的 Windows 子系统)。

Modin 如何加速数据处理过程

在笔记本上

在具有 4 个 CPU 核心的现代笔记本上处理适合该机器的数据框架时,Pandas 只使用了 1 个 CPU 核心,而 Modin 能够利用全部 4 个核心。

想让pandas运行更快吗?那就用Modin吧Pandas 和 Modin 对 CPU 核心的使用情况

从本质上讲,Modin 所做的只是增加了 CPU 所有核心的利用率,从而提供了更好的性能。

在大型机器上

在大型机器上,Modin 的作用就变得更加明显了。假设我们有一台服务器或一台非常强大的机器,Pandas 仍然只会利用一个核心,而 Modin 会使用所有的核心。下图显示了在一台拥有 144 核心的计算机上通过 Pandas 和 Modin 使用「read_csv」函数的性能对比情况:

想让pandas运行更快吗?那就用Modin吧Pandas 的运行时间会随着数据量的变化而线性增长,因为它仅仅使用 1 个核心。而从上图中可能很难看到绿色条形图的增长,因为 Modin 的运行时间实在太短了。

通常,Modin 使用「read_csv」函数读取 2G 数据需要 2 秒,而读取 18G 数据大约需要不到 18 秒。

架构

接下来,本文将解析 Modin 的架构。

数据框架分区

Modin 对数据框架的分区模式是沿着列和行同时进行划分的,因为这样为 Modin 在支持的列数和行数上都提供了灵活性和可扩展性。

想让pandas运行更快吗?那就用Modin吧系统架构

Modin 被分为不同的层:

Pandas API 在最顶层暴露给用户。下一层为查询编译器,它接收来自 Pandas API 层的查询并执行某些优化。最后一层为分区管理器(Partition Manager),负责数据布局并对发送到每个分区的任务进行重组、分区和序列化。想让pandas运行更快吗?那就用Modin吧modin 的一般架构

在 Modin 中实现 Pandas API

pandas 拥有大量的 API,这可能是它应用如此广泛的原因之一。

想让pandas运行更快吗?那就用Modin吧pandas API

由于 Pandas 具有这么多种操作,Modin 采用了一种数据驱动的策略。也就是说,Modin 的创造者找出了人们最常用的 Pandas 操作。他们研究了 Kaggle 平台上的 Pandas 使用数据,对上面所有的 notebook 和脚本进行了分析,最终总结出最受欢迎的 Pandas 方法如下:

想让pandas运行更快吗?那就用Modin吧「pd.read_CSV」是目前最常用的 Pandas 方法,其次是「pd.Dataframe」方法。因此,在 Modin 中,设计者们开始实现一些 Pandas 操作,并按照它们受欢迎程度从高到低的顺序进行优化:

目前,Modin 支持大约 71% 的 Pandas API。根据研究,这代表了 93% 的使用场景。Ray

Modin 利用 Ray 以无缝的方式加速 Pandas 的 notebook、脚本和库。Ray 是一个针对大规模机器学习和强化学习应用的高性能分布式执行框架。相同的代码可以在单台机器上运行以实现高效的多进程,也可以在集群上用于大型计算。你可以通过下面的 GitHub 链接获取 Ray:http://github.com/ray-project/ray。

使用方法

导入

Modin 封装了 Pandas,并透明地分发数据和计算任务,它通过修改一行代码就加速了 Pandas 的工作流程。用户可以继续使用以前的 Pandas notebook,同时体验 Modin 带来的显著加速,甚至在一台机器上。用户需要做的只是修改导入程序包的声明,引入「modin.pandas」而不是「pandas」。

import numpy as np
import modin.pandas as pd

想让pandas运行更快吗?那就用Modin吧我们将使用 Numpy 构建一个由随机整数组成的简单数据集。请注意,我们并不需要在这里指定分区。

data = np.random.randint(0,100,size = (2**16, 2**4))
df = pd.DataFrame(data)
df = df.add_prefix("Col:")

当我们将数据的类型打印在屏幕上时,会显示出「Modin 数据框架」。

type(df)
modin.pandas.dataframe.DataFrame

如果我们使用「head」命令打印出前五行数据,它会像 Pandas 一样显示出 HTML 表单。

df.head()

想让pandas运行更快吗?那就用Modin吧对比实验

Modin 会管理数据分区和重组,从而使用户能够将注意力集中于从数据中提取出价值。下面的代码是在一台 2013 年的拥有 4 个 CPU 核心和 32 GB RAM 内存的 iMac 机器上运行的。

pd.read_csv

「read_csv」是目前为止最常用的 Pandas 操作。接下来,本文将对分别在 Pandas 和 Modin 环境下使用「read_csv」函数的性能进行一个简单的对比。

pandas

%%time
import pandas
pandas_csv_data = pandas.read_csv("../800MB.csv")
-----------------------------------------------------------------
CPU times: user 26.3 s, sys: 3.14 s, total: 29.4s
Wall time: 29.5 s

Modin

%%time
modin_csv_data = pd.read_csv("../750MB.csv")
-----------------------------------------------------------------
CPU times: user 76.7 ms, sys: 5.08 ms, total: 81.8 ms
Wall time: 7.6 s

通过使用 Modin,只需要修改导入声明就可以在一台 4 核机器上以普通 Pandas 4 倍的速度执行「read_csv」操作。

df.groupby

Pandas 的「groupby」聚合函数底层编写得非常好,运行速度非常快。但是即使如此,Modin 的性能也比 Pandas 要好。

Pandas

%%time
import pandas
_ = pandas_csv_data.groupby(by=pandas_csv_data.col_1).sum()
-----------------------------------------------------------------
CPU times: user 5.98 s, sys: 1.77 s, total: 7.75 s
Wall time: 7.74 s

modin

%%time
results = modin_csv_data.groupby(by=modin_csv_data.col_1).sum()
-----------------------------------------------------------------
CPU times: user 3.18 s, sys: 42.2 ms, total: 3.23 s
Wall time: 7.3 s

Pandas 实现的默认设置

如果想要使用尚未实现或优化的 Pandas API,实际上可以使用默认的 Pandas API。这使得该系统可以用于使用 Modin 中尚未实现操作的 notebook 中(尽管由于即将使用 Pandas API,性能会有所下降)。当使用默认的 Pandas API 时,你将看到一个警告:

dot_df = df.dot(df.T)

想让pandas运行更快吗?那就用Modin吧当计算完成后,该操作会返回一个分布式的 Modin 数据框架。

type(dot_df)
-----------------
modin.pandas.dataframe.DataFrame

结语

Modin 项目仍处于早期阶段,但对 Pandas 来说是一个非常有发展前景的补充。Modin 为用户处理所有的数据分区和重组任务,这样我们就可以集中精力处理工作流程。Modin 的基本目标是让用户能够在小数据和大数据上使用相同的工具,而不用考虑改变 API 来适应不同的数据规模。

原文链接:https://towardsdatascience.com/get-faster-pandas-with-modin-even-on-your-laptops-b527a2eeda74

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
软件教程 API
相关文章 更多
PicHound安装配置详细教程与操作步骤
PicHound安装配置详细教程与操作步骤

详解 PicHound 扩展在 Chrome 等浏览器中的安装步骤、图标固定方法、站点访问权限设置及图片查找技巧,解决无法识别或加载缓慢等常见问题。

microsoft浏览器怎么设置默认主页操作教程
microsoft浏览器怎么设置默认主页操作教程

详细图解 Microsoft Edge 浏览器中启动行为、主页按钮及新标签页的设置方法。厘清三者区别,提供准确的菜单路径与检查步骤,解决浏览器首页设置混淆问题。

PixTV新手入门:从注册到生成第一部AI漫剧的完整流程
PixTV新手入门:从注册到生成第一部AI漫剧的完整流程

零基础学习如何使用PixTV制作AI漫剧。涵盖账号注册、画布创建、脚本拆解、角色设定、分镜生成及音视频剪辑导出的完整步骤,帮助新手快速掌握节点式创作工具的核心用法。

quicker软件怎么用新手入门操作教程详解
quicker软件怎么用新手入门操作教程详解

详解 Quicker 软件基础用法,包括如何唤出动作面板、创建基于选中文本的搜索动作、管理场景与分组,以及配置专属动作快捷键,提升 Windows 办公效率。

charles配置https证书与抓包设置教程
charles配置https证书与抓包设置教程

详解Windows下Charles HTTPS抓包配置:包括根证书安装信任、SSL Proxying主机设置、浏览器验证及移动端差异处理,确保开发者安全高效地调试加密流量。

爱贝壳内容同步助手怎么关闭功能操作教程
爱贝壳内容同步助手怎么关闭功能操作教程

想知道如何关闭爱贝壳内容同步助手?本教程详解在Chrome和Edge浏览器中停用扩展、限制网页权限及彻底卸载的步骤,帮助你安全暂停同步任务并检查浏览器状态。

vidhub文件源打开慢怎么解决的实用教程
vidhub文件源打开慢怎么解决的实用教程

VidHub添加SMB或WebDAV文件源后加载缓慢?本文详解如何区分媒体库扫描慢与视频播放卡,通过精简扫描路径、验证网络权限及本地下载对比,快速解决文件源响应延迟问题。

reqable全局变量设置在哪里完整操作教程
reqable全局变量设置在哪里完整操作教程

想知道Reqable全局变量设置在哪里?本教程详解环境变量入口位置、全局与自定义环境的区别、变量引用方法及安全检查步骤,助你轻松管理API调试配置。

jmcomic3漫画官网下载安装包下载与使用指南
jmcomic3漫画官网下载安装包下载与使用指南

面向寻找高清无广告漫画资源的读者,jmcomic3漫画app(https://www.jmmanhua.top/)提供海量精品内容与智能推荐。针对用户关心的隐私保护及阅读卡顿问题,本文详解如何通过隐私设置隐藏收藏记录,并从设备内存、网络信号及线路切换三个维度排查加载故障,助您获得流畅纯净的沉浸式阅读体验。

skyvern在windows上使用教程及详细操作步骤
skyvern在windows上使用教程及详细操作步骤

详解如何在Windows环境下使用Docker Compose部署Skyvern。包括LLM密钥配置、本地Web界面登录、API连接检查及首个浏览器自动化任务创建步骤,适合初学者快速上手。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
WPS Office macOS版
WPS Office macOS版
macOS

WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,

Shapr3D macOS版
Shapr3D macOS版
Mac

Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

REAPER macOS版
REAPER macOS版
Mac

REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

WINDOWS 更多
Adobe Photoshop Windows版
Adobe Photoshop Windows版
Windows

Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许

Adobe InDesign Windows版
Adobe InDesign Windows版
Windows

Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator

Adobe Illustrator Windows版
Adobe Illustrator Windows版
Windows

Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。