Python读取excel三大常用模块到底谁最快,附上详细使用代码

简介: 之前分享过python调用过ppt和word,作为一家人的excel当然要整整齐齐的安排上

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYU13NWczUkxoTTNRbFRuWW9UUVZVMXFpYjFMQk9veE0yUDhJV0lMeTI0N2V5OTkwWUdRSG9xQ1EvNjQw.png

之前分享过python调用过ppt和word,作为一家人的excel当然要整整齐齐的安排上

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aWF6eGRqM1dMSEsyaWJUUFZUVGJBRFhXZTBHMkVRWU5sbGlic0RPd251enQxV1l1SFpwbmhCMUt2VjBvYWNmVHEzekxxOWNCUHN4Y1VVZy82NDA.pngaHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aWF6eGRqM1dMSEsyaWJUUFZUVGJBRFhXVlE5MWljbVNiczdKcFhxUExLTXNhTmdNRDFyNzZpYU5RVzd3c05uanU4aWNaNmtpYWlhbDdRUXRIeGcvNjQw.png

相对于excel,已经有人都写成了一本书。这里一篇文档根本写不下,但是行哥想起来若干年前,在处理数据的时候最大的难题就是导入excel数据,因为后来的数据清洗,提取都可以一步步来做。但是数据导入因为教程不一,文字编码不一,着实快成为我从入门到放弃的第一块门槛

所以本文介绍三种强大的python模块来读取excel,选用案例是之前分享过的分析2020年12000条python招聘数据,有兴趣的可以点击这里看一下

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYVRCdnJyWUM2cjRqQ0lOVUtGV2lhT1lNNlplZDJpY09PdFhsckNxUjJNZTlUbDZYVmNUU0ZaeWZRLzY0MA.png

1.pandas

matplotlib、numpy、pandas是入行数据分析的三个必须掌握的基础模块,这里介绍一下用pandas如何导入excel文件。安装比较简单,直接用 pip 工具安装三个库即可,安装命令如下:

$ pip3 install pandas

安装完成提示 Successfully installed即表示安装成功。

# 1.导入pandas模块
import pandas as pd
# 2.把Excel文件中的数据读入pandas
df = pd.read_excel('Python招聘数据(全).xlsx')
print(df)
# 3.读取excel的某一个sheet
df = pd.read_excel('Python招聘数据(全).xlsx', sheet_name='Sheet1')
print(df)
# 4.获取列标题
print(df.columns)
# 5.获取列行标题
print(df.index)
# 6.制定打印某一列
print(df["工资水平"])
# 7.描述数据
print(df.describe())

其中的describe函数可以统计整体工资情况,告诉行哥你有没有超过50%

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYVJrNmliRkUwb28xaFI5aGZvSWZ3QlFVbWlhWHpqQW12eDVSTmdpYmRLNVBkTnJtTWJXMjdWRW1YUS82NDA.png

使用for循环遍历整个excel文件,我们可以看到12000行数据总耗时达到2.6s

import time
t1 = time.time()
for indexs in df.index:
    print(df.loc[indexs].values[0:-1])
t2=time.time()
print("使用pandas工具包遍历12000行数据耗时:%.2f 秒"%(t2-t1))

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYTMweDBoS0didmJlOFJ4T1hmanE1dnJnNllrQVlpY0FkN1JLaWFmeUtwSUt5V3B6N2s0VVlKQjR3LzY0MA.png

2.openpyxl

小五说这个最好用的python 操作 excel 表格库,下面可以看到openpyxl的读取方法。安装比较简单,直接用 pip 工具安装三个库即可,安装命令如下:

$ pip3 install openpyxl

安装完成提示 Successfully installed即表示安装成功。

from openpyxl import load_workbook
# 1.打开 Excel 表格并获取表格名称
workbook = load_workbook(filename="Python招聘数据(全).xlsx")
print(workbook.sheetnames)
# 2.通过 sheet 名称获取表格
sheet = workbook["Sheet1"]
print(sheet)
# 3.获取表格的尺寸大小(几行几列数据) 这里所说的尺寸大小,指的是 excel 表格中的数据有几行几列,针对的是不同的 sheet 而言。
print(sheet.dimensions)
# 4.获取表格内某个格子的数据
# 1 sheet["A1"]方式
cell1 = sheet["A1"]
cell2 = sheet["C11"]
print(cell1.value, cell2.value)
"""
workbook.active 打开激活的表格; sheet["A1"] 获取 A1 格子的数据; cell.value 获取格子中的值;
"""
# 4.2sheet.cell(row=, column=)方式
cell1 = sheet.cell(row = 1,column = 1)
cell2 = sheet.cell(row = 11,column = 3)
print(cell1.value, cell2.value)
# 5. 获取一系列格子
# 获取 A1:C2 区域的值
cell = sheet["A1:C2"]
print(cell)
for i in cell:
   for j in i:
       print(j.value)

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYUh0akVyZVNSNkY2ZmIwT0l0ekYwRVdJMnN5Q2lhV09aaWJlV2lhV2tSZUNWTHVmRGxpY2g2dkRvdXcvNjQw.png

通过openpyxl库操作excel,使用for循环迭代打印12000行数据仅需要0.47 s

import time
t1 = time.time()
for i in sheet.iter_rows(min_row=1, max_row=12256, min_col=1, max_col=10):
   for j in i:
       print(j.value)
t2=time.time()
print("使用openpyxl工具包遍历12000行数据耗时:%.2f 秒"%(t2-t1))

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYWliUW5sYmdKV3V1R1VRU2lidTlESFVSeGlhd09WMnprNTFuYUNjMUlaYlI4YkFpYVhMbFVwRWc3MVEvNjQw.png

3.xlrd

xlrd是xlrd&xlwt&xlutils三个库中的一个:

xlrd:用于读取 Excel 文件;xlwt:用于写入 Excel 文件;xlutils:用于操作 Excel 文件的实用工具,比如复制、分割、筛选等;

安装比较简单,直接用 pip 工具安装三个库即可,安装命令如下:

$ pip3 install xlrd xlwt xlutils

安装完成提示 Successfully installed xlrd-1.2.0 xlutils-2.0.0 xlwt-1.3.0 即表示安装成功。

接下来我们就从写入 Excel 开始,话不多说直接看代码如下:

# 导入 xlrd 库
import xlrd
# 打开刚才我们写入的 test_w.xls 文件
wb = xlrd.open_workbook("Python招聘数据(全).xlsx")
# 获取并打印 sheet 数量
print( "sheet 数量:", wb.nsheets)
# 获取并打印 sheet 名称
print( "sheet 名称:", wb.sheet_names())
# 根据 sheet 索引获取内容
sh1 = wb.sheet_by_index(0)
# 也可根据 sheet 名称获取内容
# sh = wb.sheet_by_name('成绩')
# 获取并打印该 sheet 行数和列数
print( u"sheet %s 共 %d 行 %d 列" % (sh1.name, sh1.nrows, sh1.ncols))
# 获取并打印某个单元格的值
print( "第一行第二列的值为:", sh1.cell_value(0, 1))
# 获取整行或整列的值
rows = sh1.row_values(0) # 获取第一行内容
cols = sh1.col_values(1) # 获取第二列内容
# 打印获取的行列值
print( "第一行的值为:", rows)
print( "第二列的值为:", cols)
# 获取单元格内容的数据类型
print( "第二行第一列的值类型为:", sh1.cell(1, 0).ctype)

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYUxWUGNrTW14OVJjRUtBTXNZRkR4bE9YRk5tTXN2VE5lTjdhaWNGWGljY3JYd0NpY1RWQUFEWDk5QS82NDA.png

通过xlrd库操作excel,使用for循环迭代打印12000行数据仅需要0.35 s

# # 遍历所有表单内容
import time
t1 = time.time()
for sh in wb.sheets():
    for r in range(sh.nrows):
        # 输出指定行
        print( sh.row(r))
t2=time.time()
print("使用xlrd工具包遍历12000行数据耗时:%.2f 秒"%(t2-t1))

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6Z1NGYVo1UzVsbjRyQmh3dUtGc3lTYVB6ZjR3SXRuVjZtaWJyN0dGVGRYYkNzOG5PS01YUlA2Q1VpY0FxODlET0V0enlteUR2RWdVbktnLzY0MA.png

5.总结

类型 xlrd&xlwt&xlutils pandas OpenPyXL
读取 支持 支持 支持
写入 支持 支持 支持
修改 支持 支持 支持
xls 支持 支持 不支持
xlsx 高版本支持 支持 支持
大文件 不支持 支持 支持
效率
功能 较弱 强大 一般
遍历耗时 0.35 s 2.60 s 0.47 s

这里附上3个模块的性能对比,从遍历时间上xlrd模块最快,从功能强大上我选择pandas,从数据量上我得选择mysql、hadoop、spark🐶

对了,可以加下行哥微信好友,私聊回复「02」可以领取5T编程资料哦

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6amlhR3ZEeDhxUUFIQjVUOUxEaWJPWXZEakpNSks3MWEzUmRLbEdYYTNOMEpIYjN2RGlhNURLZlA2VmdSWFhGbnJZa2Q4MWxWcVlsSFBoZy82NDA.pngaHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aWFrUEhDRzdOcWhud0pvZVl0RGxDUzFFaWNuNm9CME9VWUZUWHVraWEzeXAyeWpPSDVIcXdlYTZqNGUxUW5wNW9KYW8xdTJ1VmliTzRaV2cvNjQw.png

人生苦短,我用Python

祝三连的读者这个月找到对象!!!!!

相关文章
|
20天前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
196 7
|
1月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
183 0
|
1月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
217 100
|
1月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
301 95
|
2月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
401 99
|
1月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
145 88
|
24天前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
218 4
|
1月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
21天前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
179 0
|
22天前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
119 0

推荐镜像

更多