同事有一段 python 腳本,里面用 pandas 讀取一個(gè)幾十萬(wàn)行的 excel 文件,但是速度實(shí)在太慢了。問(wèn)我有沒(méi)有什么好辦法提升運(yùn)行速度。如果在幾個(gè)月以前,就實(shí)在沒(méi)有什么好辦法了。畢竟在 python 生態(tài)中,讀寫 excel 最后的倔強(qiáng)就是 openpyxl 了。你就別指望它能提速了。
現(xiàn)在可不一樣了。馬上升級(jí)你的 pandas 版本,因?yàn)樵?pandas 2.2 版本,開(kāi)始引入一個(gè)全新的 excel 解析引擎庫(kù),它不僅僅性能吊打 openpyxl ,并且同時(shí)支持一眾 excel 格式( xls
, xlsx
, xlsm
, xlsb
, xla
, xlam
)
這就是 calamine 庫(kù),如果你到 github 上查看,會(huì)看到其實(shí)它是一個(gè) rust 的庫(kù):
看看 calamine 官方的性能對(duì)比:
calamine 是 openpyxl 的 10 倍。
好消息是,python 也有對(duì)應(yīng)的接口庫(kù):
更好的消息是,pandas 在 2.2 版本開(kāi)始,悄悄支持了 calamine 。為什么說(shuō)"悄悄"?因?yàn)橹悄芴崾径紱](méi)有提示出來(lái):
并且 to excel
還不能使用它。不過(guò),pandas 在即將到來(lái)的 3.0 版本,正式支持 calamine。
今天,我們先親自下場(chǎng)嘗試一下。
加載一份 800 多萬(wàn)行的 feather 文件:
自然不可能全部塞到 excel 里面,就取前 50 萬(wàn)行吧:
由于 to excel 仍然使用 openpyxl ,速度可想而知,用了差不多2分鐘。
現(xiàn)在看看使用 calamine 引擎,加載到 dataframe 要多久:
9.4 秒,還是比 feather 文件的 2.5 秒慢多了。不過(guò)有相關(guān)經(jīng)驗(yàn)的小伙伴應(yīng)該知道,加載一個(gè)50 萬(wàn)行的 excel,只要差不多10秒,已經(jīng)是謝天謝地了。
看看 openpyxl 的速度,你能感受到什么是絕望:
白白多出1分鐘
點(diǎn)擊下方安全鏈接前往獲取
CSDN大禮包:《Python入門&進(jìn)階學(xué)習(xí)資源包》免費(fèi)分享文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-836254.html
??Python實(shí)戰(zhàn)案例??
光學(xué)理論是沒(méi)用的,要學(xué)會(huì)跟著一起敲,要?jiǎng)邮謱?shí)操,才能將自己的所學(xué)運(yùn)用到實(shí)際當(dāng)中去,這時(shí)候可以搞點(diǎn)實(shí)戰(zhàn)案例來(lái)學(xué)習(xí)。
??Python書籍和視頻合集??
觀看零基礎(chǔ)學(xué)習(xí)視頻,看視頻學(xué)習(xí)是最快捷也是最有效果的方式,跟著視頻中老師的思路,從基礎(chǔ)到深入,還是很容易入門的。
??Python副業(yè)創(chuàng)收路線??
這些資料都是非常不錯(cuò)的,朋友們?nèi)绻行枰禤ython學(xué)習(xí)路線&學(xué)習(xí)資料》,點(diǎn)擊下方安全鏈接前往獲取
CSDN大禮包:《Python入門&進(jìn)階學(xué)習(xí)資源包》免費(fèi)分享
本文轉(zhuǎn)自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪除。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-836254.html
到了這里,關(guān)于openpyxl被干掉?全新python高性能excel解析庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!