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

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

相关文章
|
1月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
38 6
|
25天前
|
Python
Python Internet 模块
Python Internet 模块。
121 74
|
9天前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
51 33
|
6天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
4天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
18 3
|
10天前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
36 10
|
30天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
69 8
|
1月前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
55 11
|
1月前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
1月前
|
程序员 测试技术 数据安全/隐私保护
深入理解Python装饰器:提升代码重用与可读性
本文旨在为中高级Python开发者提供一份关于装饰器的深度解析。通过探讨装饰器的基本原理、类型以及在实际项目中的应用案例,帮助读者更好地理解并运用这一强大的语言特性。不同于常规摘要,本文将以一个实际的软件开发场景引入,逐步揭示装饰器如何优化代码结构,提高开发效率和代码质量。
51 6