Python读取Excel报表内存不足,如何通过指定列和dtype引擎优化降维?

2026-04-30 10:451阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1224个文字,预计阅读时间需要5分钟。

Python读取Excel报表内存不足,如何通过指定列和dtype引擎优化降维?

基本原因不是文件太大,而是使用`read_excel`默认将整个表(含隐藏列、空行、样式缓存、共享字符串等)全量填充进内存,再转换为`DataFrame对象。您只想取其中的3列,可以先解析前200列,再筛选。

典型表现:MemoryError 报错堆栈里一定有 openpyxlxlrd 的调用链;任务管理器能看到 Python 进程内存飙升到几 GB 后崩掉。

  • openpyxl 引擎对格式支持最全,但内存开销最大,尤其含合并单元格或条件格式时
  • xlrd(仅 ≤1.2.0)已停止维护,不支持 .xlsx 新格式,但读纯数据时比 openpyxl 省约 30% 内存
  • 使用 engine='odf'engine='calamine'(需 pip install calamine-python)可跳过 XML 解析层,直接提取原始值,内存占用下降 50%+,但会丢弃所有样式和公式

只读指定列:usecols 参数的三种写法与陷阱

usecols 是最直接的降维手段,但它不是“选哪几列就读哪几列”,而是“先按规则筛列名/列号,再读”。错误用法反而会加重负担。

阅读全文
标签:ExcelPython

本文共计1224个文字,预计阅读时间需要5分钟。

Python读取Excel报表内存不足,如何通过指定列和dtype引擎优化降维?

基本原因不是文件太大,而是使用`read_excel`默认将整个表(含隐藏列、空行、样式缓存、共享字符串等)全量填充进内存,再转换为`DataFrame对象。您只想取其中的3列,可以先解析前200列,再筛选。

典型表现:MemoryError 报错堆栈里一定有 openpyxlxlrd 的调用链;任务管理器能看到 Python 进程内存飙升到几 GB 后崩掉。

  • openpyxl 引擎对格式支持最全,但内存开销最大,尤其含合并单元格或条件格式时
  • xlrd(仅 ≤1.2.0)已停止维护,不支持 .xlsx 新格式,但读纯数据时比 openpyxl 省约 30% 内存
  • 使用 engine='odf'engine='calamine'(需 pip install calamine-python)可跳过 XML 解析层,直接提取原始值,内存占用下降 50%+,但会丢弃所有样式和公式

只读指定列:usecols 参数的三种写法与陷阱

usecols 是最直接的降维手段,但它不是“选哪几列就读哪几列”,而是“先按规则筛列名/列号,再读”。错误用法反而会加重负担。

阅读全文
标签:ExcelPython