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

如何加速pandas迭代处理上千工作表Excel文件并生成张量数据集

Excel转TensorFlow数据集加速方案

原代码存在重复读取Excel文件的冗余逻辑:第一行pd.read_excel('file.xlsx', sheet_name=None)已经将所有工作表读取为内存中的字典结构,但后续循环中又重新针对每个工作表再次调用pd.read_excel读取磁盘文件,这是耗时过长的核心原因。

你可以通过以下几个层级的方案优化处理速度:

  • 移除重复读盘逻辑,直接复用首次读取的工作表字典,这一步即可减少至少50%的耗时
  • 替换为更快的Excel解析引擎:推荐使用Rust开发的calamine引擎,相比默认的openpyxl读取速度提升3~10倍,安装命令为pip install pandas-calamine,读取时指定engine='calamine'即可
  • 预处理完成后将数据集持久化为TensorFlow原生格式,后续复用数据时无需再次解析Excel,仅需读取持久化文件即可,单文件存储也符合不生成数千个CSV的要求
  • 如果单批次数据量过大、内存不足,可改用TFData惰性加载逻辑,边读取边喂入模型,避免全量数据占满内存

优化后参考代码如下:

import pandas as pd
import numpy as np
import tensorflow as tf

# 单次读取所有工作表到内存字典,使用calamine引擎提速
all_sheets = pd.read_excel('file.xlsx', sheet_name=None, engine='calamine')
columns = ['A','B','C']

features = []
labels = []
# 直接遍历内存中的工作表,无需再读磁盘
for df in all_sheets.values():
    features.append(df[columns].to_numpy())
    labels.append(df['D'].to_numpy())

Y = tf.convert_to_tensor(np.stack(labels), dtype=tf.float32)
X = tf.convert_to_tensor(np.stack(features), dtype=tf.float32)
dataset = tf.data.Dataset.from_tensor_slices((X, Y))

# 可选:将数据集持久化方便后续复用,不用重复解析Excel
dataset.save('./processed_tf_dataset')
# 后续读取直接调用:dataset = tf.data.Dataset.load('./processed_tf_dataset')

如果无法安装第三方calamine引擎,仅移除重复读盘逻辑,使用默认openpyxl引擎也能大幅压缩耗时,1000个工作表的处理流程可以从小时级压缩到分钟级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:45:06