仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
FireDucks是一个完全兼容Pandas的加速库,它不是要替代Pandas,而是作为Pandas的加速器工作。它允许用户继续使用熟悉的PandasAPI,同时显著提高执行速度。
使用与Pandas相同的API
无需修改现有代码
可以轻松替换现有的Pandas代码
比原生Pandas快数倍到数十倍
特别适合处理大型数据集和复杂操作
导入钩子(ImportHook):不需要修改代码,自动替换Pandas导入
%load_extfireducks.pandasimportpandasaspd
显式导入(ExplicitImport):手动替换导入语句importfireducks.pandasaspd
FireDucks通过两种主要方法加速Pandas操作:
编译器优化:
将Python程序转换为中间语言
专为DataFrame操作设计的优化
多线程处理:
利用多核CPU并行处理数据
类似GPU加速的原理
惰性执行模型:
不立即执行操作,而是生成中间语言
只在需要结果时(如保存文件、显示数据)才执行所有操作
批处理优化提高整体性能
FireDucks目前支持Linux(manylinux)在x86_64架构上,可以通过pip轻松安装:
要求Python>3.8,<=3.13(注意:自FireDucks1.1.0起,由于升级了依赖的pyarrow到18.0.0,不再支持Python3.8)
在Python脚本中使用:
在IPython/JupyterNotebook中使用:
以下是一个简单的性能对比示例:
结果:
在更大的数据集和更复杂的操作中,性能差异会更加明显。
由于FireDucks使用惰性执行模型,测量单个方法的性能需要特别注意。有三种方法可以准确测量性能:
启用基准测试模式:
使用_evaluate()方法:
FireDucks团队评估了db-benchmark[1]的性能,该基准测试包括在多种大小的数据集上执行基本数据科学操作的场景。
截至2024年9月10日,FireDucks在大数据的分组(groupby)和连接(join)操作方面似乎是最快的数据框架库。
测试环境:
FireDucks版本:fireducks-1.0.4
CPU型号:Intel(R)Xeon(R)Platinum8375CCPU@2.90GHz
CPU核心数:128
内存:256GB
TPC-H是一个决策支持基准测试,包含复杂的查询和大量数据修改。
上图比较了四个数据框架库(Pandas、DuckDB、Polars和FireDucks)在22个不同查询上的性能。垂直轴以对数刻度显示与Pandas相比快多少倍,大于1表示比Pandas快。
测试环境:
服务器规格(AWSEC2m7i.8xlarge)
CPU:INTEL(R)XEON(R)GOLD6526Y(32核)
内存:512GB
操作系统:Ubuntu24.04
TPCx-BB包括与使用机器学习及其预处理的数据分析相关的查询。
在TPCx-BB测试中,FireDucks比Pandas最高快17倍,平均快6.7倍。
测试环境:
CPU:Intel(R)Xeon(R)Gold5317CPU@3.00GHzx2插槽(共48个硬件线程)
内存:256GB
测试版本:
pandas-2.1.4
fireducks-0.9.3
由于惰性执行模型,使用传统的try-catch块检查KeyError可能不会按预期工作:
推荐的方式:
您可以通过GoogleColab免费体验FireDucks的易用性和高性能:
pandas_nyc_demo.ipynb[2]
fireducks_pandas_nyc_demo.ipynb[3]
FireDucks_vs_Pandas_vs_Polars.ipynb[4]
FireDucks是一个强大的Pandas加速库,通过编译器优化和多线程处理,显著提高了数据处理速度,同时保持了与Pandas的完全兼容性。它特别适合处理大型数据集和复杂的数据操作,可以轻松集成到现有的Pandas代码中,无需大量修改。
根据多项基准测试,FireDucks在各种数据处理场景中都展现出了显著的性能优势,尤其是在处理大型数据集和复杂查询时。
官方网站:https ://fireducks-dev.github.io[5]
GitHub仓库:https ://github.com/fireducks-dev/fireducks[6]
联系方式:contact@fireducks.jp.nec.com[7]
Slack社区:加入FireDucksSlack[8]
参考资料
db-benchmark:https ://github.com/duckdblabs/db-benchmark
https ://fireducks-dev.github.io:https ://fireducks-dev.github.io
https ://github.com/fireducks-dev/fireducks:https ://github.com/fireducks-dev/fireducks
contact@fireducks.jp.nec.com:mailto:contact@fireducks.jp.nec.com