在本章和下一章里,我们将研究两种文件类型实例:Excel 文件和 PDF,并给出几条一般性说明,在遇到其他文件类型时可以参考。
处理 Excel 比上章讲的处理 CSV、JSON、XML 文件要难多了,下面以 UNICEF(联合国儿童基金会) 2014 年的报告为例,来讲解如何处理 Excel 数据。
相关文章:
Python数据处理(一):处理 JSON、XML、CSV 三种格式数据
一、安装 Python 包
要解析 Excel 文件,需要用第三方的包 xlrd
。我们用 pip
来安装第三方包,在命令行输入以下安装命令:
pip install xlrd
如果提示 command not found
,则需要先安装 pip
。安装方法见 pip 官网:https://pip.pypa.io/en/stable/installing/ 。
二、解析 Excel 文件
想从 Excel 工作表中提取数据,有时最简单的方式反而是寻找更好的方法来获取数据。直接解析有时并不能解决问题。所以在解析之前先看看能不能找到其他格式的数据,比如 CSV、JSON、XML等,如果真找不到再考虑 Excel 解析。
处理 Excel 文件主要有三个库。
-
xlrd
读取 Excel 文件。 -
xlwt
向 Excel 文件写入,并设置格式。 -
xlutils
一组 Excel 高级操作工具(需要先安装 xlrd 和 xlwt)。
在用到这三个库的时候你需要分别安装。但本章只会用到 xlrd。
下面一步步的讲解如何解析 Excel 文件。
先导入 xlrd
库,然后打开工作簿并保存在 book
变量中。
import xlrd
book = xlrd.open_workbook('./resource/data.xlsx')
与 CSV 不同,Excel 工作簿可以有多个标签(tab)或工作表(sheet)。想要获取数据,我们要找到包含目标数据的工作表。
如果有几个工作表,你可以猜一下索引号,但如果工作表很多的话就没法猜了。所以你应该知道 book.sheet_by_name(somename) 命令,其中 somename 是你要访问工作表的名字。
我们来看一下工作表都有哪些名字:
import xlrd
book = xlrd.open_workbook('./resource/data.xlsx')
for sheet in book.sheets():
print(sheet.name)
book.sheets()
列出所有的 sheet,sheet.name
打印出 sheet 的名字。输出:
Data Notes
Table 9
我们要找的工作表是 Table 9。所以我们把这个名字添加到脚本中:
import xlrd
book = xlrd.open_workbook('./res