Excel(.xlsx)文件作为数据表重要承载格式,在诸多领域有较大规模的应用。在数据自动化处理过程中,针对Excel数据,我们常编写代码进行自动化过程。
本文主要比较Python的第三方库 pandas/polars/gma,针对大型 .xlsx 文件的读写效率,方便各位朋友按需使用。
测试环境
系统和硬件
操作系统:Window 10 21H2
CPU:Intel® Core™ i5-10210U
内存:16.0 GB
软件
Python:3.11
IDE:Jupyter Notebook 7
库名 | 版本 | |
---|---|---|
pandas | 2.2.2 | ![]() |
polars | 1.2.1 | ![]() |
gma | 2.0.11.1 | ![]() |
测试用例
测试数据为洛阳市2022年POI点(数据来源于网络),其中1X为原始数据,2X、3X、4X、5X为原始数据在行方向上复制2、3、4、5倍后的结果。
名称 | 文件大小 | 数据量(行×列) |
---|---|---|
洛阳市POI数据_1X.xlsx | 9.43MB | 208319 × 8 |
洛阳市POI数据_2X.xlsx | 17.2MB | 416638 × 8 |
洛阳市POI数据_3X.xlsx | 25.0MB | 624957 × 8 |
洛阳市POI数据_4X.xlsx | 32.8MB | 833276 × 8 |
洛阳市POI数据_5X.xlsx | 40.6MB | 1041595 × 8 |
测试数据下载:
链接:https://pan.baidu.com/s/1r_3T18_9z8eL8UCQB9qd9g?pwd=tjj3
提取码:tjj3
分别测试 pandas读写、polars读写、gma(默认模式、直读模式)读写 Excel 文件的性能。
读取测试(以最终读取到 pandas.DataFrame 为目标)
pandas
polars
gma(默认模式)
gma(直读模式)
保存测试(以各库原生读取结果保存到Excel为目标)
pandas
polars
gma(默认模式)
gma(直读模式)
汇总分析
Excel 读取
1、Excel(.xlsx)文件大小不会对 pandas、polars 和 gma 的性能造成影响。文件越大、读取时间越长,且呈线性正相关。
2、polars读取性能最好,gma 次之,pandas 最差。polars 作为高性能 DataFrame 库的名头果然不是盖的。(以1X为例)polars 读取性能大约为 pandas 的 9 ~ 10 倍,为 gma 默认模式的 3 ~ 4 倍,为 gma 直读式的 2 ~ 3 倍。
Excel 写出
1、DataFrame 大小对 polars 写出 Excel 文件性能有影响,对 pandas、gma基本无影响。pandas、gma(默认模式、直读模式) 写出 Excel 文件的时间随文件大小的增大线性增长。polars在文件较小时与pandas、gma 趋势一致,当文件增大到一定程度时用时快速增加(本例中为40.6MB),性能变差,与 pandas 相近。
2、gma 默认模式写出性能最好,gma 直读模式次之,polars 第三,pandas 最差。但 polars 写出文件性能随数据增大会产生衰减。(以1X为例)gma 保存 Excel 性能为 pandas 的 5 ~ 6倍,为 polars 的的 3 ~ 4 倍。 可能由于 gma 不是 DataFrame 等原因,gma 保存到Excel 的效率远高于 pandas 和 polars。
读写 Excel 的最优解推测
pandas 作为一个广泛使用的 DataFrame 库,功能完善,稳定性极好;polars 作为 pandas 的追赶者和挑战者,虽然不如 pandas 稳定,且功能略有缺失(这也是 gma 不提供 polars 接口的原因),但凭借其高性能的优势,也对pandas 的地位产生了一定的威胁。
gma 作为一个非 DataFrame 库,与传统的 DataFrame 库相比,不具备表格数据处理分析能力,但在读写 Excel 文件性能上明显好于 pandas ,写出效率甚至远高于 polars。gma 提供了矢量数据(Layer)与 pandas 数据框 (DataFrame)的转换接口:
- gma 到 pandas:Layer.ToDataFrame()
- pandas 到 gma:io.ReadDataFrameAsLayer()
gma 保存 pandas.DataFrame 到 Excel 性能测试
可见,利用 gma 保存 DataFrame 的用时介于 gma 和 polars之间,且用时(保存效率)远远高于 pandas 和 polars。利用这一性质,可以尝试 Excel 数据处理的最佳性能模式:
polars 读取数据 >>> (polars.DataFrame <= 数据分析 => pandas.DataFrame) >>> gma.~.Layer >>> Excel 文件
了解更多 gma
1、gma.luosgeo.com。2、加作者微信:Luo_Suppe。3、关注公众号:洛的地理研学
1、gma.luosgeo.com。2、加作者微信:Luo_Suppe。3、关注公众号:洛的地理研学
1、gma.luosgeo.com。2、加作者微信:Luo_Suppe。3、关注公众号:洛的地理研学
相关链接:
gma 2.0.11 (2024.07.14) | GmaGIS V0.0.0a5 更新日志
gma 2 用户文档(pdf版)更新计划