
3.2 数据的索引
索引是对数据中一列或多列的值进行排序的一种结构,使用索引可以快速访问数据中的特定信息。本节将会介绍Python如何创建索引、重构索引、调整索引等,使用的数据文件为“2020年两个学期学生考试成绩.xls”。
3.2.1 set_index()函数:创建索引
在创建索引之前,先创建一个由4名学生考试成绩构成的数据集,代码如下:

运行上述代码,创建的数据集如下所示。

使用index(索引)可以查看所有数据集,默认是从0开始步长为1的数值索引,代码如下:

代码输出结果如下所示。

set_index()函数可以将其一列转换为行索引,代码如下:

代码输出结果如下所示。

set_index()函数还可以将其多列转换为行索引,代码如下:

代码输出结果如下所示。

在默认情况下,索引列字段会从数据集中移除,但是通过设置drop参数也可以将其保留下来,代码如下:

代码输出结果如下所示。

3.2.2 unstack()函数:重构索引
reset_index()函数的功能与set_index()函数的功能相反,层次化索引的级别会被转移到数据集中的列里面,代码如下:

代码输出结果如下所示。

可以通过unstack()函数对数据集进行重构,其功能类似于pivot()函数的功能,不同之处在于,unstack()函数是针对索引或标签的,即将列索引转成最内层的行索引;而pivot()函数则是针对列的值,即指定某列的值作为行索引,代码如下:

代码输出结果如下所示。

此外,stack()函数是unstack()函数的逆运算,代码如下:

代码输出结果如下所示。

3.2.3 swaplevel()函数:调整索引
有时,可能需要调整索引的顺序,swaplevel()函数接受两个级别编号或名称,并返回一个互换了级别的新对象。例如,对学期和课程的索引级别进行调整,代码如下:

代码输出结果如下所示。

sort_index()函数可以对数据进行排序,参数level设置需要排序的列。需要注意的是,这里的列包含索引列,第1列是0(“学期”列),第2列是1(“课程”列),代码如下:

代码输出结果如下所示。
