一行代码将Pandas加快4倍
让我们在 DataFrame 上做一些更伟大的处理赏罚。毗连多个 DataFrames 是 panda 中的一个常见操纵 — 我们也许有几个或多个包括数据的 CSV 文件,然后必需一次读取一个并毗连它们。我们可以行使 panda 和 Modin 中的*pd.concat()*函数轻松做到这一点。 我们但愿 Modin 可以或许很好地处理赏罚这种操纵,由于它要处理赏罚大量的数据。代码如下所示。 import pandas as pddf = pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df = pd.concat([df for _ in range(5)])e = time.time()print("Pandas Concat Time = {}".format(e-s))import modin.pandas as pddf = pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df = pd.concat([df for _ in range(5)])e = time.time()print("Modin Concat Time = {}".format(e-s)) 在上面的代码中,我们将 DataFrame 与自身毗连了 5 次。pandas 在 3.56 秒内完成了毗连操纵,而 Modin 在 0.041 秒内完成,速率进步了 86.83 倍!看起来,纵然我们只有 6 个 CPU 焦点,DataFrame 的分区也有助于进步速率。 用于 DataFrame 洗濯的 panda 函数是*.fillna()*函数。此函数查找 DataFrame 中的全部 NaN 值,并将它们替代为你选择的值。panda 必需遍历每一行和每一列来查找 NaN 值并替代它们。这是一个应用 Modin 的绝佳机遇,由于我们要多次一再一个很是简朴的操纵。 import pandas as pddf = pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df = df.fillna(value=0)e = time.time()print("Pandas Concat Time = {}".format(e-s))import modin.pandas as pddf = pd.read_csv("esea_master_dmg_demos.part1.csv")s = time.time()df = df.fillna(value=0)e = time.time()print("Modin Concat Time = {}".format(e-s)) 这次,Pandas 运行*.fillna()*用了 1.8 秒,而 Modin 用了 0.21 秒,8.57 倍的加快! 告诫! Modin 老是这么快吗? 并不是这样。 在有些环境下,panda 现实上比 Modin 更快,纵然在这个有 5,992,097(近 600 万)行的大数据集上也是云云。下表表现了我举办的一些尝试中 panda 与 Modin 的运行时刻。 正如你所看到的,在某些操纵中,Modin 要快得多,凡是是读取数据并查找值。其他操纵,如执行统计计较,在 pandas 中要快得多。 行使 Modin 的适用能力 Modin 如故是一个相等新的库,并在不绝地成长和扩大。因此,并不是全部的 pandas 成果都被完全加快了。假如你在 Modin 中实行行使一个还没有被加快的函数,它将默以为 panda,因此不会有任何代码错误或错误。 默认环境下,Modin 将行使计较机上全部可用的 CPU 内核。在某些环境下,你也许但愿限定 Modin 可以行使的 CPU 内核的数目,出格是假如你但愿在其他处所行使这种计较手段。我们可以通过 Ray 中的初始化配置来限定 Modin 可以会见的 CPU 内核的数目,由于 Modin 在后端行使它。 import rayray.init(num_cpus=4)import modin.pandas as pd 在处理赏罚大数据时,数据集的巨细高出体系上的内存(RAM)的环境并不少见。Modin 有一个非凡的符号,我们可以配置为“true”,这将使其进入“out of core”模式。这意味着 Modin 将行使你的磁盘作为你的内存溢出存储,应承你处理赏罚比你的 RAM 大得多的数据集。我们可以配置以下情形变量来启用此成果: export MODIN_OUT_OF_CORE=true 总结 这就是行使 Modin 加快 panda 函数的指南。只需修改 import 语句就可以很轻易地做到这一点。但愿你发明 Modin 至少在一些环境下对加快 panda有效。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |