python中读取Excel文件使用pandas、xlrd、openpyxl性能对比

您所在的位置:网站首页 pandas创建dataframe python中读取Excel文件使用pandas、xlrd、openpyxl性能对比

python中读取Excel文件使用pandas、xlrd、openpyxl性能对比

2023-06-26 00:55| 来源: 网络整理| 查看: 265

假设有一个包含1000行、30列数据的Excel文件,我们可以使用以下代码对这三种方法进行性能测试。

方法一:使用Pandas库

import pandas as pd import timeit

excel_file = ‘example.xlsx’ sheet_name = ‘Sheet1’

def pandas_method(): data_frame = pd.read_excel(excel_file, sheet_name=sheet_name) data_dict = data_frame.to_dict(orient=‘records’)

print(‘Pandas method:’, timeit.timeit(pandas_method, number=100))

Pandas method: 24.16708559

1 2 3 4 5 6 7 8 9 10 11 12 方法二:使用xlrd库

import xlrd import timeit

这里要注意,因为xlrd只支持xls格式的文件,等待数据

excel_file = ‘example.xls’ sheet_name = ‘Sheet1’

def xlrd_method(): workbook = xlrd.open_workbook(excel_file) sheet = workbook.sheet_by_name(sheet_name) data_dict = [] for row in range(1, sheet.nrows): row_data = {} for col in range(sheet.ncols): cell_value = sheet.cell_value(row, col) row_data[sheet.cell_value(0, col)] = cell_value data_dict.append(row_data)

print(‘xlrd method:’, timeit.timeit(xlrd_method, number=100))

xlrd method: 7.141338280000014

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 方法三:使用openpyxl库

from openpyxl import load_workbook import timeit

excel_file = ‘example.xlsx’ sheet_name = ‘Sheet1’

def openpyxl_method(): workbook = load_workbook(filename=excel_file) worksheet = workbook[sheet_name] data_dict = [] for row in worksheet.iter_rows(min_row=2, max_col=worksheet.max_column, values_only=True): row_data = {} for i, value in enumerate(row): row_data[worksheet.cell(row=1, column=i+1).value] = value data_dict.append(row_data)

print(‘openpyxl method:’, timeit.timeit(openpyxl_method, number=100))

openpyxl method: 27.848255710000103

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 运行以上代码,输出结果可能会有所不同,但是可以大致得出以下结论:

xlrd库读取数据性能最快,但是xlrd只支持xls格式,最新的xlsx格式只能使用其他方式。 openpyxl库最慢,和xlrd相反openpyxl只支持读取xlsx格式。 pandas库性能一般,但是同时支持xlsx和xls格式的excel,是最全面的。 下面对一些的Excel解析库的支持情况做了大概的对比:

库 读取xlsx文件 读取xls文件 写入xlsx文件 写入xls文件 数据处理功能 速度

从上表可以看出,这些库的支持情况各有不同。

如果需要读写Excel xlsx格式的文件并进行复杂的数据处理操作,建议选择pandas库。 如果只需要读取Excel xls格式的文件,可以使用xlrd库。 如果只需要写入Excel xlsx格式的文件,并且对速度要求较高,可以选择xlsxwriter库。 注: pyexcel和pyxlsb在读取Excel文件时,使用了比较特殊的方法,即使用了内存映射文件(Memory Mapped Files)的技术,可以将文件映射到内存中,然后通过内存直接访问文件内容,从而避免了大量的IO操作,提高了读取速度。同时,这种方法还可以避免一些内存限制,可以处理较大的文件。 相比之下,其他库(如pandas、xlrd、openpyxl等)使用的是常规的读取文件方式,需要将整个文件读入内存中,再进行解析处理,因此可能会受到内存限制的影响,同时IO操作也会比较频繁,速度相对较慢。 ———————————————— 版权声明:本文为CSDN博主「时光不写代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_44649870/article/details/130426854



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3