之前分享过python调用过ppt和word,作为一家人的excel当然要整整齐齐的安排上
相对于excel,已经有人都写成了一本书。这里一篇文档根本写不下,但是行哥想起来若干年前,在处理数据的时候最大的难题就是导入excel数据,因为后来的数据清洗,提取都可以一步步来做。但是数据导入因为教程不一,文字编码不一,着实快成为我从入门到放弃的第一块门槛
所以本文介绍三种强大的python模块来读取excel,选用案例是之前分享过的分析2020年12000条python招聘数据,有兴趣的可以点击这里看一下
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%
使用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))
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)
通过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))
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)
通过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))
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编程资料哦
人生苦短,我用Python
祝三连的读者这个月找到对象!!!!!