使用 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资源。
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 秒。
!pip install 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方法)。(既然被调用了,就不’这并不意味着它不能使用,它只是似乎没有加速。)
希望今后继续提供支持(希望以后继续免费提供!)。