前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >openpyxl被干掉?全新python高性能excel解析库

openpyxl被干掉?全新python高性能excel解析库

作者头像
咋咋
发布2024-01-23 17:20:06
3730
发布2024-01-23 17:20:06
举报
文章被收录于专栏:数据大宇宙数据大宇宙

同事有一段 python 脚本,里面用 pandas 读取一个几十万行的 excel 文件,但是速度实在太慢了。问我有没有什么好办法提升运行速度。如果在几个月以前,就实在没有什么好办法了。毕竟在 python 生态中,读写 excel 最后的倔强就是 openpyxl 了。你就别指望它能提速了。

现在可不一样了。马上升级你的 pandas 版本,因为在 pandas 2.2 版本,开始引入一个全新的 excel 解析引擎库,它不仅仅性能吊打 openpyxl ,并且同时支持一众 excel 格式( xls , xlsx , xlsm , xlsb , xla , xlam )

这就是 calamine 库,如果你到 github 上查看,会看到其实它是一个 rust 的库:

看看 calamine 官方的性能对比:

calamine 是 openpyxl 的 10 倍。

好消息是,python 也有对应的接口库:

更好的消息是,pandas 在 2.2 版本开始,悄悄支持了 calamine 。为什么说"悄悄"?因为智能提示都没有提示出来:

并且 to excel 还不能使用它。不过,pandas 在即将到来的 3.0 版本,正式支持 calamine。

今天,我们先亲自下场尝试一下。


加载一份 800 多万行的 feather 文件:

自然不可能全部塞到 excel 里面,就取前 50 万行吧:

由于 to excel 仍然使用 openpyxl ,速度可想而知,用了差不多2分钟。

现在看看使用 calamine 引擎,加载到 dataframe 要多久:

9.4 秒,还是比 feather 文件的 2.5 秒慢多了。不过有相关经验的小伙伴应该知道,加载一个50 万行的 excel,只要差不多10秒,已经是谢天谢地了。

看看 openpyxl 的速度,你能感受到什么是绝望:

白白多出1分钟

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档