pandas入门-层次化索引

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

层次化索引(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方法将这段数据重新安排到一个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

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

Original: https://blog.csdn.net/wangwangstone/article/details/117459933
Author: 旺仔的算法coding笔记
Title: pandas入门-层次化索引

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/756715/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球