极速五分快三-首页 - 极速五分快三是中国最大的个人和企业IT产品选购、互动网站,每日提供最新的IT产品报价、促销行情、手机、平板、笔记本、相机和企业等50个频道提供最专业的产品新闻和。极速五分快三使用建议

如何只用一行代码让 Pandas 加速四倍?

  • 时间:
  • 浏览:20

Modin 还是有二个多非常新的库,开发和扩展也有不断进行中。那么来那么多那么来那么多那么来那么多那么来那么多,也有所有的 Pandas 函数都得到了全版加速。机会你使用了 Modin 中还那么加速的函数,它会默认使用 Pandas 函数版本,那么来那么多那么来那么多那么来那么多那么来那么多那么 就不必产生任何 bug 机会错误。想查看 Modin 中支持的 Pandas 函数加速的全版列表,请浏览该页面。

当防止大数据时,通常情形下,数据集的大小不必超出系统内存(RAM)的大小。可是我我我,Modin 还有二个多多很糙的标记,通过把你你你这个标记设置为 true,大伙儿儿前要启动核外(out of core)模式。核外模式是指当内存缺陷用时,Modin 会使用硬盘空间,那么 就使你会防止比内存大小更大的数据集。大伙儿儿设置如下的环境变量来开启你你你这个功能:

或多或少情形下,Pandas 实际上会比 Modin 运行得更慢,即使在你你你这个有着 5,992,097(几乎 2000 万)行的大数据集上。下面表格展示了 Pandas 和 Modin 在或多或少实验上的运行时间。

多核系统怎么加速防止数据。左图:单核防止土辦法 ,10 个任务都由单个计算节点防止。右图:双核防止土辦法 ,每个节点防止 5 个任务,于是防止带宽就加倍了。

Pandas 是 Python 中防止数据的首选库,它使用起来很容易,非常灵活,不必 防止不例如型和大小的数据,可是我我我它有少量的函数,这让操作数据着实 是小菜一碟。

说到这里,理论部分机会介绍得足够多啦。让大伙儿儿来看看代码和性能的基准测试吧!

默认情形下,Modin 会使用你的机器上所有可用的 CPU 核。机会或多或少情形下,你希望限制 Modin 使用的 CPU 核数量,很糙是当你还想在别的地方使用哪十几次 核的算力的但是 。大伙儿儿前要通过 Ray 模块中的初始化设置来限制 Modin 能使用的 CPU 核数量,机会 Modin 会在后台使用 Ray 配置。

可是我我我,大多数用于数据科学的现代化机器都要花费有 2 个 CPU 核,这愿因,在有 2 个 CPU 核的机器上,使用 Pandas 的默认配置时,要花费有 200% 的计算机算力都被闲置了。机会你有 4 个核(现代的 Intel i5)机会 6 个核(现代的 Intel i7),情形那就更糟糕了,机会 Pandas 就也有为有效利用多核算力而设计的。

这正是 Modin 所采用的土辦法 ,它把数据帧切割成不同部分,每个部分也有被送到不同的 CPU 核。Modin 会同去从行和列有二个多维度对数据帧切分。这使得 Modin 的并行防止前要适应任何形态学 的数据帧。

给 Modin 性能做基准测试

预警以及最后的基准测试

为了在执行并行防止时完成少量繁重的工作,Modin 前要使用 Dask 机会 Ray 。你你你这个个多库也有用 Python API 写的并行计算库,你会在运行时选折 其一与 Modin 同去使用。Ray 是目前为止最安全的,机会它更加稳定——而 Dask 后端还是实验性质的。

安装和运行 Modin 最简单的土辦法 是通过 pip 来进行。以下命令用来安装 Modin、Ray 以及所有相关依赖。

可是我我我 Modin 时不时那么快吗?

好了,你机会掌握了 Modin 模块!这是一篇 Modin 加速 Pandas 函数的使用指南。只前要修改 import 导入说说即可实现加速。希望要花费在或多或少情形下,你会发现 Modin 对加速 Pandas 函数有所帮助。

想象一下你你你这个例子,你有二个多多数据帧,它有那么来那么多那么来那么多那么来那么多那么来那么多列,却不必 寥寥几行。或多或少库只会在行你你你这个维度做切分,在你你你这个例子中并行度就缺陷了,机会大伙儿儿的列数大于行数。可是我我我有了 Modin,机会它会在有二个多维度进行切分,那么来那么多那么来那么多那么来那么多那么来那么多不管数据帧是宽的(列数较多)还是长条形的(行数较多),机会两类情形兼具时,其对哪十几次 数据帧的并行防止就都很高效了。

Modin 是新出的有二个多库,通过自动化地将计算分布到系统所有可用的 CPU 核上,来加速 Pandas。Modin 宣称,通过你你你这个技术,对于任何大小的 Pandas 数据帧,它都不必 获得和系统 CPU 核数几乎成正比的性能增长。

Pandas 数据帧(左图)作为整块存储,且只发送到有二个多 CPU 核。Modin 数据帧(右图)在行和列方向上被切分成了小块,每块前要被发送到不同的 CPU 核(可发送到的核数取决于系统中最大核数)。

