编程学习网 > 编程语言 > Python > Python处理Excel慢到哭?换这3个库,10万行数据几秒搞定
2026
07-09

Python处理Excel慢到哭?换这3个库,10万行数据几秒搞定


Python处理Excel文件,很多人都踩过坑。写了个脚本处理数据,跑起来才发现慢得离谱。几万行数据等半天,屏幕上那个小圈圈转得人心烦。我在学校教课的时候,学生经常抱怨说老师,我程序卡死了。其实不是程序死了,是用错了工具。

pandas读取Excel,数据量超过1万行就开始明显变慢。到了5万行,一次读取可能要10秒以上。10万行数据,pandasread_excel方法可能花掉你半分钟甚至一分钟。这还算好的,后续的筛选分组计算更是折磨。

问题出在哪里?pandas处理Excel时,底层用的是openpyxl或者xlrd。这两个库的读写方式比较原始,数据量一大就吃力。它们更适合小文件,几百行几千行的表格。遇到10万行级别,就像让自行车拉货车。

别急。换下面这3个库,10万行数据几秒搞定。我用教学数据测试过,真实有效。

第一个是openpyxl只读模式。很多人不知道openpyxl有个优化选项。正常用openpyxl.load_workbook会加载整个文件到内存。数据量大时内存直接爆掉。改成只读模式,openpyxl不会一次读入所有数据,而是一行一行流式读取。速度能提升10倍以上。

代码很简单。把load_workbookread_only参数设为True。每次遍历行的时候,内存消耗很小。我测试过20万行数据,7秒读完。缺点是只能读不能写。适合只需要提取数据的场景。

第二个是xlwings。这货不走弯路,直接调用ExcelCOM接口。相当于让Excel自己打开文件处理数据。Python只负责发指令。速度极快,10万行数据23秒搞定。而且支持读取也支持写入,还能调用Excel的公式和宏。

xlwings需要电脑上装了Excellinux用户用不了。windows用户强烈推荐。有个技巧,用xlwings读取大范围数据时,一次性读取整个区域,别一行一行读。写成df = sheet.range('A1').expand('table').options(pd.DataFrame, index=False).value,数据直接变成pandasDataFrame,后续处理也不慢。

第三个是pyxlsb。专门处理xlsb格式的Excel文件。很多人不知道,xlsb是二进制格式,比xlsx小得多,读写更快。如果你的表格可以保存成xlsb格式,用pyxlsb读取,10万行数据3秒以内。缺点是只能读不能写,而且只支持xlsb文件。

上面三个库都用不上?还有个压箱底的方法。把Excel文件先转换成csv格式。csv就是纯文本,任何库处理都飞快。pandasread_csv读取10万行只需要1秒多。处理完再保存回去。Excel本身是支持打开csv文件的。

 我教学生的时候,经常说一句话:别让工具限制了你处理数据的能力。Excel慢不是Python的问题,是你没选对库。

再给你个建议。日常处理Excel文件之前,先看看数据量。少于1万行,用openpyxl默认模式就行。1万到5万,用openpyxl只读模式。5万以上,直接上xlwings或者转csv。这样分档用,永远遇不到卡死的情况。

你手头有没有特别大的Excel文件?试试换上面说的库。速度差别大得像换了台电脑。

以上就是“Python处理Excel慢到哭?换这3个库,10万行数据几秒搞定的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。 

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取