pandas库是基于NumPy库的一个开源Python库,广泛应用于完成数据快速分析、数据清洗和准备等工作,它的名字来源于“panel data”(面板数据)。pandas库提供了非常直观的数据结构及强大的数据管理和数据处理功能,某种程度上可以把pandas库看成Python版的Excel。pandas库也是Anaconda自带的,无须单独安装。
与NumPy库相比,pandas库更擅长处理二维数据。pandas库主要有Series和DataFrame两种数据结构。Series类似于通过NumPy库创建的一维数组,不同的是Series对象不仅包含数值,还包含一组索引,其创建方式如下:
import pandas as pd
s1 = pd.Series(['丁一', '王二', '张三'])
s1的打印输出结果如下,它也是一个一维数据结构,并且每个元素都有一个可以用来定位的行索引:
Series单独使用相对较少,pandas库主要是为了使用它提供的DataFrame数据结构。DataFrame是一种二维表格数据结构,可以将其看成一个Excel表格。
DataFrame可以通过列表、字典或二维数组创建,下面分别介绍具体创建方法。
通过列表创建DataFrame和通过NumPy库创建二维数组比较类似。引入pandas库的方式通常为“import pandas as pd”,然后调用DataFrame()函数创建DataFrame,代码如下:
import pandas as pd
a = pd.DataFrame([[1, 2], [3, 4], [5, 6]])
print(a) # 在Jupyter Notebook中也可以直接输入变量名a来查看
运行结果如下。
通过比较可以发现,用pandas库的DataFrame()函数创建的DataFrame更像Excel中的二维表格数据,它也有行索引和列索引。需要注意的是,这里的索引序号是从0开始的。
除了通过列表创建DataFrame,还可以通过字典创建DataFrame,并可以自定义列索引,这里默认字典键为列索引,代码如下:
import pandas as pd
b = pd.DataFrame({'a': [1, 3, 5], 'b': [2, 4, 6]}, index=['x', 'y', 'z'])
print(b) # 在Jupyter Notebook中也可以直接输入变量名b来查看
运行结果如下,可以看到列索引已经变成了字典里的键名。
如果想让字典键变成行索引,可以使用from_dict()函数将字典转换成DataFrame,并同时设置orient参数为index,代码如下:
c = pd.DataFrame.from_dict({'a': [1, 3, 5], 'b': [2, 4, 6]}, orient="index")
print(c)
其中orient参数用于指定字典键为列索引还是行索引,默认值为columns,即默认字典键为列索引,如果设置成index,则表示字典键为行索引,运行结果如下:
在NumPy库创建的二维数组的基础上,也可以创建DataFrame,代码如下:
import numpy as np, pandas as pd
d = pd.DataFrame(np.arange(12).reshape(3, 4), index=[1, 2, 3], columns
=['A', 'B', 'C', 'D'])
通过pandas库可以从多种数据文件中读取数据,也可以将获得的数据写入这些文件中
以下代码用于读取Excel工作簿中的数据。
import pandas as pd
data = pd.read_excel('data.xlsx') # data为DataFrame结构
这里的Excel工作簿文件扩展名为.xlsx,如果是2003版或更早版本的Excel工作簿文件,其扩展名为.xls。这里使用的文件路径是相对路径,即代码文件所在的文件夹,也可以设置成绝对路径。
通过打印data便可以查看读取到的表格内容,也可以使用data.head()函数打印表格的前5行内容,代码如下。如果写成data.head(10),则可以打印前10行内容,依此类推。
read_excel()函数还可以设定更多参数,演示代码如下。
data = pd.read_excel('data.xlsx', sheet_name=0, encoding='utf-8')
除了读取Excel工作簿,pandas库还可以读取CSV文件。CSV文件本质上是一个文本文件,它仅存储数据,不能像Excel工作簿那样存储格式、公式、宏等信息,所以所占存储空间通常较小。CSV文件一般用逗号分隔一系列值,既可以用Excel打开,也可以用文本编辑器(如“记事本”)打开。
以下代码用于读取CSV文件。
data = pd.read_csv('data.csv', delimiter=',', encoding='utf-8')
以下代码可以将数据写入Excel工作簿:
# 先创建一个DataFrame
data = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=['A列', 'B列'])
# 将DataFrame中的数据写入Excel工作簿
data.to_excel('data_new.xlsx')