https://stackoverflow.blog/2017/09/14/python-growing-quickly/

Modin 是怎么用 Pandas 做并行防止的

嗯,着实何必 时不时那么快。

策划丨蔡芳芳

理论上讲,并行计是是否是很容易的,只前要把数据集不同部分的计算应用到每个可用的 CPU 核上。对于 Pandas 的数据帧,基本的想法可是我我我把你你你这个数据帧分成好十几次 ,块数和你机器上的 CPU 核数量相等,让每有二个多 CPU 核计算其中一块。最后,大伙儿儿再把计算结果汇总,你你你这个汇总操作计算量何必 大。

以上代码中,大伙儿儿将有二个多数据帧克隆qq好友好友了 5 次进行连接。Pandas 前要在 3.56 秒内完成你你你这个连接操作,而 Modin 只花了 0.041 秒,Modin 实现了 86.83 倍的加速!看起来即使大伙儿儿不必 6 个 CPU 核,数据帧的分块对加速也起了很大的作用。

上图是有二个多简单示例。Modin 实际上采用了有二个多分块管理器,它前要基于操作类型来改变分块大小和形态学 。例如,有个操作前要全版的行机会列。在你你你这个情形下,分块管理器)会以它能发现的最优土辦法 执行切分,并把分块分散发送到 CPU 核上,它是很灵活的。

在前面一节中,大伙儿儿提到了 Pandas 只用有二个多 CPU 核做数据防止的土辦法 。很自然,这成了有二个多大大的瓶颈,很糙是对于较大的数据帧,缺少计算资源会给性能带来较大影响。

大伙儿儿预期 Modin 对例如操作机会运行得很好,机会它不必 防止少量的数据。代码如下所示:

结论

让大伙儿儿在数据帧上做或多或少计算量大的操作看下。将十几次 数据帧连接起来是 Pandas 中的有二个多常用操作——大伙儿儿的数据机会含高在十几次 机会更多的 CSV 文件中,大伙儿儿不得不一次读入有二个多文件,再进行数据帧连接。大伙儿儿在 Pandas 和 Modin 中只需调用 pd.concat() 函数就前要很容易做到这点。

作者丨George Seif

本文接下来的例子和基准测试,大伙儿儿打算使用来自 Kaggle 的 CS:GO Competitive Matchmaking Data 数据集。CSV 文件中的每一行都含高了 CS:GO 比赛中的一轮数据。

这次,Pandas 运行.fillna() 用了 1.8 秒,而 Modin 仅用了 0.21 秒,实现了 8.57 倍的加速!

Pandas 默认是在单个 CPU 核上,采用单守护tcp连接执行函数,这在小数据集上运行得很好,机会你机会觉察不必 那么来那么多性能上的差异。可是我我我,对于较大数据集,前要做更多的计算,这时机会还只使用单个 CPU 核,就会但是 但是 开始 感觉到性能受到影响了。对于具有百万行甚至数十亿行的数据集,Pandas 每次只计算有二个多数。

为了测试带宽,我导入了 time 你你你这个模块,在 read_csv() 函数前后调用了 time.time()。结果,Pandas 花了 8.38 秒从 CSV 文件中载入数据到内存,而 Modin 仅花了 3.22 秒,Modin 实现了 2.6 倍的加速。假如有一天修改导入库名称就前要实现那么 的加速,何必 太爽了!

你会想看 ,或多或少操作,Modin 明显更慢,通常是读取数据和查找数据。或多或少操作,比如进行统计计算,Pandas 会快那么来那么多那么来那么多那么来那么多那么来那么多。

https://www.kdnuggets.com/2019/11/speed-up-pandas-4x.html

让大伙儿儿来看下 Modin 也有怎么运行的,可是我我我看十几次 代码用例。

历年来 Python 开发包的受欢迎程度。来源:

对 Modin 的操作建议

Pandas 中时不时使用的数据帧清理函数是.fillna() 函数。你你你这个函数搜索数据帧中值为 NaN 的元素,将其值替换为你指定的值,这其含高少量的操作。Pandas 不得不遍历每一行每一列来找到 NaN 值可是我我我替换它们。这里使用 Modin 来操作就再适合不过了,机会大伙儿儿这里是对有二个多简单操作重复那么来那么多那么来那么多那么来那么多那么来那么多次。

译者丨夏夜

大伙儿儿要做的第有二个多测试可是我我我简单地用 read_csv() 函数读取数据。使用 Pandas 机会 Modin 实现你你你这个功能的代码是全版一样的。

在 Pandas 中生成了有二个多数据帧后,大伙儿儿的目标是用最快的土辦法 执行或多或少计算机会防止工作,比如机会是要求解每列的平均数(使用 mean() 函数)、根据groupby字段对数据分组、移除所有重复数据(使用 drop_duplicates() 函数),机会是 Pandas 中或多或少内建的函数。

Pandas 着实是 Python 中用于数据防止的库,但它也有为高性能数据防止而打造的。本文将带你了解最近新推出的代码库 Modin,它是专为 Pandas 分布式计算而开发的,不必 加速防止数据。

点个在看少个 bug