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

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

相关文章
|
10天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
46 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
5天前
|
缓存 监控 测试技术
Python中的装饰器:功能扩展与代码复用的利器###
本文深入探讨了Python中装饰器的概念、实现机制及其在实际开发中的应用价值。通过生动的实例和详尽的解释,文章展示了装饰器如何增强函数功能、提升代码可读性和维护性,并鼓励读者在项目中灵活运用这一强大的语言特性。 ###
|
8天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
6天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
19 5
|
4天前
|
Python
探索Python中的装饰器:简化代码,提升效率
【10月更文挑战第39天】在编程的世界中,我们总是在寻找使代码更简洁、更高效的方法。Python的装饰器提供了一种强大的工具,能够让我们做到这一点。本文将深入探讨装饰器的基本概念,展示如何通过它们来增强函数的功能,同时保持代码的整洁性。我们将从基础开始,逐步深入到装饰器的高级用法,让你了解如何利用这一特性来优化你的Python代码。准备好让你的代码变得更加优雅和强大了吗?让我们开始吧!
13 1
|
9天前
|
设计模式 缓存 监控
Python中的装饰器:代码的魔法增强剂
在Python编程中,装饰器是一种强大而灵活的工具,它允许程序员在不修改函数或方法源代码的情况下增加额外的功能。本文将探讨装饰器的定义、工作原理以及如何通过自定义和标准库中的装饰器来优化代码结构和提高开发效率。通过实例演示,我们将深入了解装饰器的应用,包括日志记录、性能测量、事务处理等常见场景。此外,我们还将讨论装饰器的高级用法,如带参数的装饰器和类装饰器,为读者提供全面的装饰器使用指南。
|
5天前
|
存储 缓存 监控
掌握Python装饰器:提升代码复用性与可读性的利器
在本文中,我们将深入探讨Python装饰器的概念、工作原理以及如何有效地应用它们来增强代码的可读性和复用性。不同于传统的函数调用,装饰器提供了一种优雅的方式来修改或扩展函数的行为,而无需直接修改原始函数代码。通过实际示例和应用场景分析,本文旨在帮助读者理解装饰器的实用性,并鼓励在日常编程实践中灵活运用这一强大特性。
|
9天前
|
存储 算法 搜索推荐
Python高手必备!揭秘图(Graph)的N种风骚表示法,让你的代码瞬间高大上
在Python中,图作为重要的数据结构,广泛应用于社交网络分析、路径查找等领域。本文介绍四种图的表示方法:邻接矩阵、邻接表、边列表和邻接集。每种方法都有其特点和适用场景,掌握它们能提升代码效率和可读性,让你在项目中脱颖而出。
23 5
|
7天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
17 2
|
9天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
26 4