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

假设有一个包含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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值