Pandas 是一个用于数据处理的库,许多使用 Python 的数据人员都在使用它。自数据科学职业生涯伊始,Pandas 就成为许多专业人士的标准工具。
虽然 Pandas 易于使用,但有时候运行速度会比较慢。数据集越大、分析越复杂,Pandas 的运行速度就越慢。为此,已经开发出了许多可替代 Pandas 的框架,不过大多数新框架是基于自己的系统,而不是在 Pandas 基础上进行扩展。
这就是 FireDucks 登场的原因——它不是取代 Pandas,而是作为增强工具来加速其处理过程。
那么,FireDucks 是如何工作的呢?让我们一同探索。
FireDucks 简介
FireDucks 是一个 Python 库,它作为 Pandas 的加速器存在,并不会完全替换 Pandas。它的设计初衷是以 Pandas 为基础,提高我们使用的任何 Pandas API 的执行速度。
FireDucks 加速 Pandas 执行的方式主要有两种:编译器优化和多线程。
优化编译器的工作方式是:在程序执行前,将 Python 程序转换为一种中间语言。这种转换让程序在不改变输出结果的前提下,执行更高效。FireDucks 所使用的中间语言是专门为 DataFrame 设计的,这意味着优化方式非常适合提升 Pandas 的执行效率。
此外,FireDucks 还通过后端的多线程加速处理过程。多线程意味着 FireDucks 能够利用 CPU 的多个核心来加快处理速度,类似于 GPU 提升计算速度的原理。
另外,FireDucks 采用惰性执行模型(lazy execution model)来执行流程。惰性执行是一种批量处理方式,只有在需要结果时才会真正执行。借助惰性执行,FireDucks 的主要方法不会直接处理 DataFrame,而是使用前面提到的中间语言。当最终需要结果时,之前生成的所有中间语言会被同时执行。
这就是 FireDucks 如何提升执行速度的基本原理。接下来,让我们通过实际的 Python 代码来体验它的强大。
代码实现
首先,我们需要用 pip 安装该库。可以使用以下命令进行安装:
pip install fireducks
在 Pandas 库中,有两种方式可以集成 FireDucks:Hook(钩子)或显式导入。
使用 Hook 时,只需要启用 FireDucks,而无需显式导入它。可以通过以下代码实现:
%load_ext fireducks.pandas
import pandas as pd
借助 Hook,我们可以轻松地用 FireDucks 替换 Pandas,而无需更改任何 API。
如果你想直接替换 Pandas,则需要显式导入库。可以使用以下代码:
import fireducks.pandas as pd
库安装好后,让我们来比较一下 FireDucks 与 Pandas 的性能。你会发现 FireDucks 显著更快,但仍然使用相同的 API。
例如,我们可以生成一些示例数据,并对比两个库在排序数值时的表现:
import time
import numpy as np
import pandas as pd
import fireducks.pandas as fpd
n = 1_000_000
np.random.seed(42)
data = {
"x": np.random.randint(0, 100, n),
"y": np.random.rand(n)
}
df_pandas = pd.DataFrame(data)
df_fireducks = fpd.DataFrame(data)
start_pd = time.time()
sorted_pd = df_pandas.sort_values("x")
time_pd = time.time() - start_pd
start_fd = time.time()
sorted_fd = df_fireducks.sort_values("x")
time_fd = time.time() - start_fd
print("Pandas sort time: {:.4f} sec".format(time_pd))
print("FireDucks sort time: {:.4f} sec".format(time_fd))
输出结果如下:
Pandas sort time: 0.0009 sec
FireDucks sort time: 0.0004 sec
你可以看到,FireDucks 相比 Pandas 的排序速度更快。虽然数据量较小时可能感受不明显,但在处理更大数据集和更复杂操作时,速度优势会更加突出。
这就是你需要了解的 FireDucks 基础内容。当你觉得 Pandas 运行缓慢时,不妨试试 FireDucks。
总结
FireDucks 是一个专为加速 Pandas 操作而设计的 Python 库,无需切换到全新的框架。通过编译器优化和多线程,FireDucks 能够显著提升 Pandas 的执行性能。
该库非常易用,你无需更改现有的 API。面对大数据集和复杂操作时,FireDucks 尤为高效。
希望本文对你有所帮助!