Python中的pandas如何读取excel中指定单元格的值?


本段说说使用csv库常见的问题:

  1. csv.DictWriter():该函数返回的结果遍历一次之后,再次遍历返回的结果是空列表。
  2. csv.reader():返回的结果是结构体,需要for循环才能调用,不能像list那样直接选取特定单元格。
  3. 通过列名来查找指定列的操作麻烦。
  1. 每次循环遍历完,重新使用csv.DictWriter()函数读取文件。
  1. 将csv转换成二维列表形式
  2. 支持通过列名查找特定列。
  3. 相比csv库,事半功倍。

2.查找指定列及指定单元格

2.1指定列:通过索引指定列名为hour的列

#指定列名为hour的列 #在hour列中找到时间为23的行

csv文件中:1002A站点0时的AQI为空白值,返回的结果为NAN

  1. 通过运算操作判断:任何数字乘上0都是0

2.推荐使用nan*0之后仍是nan,而不是0

3.加了参数后,输出的所有数据类型变为str,nan变为空值,len(result)=0。

}

为了带大家了解各个库的异同,从而在不同场景下可以灵活使用,本文将横向比较7个可以操作 Excel 文件的常用模块,在比较各模块常用操作的同时进行巩固学习!

首先让我们来整体把握下不同库的特点

  1. 可以读取已经存在的 .xls 文件,xlutils 连接 xlrdxlwt 两个模块,使用户可以同时读写一个 .xls 文件。简单来说,xlrd 负责读、xlwt 负责写、xlutils 负责提供辅助和衔接
  2. xlwings 能够非常方便的读写 Excel 文件中的数据,并且能够进行单元格格式的修改
  3. XlsxWriter 是一个用来写 .xlsx 文件格式的模块。它可以用来写文本、数字、公式并支持单元格格式化、图片、图表、文档配置、自动过滤等特性。但不能用来读取和修改 Excel 文件
  4. pandas 大家都不陌生,是进行数据处理和分析的强大模块,有时也可以用来自动化处理Excel

如果你懒得看详细的对比过程,可以直接看最后的总结图,然后拉到文末收藏点赞就算学会了

7个模块均为非标准库,因此都需要在命令行中 pip 进行安装:

多数模块可以直接通过名字导入,有些模块约定俗称会使用缩写:

xlutils 模块是 xlrdxlwt 之间的桥梁,最核心的作用是拷贝一份通过 xlrd 读取到内存中的 .xls 对象,然后再拷贝对象上通过 xlwt 修改 .xls

并不是所有7个模块都可以读取 Excel 文件,而即使能读取Excel文件也要分不同后缀名进行讨论,具体如下:

如果读取 .xls 文件会报错:

接下来比较四个模块在同一配置电脑下读取 10MB .xlsx 文件的时间(运行3次求平均值),所用代码为:

最后测试的结果是,xlwings 读取 10MB 文件最快,xlrd 次之,openpyxl 最慢(因电脑而异,结果仅供参考)

读入 Excel 文件部分的表格总结如下:

针对上述4个可以读取 Excel 文件的模块,进一步讨论其获取工作表 sheet 的方式

可以通过 sheet 名查找:

xlwings 的工作表分为活动工作表以及指定工作簿下的特定工作表:

.active 方法默认获取工作簿的第一张工作表

另外也可以通过工作表名指定获取工作表:

单独获取工作表完全没有 pandas 什么事情,因为读取文件的同时已经且必须指定工作表才能读取:

简单总结创建 Excel 文件的情况:

xlwings可以创建 .xls.xlsx 文件,只需要最后保存时写清楚后缀即可。使用如下命令:

无论是新建还是打开都需要保存工作簿、关闭工作簿、关闭程序,即:

openpyxl可以创建 .xls.xlsx 文件,只需要最后保存时写清楚后缀即可。使用如下命令:

pandas 只需要最后转存时写清楚后缀即可。实际上比较抽象,pandas 并不需要一开始先创建一个 Excel 文件,可以围绕数据框做各式操作后用 .to_excel 命令再用 .xls 或者 .xlsx 做文件后缀。如果一定要产生一个空白 Excel 文件可以用如下命令:

简单总结保存 Excel 文件的情况:

获取单元格的值基本前提是能够读取文件,因此基本围绕 xlrdxlwingsopenpyxlpandas 介绍。xlutils 由于能够复制一份 .xls 因此也可以使用和 xlrd 完全一样的读取单元格方法。

xlutils 因为是直接拷贝一份 xlrd 适用的对象,读取单元格使用的方法和 xlrd 完全一样。xlwt 没有读取单元格的能力

还是先简单总结对 Excel 文件写入数据的情况:

  1. xlrd 不能写入数据
  2. xlwt 可以写入数据
  3. pandas 将 Excel 文件读取为数据框后,是抽象出数据框层面进行操作,没有了对 Excel 进行单元格写入和修改的概念

代码中的 new_format 是之前预设好的样式,下文会进行介绍

依旧简单总结对 Excel 文件样式调整的情况:

  1. xlwt 可以调整样式

xlwt 支持调整字体、边框、颜色等样式

简单介绍 xlwings 对颜色的调整:

XlsxWriter 包含大量功能,可以创建工作表后对工作表进行高定自定义的样式修改:

openpyxl 样式主要包括字体、边框、段落对齐样式等

简单总结对 Excel 文件插入图片的情况:

xlwt 插入图片要求图片格式必须是 .bmp 格式才能插入成功

scale_y表示相对原图宽高的比例,图片可放大缩小

下面是用xlwings 插入图片的代码,可以指定位置

第一个参数是插入的起始单元格,第二个参数是图片文件的绝对路径

openpyxl也可以给Excel中插入指定图片并修改大小

以上就是根据不同 Python 模块,对常见的 Excel 操作进行对比的全部内容,最终结果汇总如下表所示

请注意,本文目的并不是要评出一个最好的库,仅是从不同角度对不同库进行对比,希望能够让大家了解各个库所擅长的工作。比如pandas虽然处理方便,但是不能添加图片修改样式,openpyxl虽然各种操作都支持,但是速度又相对慢一点等。

只有充分了解不同工具的特点,才能够在不同的场景下灵活运用不同的方法来高效解决问题!如果喜欢本文的话,希望你可以给本文点个赞!

}

我要回帖

更多关于 pandas读取excel前几行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信