You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas读取大型Excel文件提速及加载时过滤空值的解决方案

优化方案

1. 更换读取引擎(提速最明显)

默认pd.read_excel使用openpyxl处理xlsx文件,读取大文件性能很差,pandas 2.0及以上版本支持切换为Rust开发的calamine引擎,仅需新增一个参数即可将读取速度提升3~10倍,300万行3列的场景通常可以压到10秒以内。
使用前先安装依赖:
pip install calamine

2. 加载时的额外优化

  • 你当前已经使用usecols指定读取列,这个操作已经避免了加载无关列带来的性能损耗,可以保持使用。
  • 新增dtype参数提前指定3列的字段类型,避免pandas自动推断类型的耗时,例如你读取的3列分别是字符串、浮点型、整型,可以写为dtype={4: str, 21: float, 22: int},索引对应你选的原Excel列的序号。

3. NA值过滤处理

pd.read_excel没有提供加载时直接过滤NA的参数,但是你仅加载3列数据的场景下,读取完成后再调用dropna的耗时可以忽略不计,比逐行读取过滤的方案效率高得多。

4. 长期使用的最优方案

如果这个文件你需要反复读取,可以第一次读取完成后将筛选后的3列数据存储为parquet格式,后续读取仅需几百毫秒,无需重复解析Excel文件,且完全不需要修改原Excel文件:

# 第一次读取后存为parquet格式副本
email.to_parquet(f"{email_path}email_filtered.parquet")
# 后续读取直接调用parquet文件即可
email = pd.read_parquet(f"{email_path}email_filtered.parquet")

优化后的完整代码

import pandas as pd

email_path = r'C:\Users\318459\Desktop\\'
email_path = email_path.replace('\\', '/')
cols = [4, 21, 22]
# 新增engine、dtype参数,根据你的实际字段类型调整dtype配置
email = pd.read_excel(
    f'{email_path}{email_file}',
    sheet_name="Vigo_Banking_for_Credit",
    index_col=None,
    usecols=cols,
    engine="calamine",
    dtype={4: str, 21: float, 22: int} # 按需修改对应列的类型
).dropna() # 直接过滤含NA的行,耗时可忽略

内容的提问来源于stack exchange,提问作者Webb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 19:54:04