可以加速 Pandas(即使在 CPU 环境中)而无需编码...... FireDucks

2023-12-28 13:37:02

引言

使用 Pandas 处理大量数据时,是否曾因处理时间过长而感到沮丧?
显然,一个库已经发布,可以在不改变现有代码的情况下加速 Pandas。
由 NEC Laboratories 发布的名为 FireDucks 的库的 Beta 版本可以免费使用。
而且,即使在CPU环境下它似乎也更快。 详情请参阅网站

这是测试版,但是免费的,这太棒了!                              
赶紧去看看吧。

环境

有两种使用 FireDucks 的方法:“隐性导入”和“显式导入”。
对于“import hook”,可以通过在启动 python 时指定选项来运行它,而无需重写代码。 另一方面,对于“显式导入”,请在导入语句中显式指定fireducks。

python3 -m fireducks.imhook your_script.py
# import pandas as pd
import fireducks.pandas as pd

这次,我们将使用“显式导入”来与Google Collaboration进行验证。

简单验证

让我们使用标准泰坦尼克数据进行验证。
会尝试测量groupby()方法的效果,但由于数据量很小,将循环它10,000次并测量它。
操作环境是Google Collaboration,并且使用可能会产生影响的CPU资源。

正常的 Pandas 环境

import pandas as pd
import time

# 直接读取Github上发布的数据
url = 'https://raw.githubusercontent.com/pandas-dev/pandas/master/doc/data/titanic.csv'
titanic = pd.read_csv(url)

start = time.time()

for i in range(10000):
    titanic.groupby(["Sex", "Pclass"])["Fare"].mean()

elaps = time.time() - start
print(elaps)

在这里插入图片描述大约用了 9.5 秒。

FireDucks环境

  • 安装fireducks
!pip install fireducks
  • 验证 FireDucks 中的处理时间
import fireducks.pandas as pd2
url = 'https://raw.githubusercontent.com/pandas-dev/pandas/master/doc/data/titanic.csv'
titanic2 = pd2.read_csv(url)

import time

start = time.time()

for i in range(10000):
    titanic2.groupby(["Sex", "Pclass"])["Fare"].mean()

elaps = time.time() - start
print(elaps)

在这里插入图片描述大约需要 3.4 秒,大约快了三倍。
太奇妙了! 。

在处理大量数据时,它似乎非常有效。

综上所述

如果它是免费且易于使用且无需更改代码的,我认为没有理由不使用它。
根据官网介绍,并不是所有的pandas方法都更快,但是兼容的方法数量会逐渐增加(FireDucks不支持的方法会在内部转换为常规的pandas方法)。(既然被调用了,就不’这并不意味着它不能使用,它只是似乎没有加速。)

希望今后继续提供支持(希望以后继续免费提供!)。

文章来源:https://blog.csdn.net/Allan_lam/article/details/135266612
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。