机文章

怎么用python读取数据python怎么读:用Python读取Excel文件指南 学到了吗

 

当我们谈论互联网时,我们总是能发现许多令人兴奋的事情。今天,就让我们坐下来,聊1聊最近在这个令人着迷的领域中发生的1些令人瞩目的事件。

原作者丨Erik Marsja编译者丨老齐本文将重点阐述用Python如何读取Excel文件(xlsx),重点是演示使用openpyxl模块读取xlsx类型的文件首先,我们要看1些简单的示例;然后,我们将学习读取多个Excel文件。

如果你阅读过《数据准备和特征工程》这本书,就肯定知道,在书中,作者介绍了如何使用Pandas读取Excel文件在阐述本文的同时,你所看到的书中的方法,依然有效且常用本文的目的次要是要介绍另外1种方法,并且这种方法也有它的特点。

Openpyxl简介openpyxl模块的官方网站是:https://openpyxl.readthedocs.io/en/stable/这里,先演示1个简单的示例,看看在Python语言中如何用openpyxl模块读取1个xlsx文件。

import openpyxlfrom pathlib import Pathxlsx_file = Path(SimData, play_data.xlsx)wb_obj = openpyxl.load_workbook(xlsx_file) 

# 得到当前工作表:sheet = wb_obj.active当然,在理解上面代码之前,你应该已经知道如何读写文件了,如果这方面尚有没有足,请阅读《跟老齐学Python:轻松入门》中的有关章节为了能够使用openpyxl模块,请先确认,在本地已经安装了Python3和这个模块。

模块的安装方法非常简单,即:pip install openpyxl,如果你使用的是conda,还可以:conda install openpyxl注意,使用pip安装的时候,如果提示你没有是最新版本,应该尽快升级,用最新版本的pip来安装。

读取单个文件前面的代码中,已经读取了单个文件,上面我们更详细地对代码进行解读引入模块读取xlsx文件的第1步,就是要引入必要的模块,这里我们引入了Path和openpyxl两个模块import openpyxl。

from pathlib import Path

设置Excel文件路径在这1步,我们用Path创建了1个实例,并且用变量xlsx_file引用,它包含了文件的路径和文件名称# Setting the path to the xlsx file:xlsx_file = Path(。

SimData, play_data.xlsx)

注意,代码中的SimData是当前工作目录的子目录,本例中的Excel文件保存在该目录中,如果保存在了其他目录中,需要设置完整的文件路径,例如:xlsx_file = Path(Path.home(), Documents, SimData, play_data.xlsx)

,这是将Excel文件保存到了Documents目录里面的SimData子目录中了读入Excel文件(工作簿)第3步,利用load_workbook()方法读取文件:wb_obj = openpyxl.load_workbook(xlsx_file)。

打印输出结果说明,当前得到的是工作簿对象。从Excel文件中读入当前工作表1个工作簿,有多个工作表。我们能够使用的是当前的工作表,可以用上面的方式获得:wsheet = wb_obj.active

如果知道了工作表名称,可以用这种方式得到指定工作表play_data = wb_obj[play_data]这样就能够实现工作表的切换操作工作表现在可以编辑工作表了,例如,用上面的方式获得指定单元格的值。

print(sheet["C2"].value)再如,对于已经读取到的工作表,我们能够用循环语句获得指定行,并且把各个单元格中的值打印出来for row in sheet.iter_rows(max_row=。

6):for cell in row:        print(cell.value, end=" ")    print()注意,上面代码中的参数max_row,其值为6,意味着读取这个工作表的前6行。

补充:输出行和列的数量再补充1个常用操作,就是确定Excel文件的行和列的数量。print(sheet.max_row, sheet.max_column)

将读入的Excel文件保存为Python字典把Excel文件的内容读入以后,怎么将它保存为字典对象?有时候,你可能需要得到列的名称,上面代码就演示了如何实现这种需求import openpyxlfrom。

 pathlib import Pathxlsx_file = Path(SimData, play_data.xlsx)wb_obj = openpyxl.load_workbook(xlsx_file)

sheet = wb_obj.activecol_names = []for column in sheet.iter_cols(1, sheet.max_column):    col_names.end(column[

0].value)print(col_names)为了将Excel内容保存为字典对象,当然要创建1个字典,然后就是通过循环的方式,向字典中增加相应内容data = {}for i, row in enumerate(sheet.iter_rows(values_only=。

True)):if i == 0:        data[row[1]] = []        data[row[2]] = []        data[row[3]] = []        data[row[

4]] = []        data[row[5]] = []        data[row[6]] = []else:        data[Subject ID].end(row[1])

        data[First Name].end(row[2])        data[Day].end(row[3])        data[Age].end(row[4

])        data[RT].end(row[5])        data[Gender].end(row[6])在上面的代码中,创建了1个字典data,然后循环每1行(iter_rows

),并且仅仅获取该行的值接下来使用条件语句,判断1下,如果是第1行,就增加字典的键,这其实是以键为列的名称否则,将根据键(加Excel中的每1列)向字典中增加值读取多个Excel文件上面,我们要用openpyxl模块读取多个xlsx文件。

导入模块除了前面使用过的两个模块以外,增加了1个globimport globimport openpyxlfrom pathlib import Path读取目录中的所有xlsx文件假设在子目录中有多个xlsx文件,现在我们使用。

glob模块,将它们都读入:xlsx_files = [path for path in Path(XLSX_FILES).rglob(*.xlsx)]创建工作簿对象现在已经读入了所有xlsx文件,接下来还是使用

load_workbook方法创建工作簿对象,没有过,这次要使用列表解析的方式循环了wbs = [openpyxl.load_workbook(wb) for wb in xlsx_files]这个列表中包含了所有xlsx文件的工作簿对象。

操纵每个文件所有的工作簿对象都保存到了wbs引用的列表中,比如要得到第1个工作簿,可以用wbs[0],它的默认工作表名称,可以用wbs[0].sheetnames得到其他操作跟前面就没有什么差别了这样我们就能读入多个Excel文件了。

参考链接:https://www.marsja.se/your-guide-to-reading-excel-xlsx-files-in-python/

博文视点学院好课推荐

在很多人眼里,程序员是1个神秘的职业,编程更是深没有可测的天下对编程充满了向往和好奇,但是又苦于找没有到入门的方法本套课程就是为了这些人准备的,通过学习Python语言,打开编程天下的大门!本课程形式为线上视频教学+纸质图书,仅需39元!。

▼ 扫码立即学 ▼

如果喜欢本文欢迎在看丨留言丨分享至朋友圈 3连热文推荐 书单丨10本“压箱底级”传世经典著作推荐!1点务实的调整,避免整个开发团队崩溃Spring Boot面试核心总结,关键时刻可以救命!面对微服务的N种坑,你有通关秘籍吗?

如果您觉得这篇文章很有价值,请分享给您的朋友们!

为您推荐

怎么用python读取数据python怎么读:用Python读取Excel文件指南 学到了吗

怎么用python读取数据python怎么读:用Python读取Excel文件指南 学到了吗

​本文将重点阐述用Python如何读取Excel文件(xlsx),重点是演示使用openpyxl模块读取xlsx类型的文件。...

2023-06-09 栏目:编程控

当前非电脑浏览器正常宽度,请使用移动设备访问本站!