背景
有工作需要解析Excel文件数据,需要取Excel文件中一些指定单元格(指定行列)的数据内容。因为Excel文件目前区分为xls与xlsx。全能读写包xlwings虽然能兼顾两种格式,功能齐全,但是太重,操作比较慢,而且必须主动调用关掉Excel文件调用,否则将一直挂在后台。考虑到更轻便的使用,所以分别使用了xlrd读xls,使用openpyxl读xlsx。但是维护两份代码不太方便,考虑到pandas可以直接读excel两种格式(底层同样是调用对应的包,只是上层做了统一封装),感觉可以更方便些。
但是最终用下来,在单纯取数据方面,dataframe格式的性能并不占优势。
测试方案
测试平台:win10 21H1
配置:AMD 3700X 8核16线程 4.14GHz,32G DDR4 3200MHz
数据文件:4880行,11列的Excel文件。xls格式1100kb,xlsx格式390kb。
随机重复读指定单元格,比较读取耗时。
测试结果
提取数据耗时:
- pands - iat,13us
- pands - iloc,14.4us
- xlrd - sheet.cell,0.447us
- openpyxl - sheet.cell,0.509us
由测试数据可知,pandas的dataframe取数据性能远远低于直接从Excel取数据。


本文探讨了在处理Excel文件时,使用pandas与直接使用xlrd和openpyxl的性能差异。测试结果显示,对于提取数据的操作,pandas的dataframe在性能上不如xlrd和openpyxl直接读取单元格。尽管pandas提供了对xls和xlsx文件的统一读取接口,但在单纯取数据的效率上,直接使用底层库更为优越。
1081

被折叠的 条评论
为什么被折叠?



