pandas入门-层次化索引

本文是对pandas的层次化索引的一个回顾性总结。

 

 

multiIndex

层次化索引(hierarchical indexing)它使你能在一个轴上拥有多个(两个以上)索引级别。抽象点说,它使你能以低维度形式处理高维度数据。
    例子

data = Series(np.random.randn(10),  index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]]) # 这里面即有两级
print(data)
print(data.index) # 可以看到为multi.index有两级,levels是外层的,labels是里层的

 输出

a  1    0.274992
    2    0.228913
    3    1.352917
b  1    0.886429
    2   -2.001637
    3   -0.371843
c  1    1.669025
    2   -0.438570
d  2   -0.539741
    3    0.476985
dtype: float64
MultiIndex(levels=[[u'a', u'b', u'c', u'd'], [1, 2, 3]],
           labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])
注意 :data[:,2]  # 第一个值为第一级索引(此为:表示全部),第二个表示第二级索引(此为表示索引值都为2的),而并不是值列2
输出
 a   -1.860761
b   -1.265934
c    0.332883
d   -2.359419
dtype: float64

unstack  

层次化索引在数据重塑和基于分组的操作(如透视表生成)中扮演着重要的角色。例如,可以通过unstack方法将这段数据重新安排到一个DataFrame中: 例子
        print(data.unstack()) # 通过unstack将上面含有多级索引的Series data 转换成一个DataFrame中去。
 输出
          1              2             3
a -1.541996 -0.970736 -1.307030
b  0.286350  0.377984 -0.753887
c  0.331286  1.349742       NaN
d       NaN  0.069877  0.246674
                    

stack  

unstack的逆运算是stack:
    例子
        data.unstack().stack() #stack方法将一个DataFrame转换为一个多级索引的Series,为unstack的逆运算
 输出
a  1    0.246674
   2   -0.011862
   3    1.004812
b  1    1.327195
   2   -0.919262
   3   -1.549106
c  1    0.022185
   2    0.758363
d  2   -0.660524
   3    0.862580
dtype: float64

根据级别进行汇总案例

这个参见
    https://wizardforcel.gitbooks.io/pyda-2e/content/8.html
    主要是在里面指定 level的值
        如frame.sum(level='key2')

参考与鸣谢: 

《利用python进行数据分析》

https://wizardforcel.gitbooks.io/pyda-2e/content/8.html

你可能感兴趣的:(特征工程与数据分析)