1. Excel文件简介
Excel是微软Office套件中最重要的工具之一,也是数据科学中常用的图形化工具。很多人仍然习惯于使用Excel进行数据分析。本节将学习如何使用Python读写Excel文件,以方便程序员与数据分析师之间的交流,只要你需要跟别人合作,这种交流几乎是不可避免的。 下面将使用Pandas提供的方法来处理Excel文件,实际上Pandas是通过集成xlrd和xlwt来分别完成读和写Excel的工作的。读者可以通过下面的方式来安装Pandas的这个模块: $pip install pandas
$pip install xlrd
$pip install xlwt
2. 读Excel文件
Excel文件最基本的组成部分就是Sheet,一个正常的Excel会拥有一个至多个Sheet,如果没有改过名字的话,应该是Sheet1、Sheet2、Sheet3等。所以读取Excel文件的第一种最基础的方法就是使用Pandas中的read_excel()方法,并且还须制定要读取的文件名及Sheet,示例代码如下: # ! /usr/bin/python
# -*- coding: utf-8-*-
from __future__ import print_function
import pandas as pd
from pandas import read_excel
pd.set_option('display.max_columns', 4)
pd.set_option('display.max_rows', 6)
df = read_excel('/Users/jilu/Downloads/A0202.xls', 'Sheet1')
print(df)
其运行结果如下:
2-2 全国各民族分性别、受教育程度的6岁及以上人口Unnamed: 1 ... Unnamed: 23 Unnamed: 24
0 NaN NaN ... NaN NaN
1 NaN 单位:人 ... NaN NaN
2 民 族 6岁及以上人口 ... NaN NaN
.. ... ... ... ... ...
60 基诺族 21014 ... 11 9
61 其他未识别的民族 574451 ... 132 52
62 外国人加入中国国籍的
1360 ... 5 5
[63 rows x 25 columns]
可以看到,原始的Excel文件中有一些多余的空行,而且我们也不想在读取的数据中显示第一列的序号,那么将读取Excel的代码改为如下的形式:
df = read_excel('/Users/jilu/Downloads/A0202.xls', 'Sheet1', index_col=0,
skiprows=3)
再次运行之后得到的结果是:
6岁及以上人口 Unnamed: 2 ... Unnamed: 23 Unnamed: 24
民 族 ...
NaN 合计 男 ... 男 女
总 计 1242546122 633278387 ... 2351251 1787334
汉 族 1140804980 581418089 ... 2258424 1697235
... ... ... ... ... ...
基诺族 21014 10648 ... 11 9
其他未识别的民族 574451 297632 ... 132 52
外国人加入中国国籍的 1360 514 ... 5 5
这一次就正常多了,在read_excel()函数中使用了index_col及skiprows这两个参数,前者是告诉程序哪一行是序号行,可以隐藏。第二个参数表示跳过Excel开头的几行,不去读取这些行的信息。
与打开普通文件的方式类似,也可以使用上下文管理器with打开Excel文件,如果一个Excel有多个Sheet,则可以使用下面的方法来打开:
with pd.ExcelFile('/Users/jilu/Downloads/A0202.xls') as xls:
for x in range(1, 2):
df = read_excel(xls, 'Sheet{}'.format(x) , index_col=0, skiprows=3)
print(df)
其执行的结果就不再赘述了。
3. 写Excel文件
写Excel文件相对来说就更加简单一些,首先要创建一个Pandas的DataFrame的数据结构,然后调用DataFrame的to_excel()方法,参考下面的程序:
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],
index=[0, 1, 2], columns=list("ABCD"))
df.to_excel('/Users/jilu/Downloads/test.xls')
我们可以使用由Python列表组成的列表代表一个表格,每一个外层列表中的元素都对应了Excel中的一行,除了需要被保存的数据之外,还需要指明每一行的索引及每一列的列名。这里遵循Excel的规则——行索引使用数字,列名使用大写字母。最终保存的文件test. xls的内容如图所示。
图1 Python写入Excel例子