openpyxl.load_workbook() 和 pandas.read_excel() 之间的区别?

问题描述 投票:0回答:1

我最近有一个项目,我必须从大量 Excel 文件中加载信息,每个文件都有 12 张需要读取的工作表。在以前的项目中,我只是使用以下方法:

df = pd.read_excel(file_path, sheet_name = sheet1, engine = 'openpyxl')
# Grab what I need from this sheet

df = pd.read_excel(file_path, sheet_name = sheet2, engine = 'openpyxl')
# Grab what I need from this sheet

等等。它运行速度足够快,需要读入的 Excel 工作簿数量较少。但是,在这个项目中,需要几个小时。然后我尝试这样做:

wb = openpyxl.load_workbook(file_path,data_only=True,read_only=True)

ws = wb['sheet1']
# Grab what I need from this sheet
ws = wb['sheet2']
# Grab what I need from this sheet

等等。这运行了大约 20 分钟。

那么,如果两种方法都使用 openpyxl,为什么第二种方法要快得多?是否是因为我只打开工作簿本身一次,而不是在第一种方法中每次收到新工作表时都打开它?如果是这种情况,我如何使用第二种方法,但将工作表作为 pandas 数据框读入?

openpyxl
1个回答
0
投票

Pandas 使用 openpyxl 读取 XLSX 文件。然后,它将它们转换为 Dataframe 对象,但是,由于 XLSX 工作表是基于行的,而 Dataframes 是基于列的,因此可能会使用大量内存和时间。如果您想使用 Pandas 但直接使用 openpyxl,则必须执行此操作。例如,如果您想将内容插入数据库。对于某些任务,您甚至可以使用多个进程。请参阅文档中的性能说明

© www.soinside.com 2019 - 2024. All rights reserved.