文章目录
六、层级索引
对于高维的数据,可以通过将其纬度转换成不同层级的索引,从而实现将高维数组转换成类似一维Series或二维DataFrame对象的形式。
1.多级索引Series
如何用一维的Series表示二维数据
1)笨方法,将两个维度合并成一个元组索引
取值和切片方法同正常的Series
但是如果想取其中某一个维度的某元素数据,就比较麻烦
2).好办法:Pandas多级索引MultiIndex
切片方法与pandas方法一致
pop['California':'Texas'][:,2000]
3).维度与索引unstack()和stack()
维度与索引可以互相转换
索引–unstack()
–>维度:默认将最后一层索引转换成维度
维度-----stack()
–>索引:默认将维度转换成最后一层索引
研究多层索引的意义就是:
如果我们可以用含多级索引的一维 Series 数据表示二维数据,那么我们就可以用 Series 或 DataFrame 表示三维甚至更高维度的数据。
多级索引每增加一级,就表示数据增加一维,利用这一特点就可以轻松表示任意维度的数据了。
2.多级索引的创建方法
1).隐式地创建多层索引
一是直接将index参数设置二维及以上的索引数据
二是将元组作为键的字典传递给 Pandas, Pandas 也会默认转换为 MultiIndex
2)隐式地创建索引
a.创建方法
pd.MultiIndex.from_arrays()
数组
pd.MultiIndex.from_tuples()
元组
pd.MultiIndex.from_product()
笛卡尔积
pd.MultiIndex(levels,labels)
levels,labels参数
b.为多层索引设置名称
c.多级列索引
切片
3.多级索引的取值与切换
1).Series多级索引
2).DataFrame多级索引
4.多级索引行列转换
1).有序的索引和无序的索引
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200825141853774.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDg0NDExNg==,size_16,color_FFFFFF,t_70#pic_center
2).索引stack与unstack
unstack(level=-1, fill_value=None)
stack(level=-1, dropna=True)
3).索引的设置与重置 reset_index
reset_index(level=None, drop=False, name=None, inplace=False)
是将索引设置成正常的列
set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
是将列设置成索引
当然,也可以直接赋值给DataFrame的索引属性
df.index = df.date
5.多级索引的数据累计方法
Pandas 自带的数据累计方法,比如 mean()、 sum() 和 max(),也适用于多级索引