我近期偶然发掘了一个叫做Modin [1]的小型库,它声叫作能够让pandas运行的更快。她们用来描述这个项目的其中一句话是:
"经过更改一行代码来加速你的pandas工作流"
听起来特别有趣,倘若是真的话,那就道理重大了。
运用modin只需要导入modin来代替pandas,并且亦不需要更改你的现有代码。
一个警告—— modin日前运用panda 0.20.3(当运用 pip install modin 来安装modin时,最少需要安装panda 0.20)。倘若你正在运用最新版本的pandas,并且需要以前版本中不存在的新功能,那样你可能需要检测一下modin—或尝试让它与最新版本的pandas一块工作(我还无这般做)。
安装modin:
运用modin:
便是这般。你只需要运用 import modin.pandas as pd 而不是 import pandas as pd,而后你就能够得到额外的速度优良。
按照文档,modin利用了现代设备上的多核技术,而pandas无。从她们的网站能够看到:
Modin供给的一个Read CSV基准
在pandas中,当你做任何类型的计算的时候你每次只能运用一个核心。然则运用Modin,你能够运用设备上的所有CPU内核。即使在read_csv中,经过有效地在全部设备上分布工作,咱们亦看到了巨大的成效。
咱们来试一试,瞧瞧它是怎样工作的。
在这个测试中,我将尝试她们的read_csv办法,由于这是她们所强调的亮点。针对这个测试,我有一个105MB的csv文件。让咱们给pandas 和 modin计时,瞧瞧它们是怎样工作的。
咱们先从pandas起始。
运用pandas,读取一个105MB csv文件平均需要1.26秒。
此刻,咱们来看一下modin。
在继续之前,我应该和大众分享一下,除了执行 pip install modin 之外,我还需要执行有些额外的过程才可让modin正常工作。我还必须安装typing和dask。
运用与上面完全相同的代码(除了导入modin的一点小更改—— import modin.pandas as pd)。
运用modin时,读取一个105MB csv文件平均需要0.96秒。
在这个示例中,运用modin,我能够从读取这个105MB csv文件的平均读取时间中节省0.3秒。这可能看起来不是非常多时间,然则节省了大约27%。想象一下,倘若你有5000个体积类似的csv文件要读取,这平均能够节省1500秒的时间,仅仅在读取文件上就能够节省25分钟的时间。
Modin运用Ray [2]来加速pandas,因此倘若你运用Ray的有些设置,可能会节省更加多的时间。
我将在以后的有些项目中更加多的运用modin来提有效率。好好看一下它,而后告诉我你的想法。
关联链接:
[1]——https://github.com/modin-project/modin
[2]——https://github.com/ray-project/ray/
英文原文:https://pythondata.com/quick-tip-speed-up-pandas-using-modin/ 译者:一瞬
|