层次化索引

层次化索引是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引级别。抽象点说,它使你能以降低唯独形式处理高维度数据。

层次化索引_第1张图片

带有MultiIndex索引的Series的格式化输出格式。索引之间的"间隔"表示"直接使用上面的标签":


对于一个层次化的索引的对象,选取数据子集的操作很简单:

层次化索引_第2张图片

有时甚至还可以在"内层"中进行选取:

层次化索引_第3张图片

层次化索引在数据重塑和基于分组的操作(如透视表生成)中扮演着重要的角色。比如,这段数据可以通过其unstack方法被重新安排到一个DataFrame中:

层次化索引_第4张图片

unstack的运算是stack

层次化索引_第5张图片

对于一个DataFrame,每条轴都可以有分层索引:

层次化索引_第6张图片

各层都可以有名字(可以是字符串,也可以是别的Python对象)。如果指定了名称,它们就会显示在控制台输出中(不要将索引名称跟轴标签混为一谈):

层次化索引_第7张图片

由于有了分部的列索引,因此可以轻松的选取列分组:

层次化索引_第8张图片

可以单独创建MultiIndex然后复用。上面那个DataFrame中的(分级的)列可以这样创建:


重新分级顺序
有时,你需要重新调整某条轴上各级别的顺序,或根据指定级别上的值 对数据进行排序。swaplevel接受两个级别编号或名称,并返回一个互换了级别的新对象(但数据不会发生变化):

层次化索引_第9张图片

而sortlevel则根据单个级别中的值对数据进行排序(稳定的)。交换级别时,常常也会用到sortlevel,这样最终结果就是有序的了:

层次化索引_第10张图片

层次化索引_第11张图片

根据级别汇总统计
许多对DataFrame和Series的描述和汇总统计都有一个level选项,它用于指定在某条轴上求和的级别。

层次化索引_第12张图片

使用DataFrame的列
人们经常想要将DataFrame的一个或多个列当行索引来用,或者可能希望将行索引变成DataFrame的列。以下面这个DataFrame为例:

层次化索引_第13张图片

DataFrame的set_index函数会将其中一个或多个列转换为行索引,并创建一个新的DataFrame.

层次化索引_第14张图片

默认情况下,那些列会从DataFrame中移除,但可以将其保留下来。

reset_index的功能跟set_index刚好相反,层次化索引的级别会被转移到列里面:

层次化索引_第15张图片

你可能感兴趣的:(Big,Data)