AI News HubLIVE
站内改写2 分钟阅读

实测:这个 Python 库可将 Pandas 工作负载提速最高 20 倍

FireDucks 是由 NEC 开发的编译器加速 DataFrame 库,提供与 pandas 高度兼容的 API,采用惰性执行、查询优化和多线程 CPU 处理。作者在 1000 万行数据集上对比 pandas 与 FireDucks,覆盖 7 种常见操作,结果 FireDucks 全面领先:排序最快达 20.77 倍,平均提速约 7.28 倍。

来源KDnuggets作者: Abid Ali Awan

在处理 Python 中的表格数据时,pandas 通常是开发者最先想到的工具。它语法简单、与数据生态集成良好,能胜任大多数常规任务。不过,当数据量增长到数百万行时,排序、筛选、分组和连接等操作会明显变得迟缓。FireDucks 正是为缓解这类性能瓶颈而设计的。它由 NEC 开发,提供与 pandas 高度兼容的 API,让用户继续采用熟悉的 pandas 写法,同时在后台通过惰性执行、编译器优化和多线程 CPU 处理来提升效率。

FireDucks 与 pandas 最大的不同在于执行模型。普通 pandas 通常每调用一个操作就立刻执行;FireDucks 会先把一连串 DataFrame 操作收集起来,生成执行计划并进行优化,然后再将整个工作负载调度到多个 CPU 核上运行。这样既能省去不必要的中间计算,也能让过滤、分组、连接和排序等常见操作获得明显加速。需要强调的是,FireDucks 的 API 虽然兼容性很高,但并不是所有场景都能无痛替换:它的 DataFrame 在内部是与 pandas 不同的对象,某些 pandas 功能或第三方库可能依然存在兼容性差异。

上手很简单。执行 pip install -U fireducks 安装最新版本,然后将写好的 pandas 导入语句从 import pandas as pd 改为 import fireducks.pandas as pd,就可以继续用熟悉的 pandas 风格编写代码。作者给出的示例是读取 Parquet 文件,筛选价格大于 100 的行,按类别分组并计算总销售额和平均价格,最后按总销售额排序。看起来和 pandas 代码几乎一样,不同之处在于,FireDucks 不会立刻执行每一步,而是在真正需要结果时(比如调用 print())触发惰性求值,运行经过优化的整个操作序列。

为了验证实际加速效果,作者用同一份包含 1000 万行的数据集,以及一张独立的 200 万行查找表,对 pandas 和 FireDucks 进行了公平对比。基准覆盖七种常见 DataFrame 工作负载:Parquet 读取、多列筛选、低基数 groupby、高基数 groupby、全量排序、与 200 万行查找表进行 join,以及一个更接近真实场景的链式数据处理管道。每个任务先做一次预热,再进行 5 次正式计时;两个库交替执行顺序,最终取中位数,并用 ._evaluate() 让 FireDucks 的结果显式物化,以便统计真实执行时间。测试在纯 CPU 环境下进行,Linux 系统配置为 9 个 AMD EPYC 9V74 核心、15.93 GiB 内存、Python 3.12.13、pandas 2.3.3、FireDucks 1.4.4、NumPy 2.5.2 与 PyArrow 21.0.0。

从结果看,FireDucks 在全部七项测试中都更快。全量排序的差距最显著:pandas 中位数耗时 15.2674 秒,FireDucks 仅需 0.7352 秒,相当于 20.77 倍提速。低基数 groupby 从 0.9061 秒降至 0.0587 秒(15.44 倍),多列筛选从 0.5159 秒降至 0.0444 秒(11.63 倍)。其余项目包括 Parquet 读取 2.66 倍、高基数 groupby 5.75 倍、带 200 万行查找表的 join 3.20 倍,以及链式管道 5.94 倍。综合七项测试,几何平均提速为 7.28 倍。

这些提升并非仅出现在作者自己的测试中。丰田技术开发公司(TTDC)在其内部 AI 框架中使用 FireDucks 后,报告数据分析时间减少 60%,分析 PC 运行时间减少 76%。数据科学作者 Avi Chawla 在 Google Colab 上测试时,pandas 代码从 12.3 秒降到 3.5 秒,约 4 倍提速。当然,实际能获得多少加速取决于数据规模、具体操作、硬件和工作负载,不会每次都达到 20 倍。FireDucks 也不是一个完整无缺的 drop-in 替代品,部分 pandas 特性和第三方库兼容性仍需提前验证。

不过,对于经常处理大型数据集的开发者来说,哪怕只是减少一部分等待时间,也有实际价值:更快的管道能降低计算成本、缩短实验周期,让同一套分析在一天内可以更频繁地运行,而不必把大量时间耗在等待结果上。