本章重点
数据可能分散在许多文件或数据库中,存储的形式也不利于分析。本章关注可以聚合、合并、重塑数据的方法。
总结
8.1 层次化索引
1.层次化索引
对于数据分散的情况常使用层次化索引,层次化索引是pandas的⼀项重要功能,它使你能在⼀个轴上拥有多个(两个以上)索引级别。抽象点说,它使你能以低维度形式处理高维度数据。
data=pd.Series(np.random.randn(9),
index=[['a','a','a','b','b','c','c','d','d'],
[1,2,3,1,3,1,2,2,3]])
#输出 注意有两个索引 MultiIndex
#索引之间的“间隔”表示“直接使⽤上⾯的标签
a 1 -1.925518
2 1.053123
3 -0.760436
b 1 0.534796
3 -1.025699
c 1 0.213862
2 -0.483737
d 2 -0.356384
3 -1.010102
dtype: float64
对于⼀个层次化索引的对象,可以使用所谓的部分索引,使用它选取数据子集的操作更简单。
data['a']
#输出
1 -0.446613
2 0.120970
3 0.990672
dtype: float64
切片: 注意先行后列
data.loc[:, 2] # 先行后列
#输出
a 0.895573
c 0.638414
d -1.139403
dtype: float64
层次化索引在数据重塑和基于分组的操作(如透视表生成)中扮演着重要的角色。如通过unstack方法将这段数据重新
安排到⼀个DataFrame中:
data.unstack()
#输出
1 2 3
a 1.987082 -0.351358 -0.685920
b 0.595239 NaN -0.668121
c -0.944251 0.838090 NaN
d NaN 1.353632 -0.998955
unstack的逆运算是stack。
对于⼀个DataFrame,每条轴都可以有分层索引:
frame