数据分析之pandas学习笔记(六)(数据表:啊~我被玩坏了、)

level层次化索引

用于数组重塑
以低维度处理高维度数据
基于分组的操作
透视表的生成
pandas的层次化索引示例

unstack()与stack()进行重塑,即:行列索引变换

以DataFrame为例:
df.stack()
降维
列索引最上侧的那一排索引 加到 行索引最右侧
df.unstack()
升维

行索引最右侧的那一竖索引 加到 列索引最上侧

swaplevel()交换两个索引位置

df.swaplevel(0,1)
可以为name,也可以为level索引
数据分析之pandas学习笔记(六)(数据表:啊~我被玩坏了、)

sort_index()排序与 sum(level= )求和排序

df.sort_index(level=0)
对相应维度的那列索引排序
df.sum(level=0)
对行索引求和并自动排序

set_index()和reset_index()索引和列之间相互变换

df.set_index(['c','d'])
将c,d两 --> 变成 --> 行索引

通过添加drop=False字段,会创建出一个新的DataFrame,保留住原来cd这两列的数据。
数据分析之pandas学习笔记(六)(数据表:啊~我被玩坏了、)

df.reset_index()
reset_index的功能跟set_index刚好相反,层次化索引的级别会被转移到列里面
数据分析之pandas学习笔记(六)(数据表:啊~我被玩坏了、)

轴向旋转

重塑(轴向旋转的一种)stack()和unstack()

上面提到了重塑,它其实是轴向旋转的一种
.stack().unstack()操作的都是最内层,在进行轴向旋转的时候,轴级别也会成为结果中的最低级别。
(可以结合上面stack()和unstack()部分的例子。。。体会一下)

轴向旋转pivot()长变宽

df.pivot(index='',columns='',values='')
pandas.DataFrame.pivot()官方文档
将某列作为行索引,某列作为列索引,某(若干)列作为值。
本质有点类似于,先set_index创建层次化索引,然后unstack重塑。

例如下面这样:
数据分析之pandas学习笔记(六)(数据表:啊~我被玩坏了、)

相当于合并同类项(每个value对应的行列索引是唯一的,)
什么意思?看下面这个例子:
数据分析之pandas学习笔记(六)(数据表:啊~我被玩坏了、)但是你用df.pivot_table() 这个方法,就可以避免上述唯一性的问题。

melt()宽变长