Pandas进阶
本章介绍pandas层次化索引,索引的堆(stack),以及多层索引聚合操作,拼接操作
创建多层行索引
隐式构造
最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组
1  | data = np.random.randint(0,150,size=(6,6))  | 

- Series也可以创建多层索引
 
1  | index = [['一班', '一班', '一班', '二班', '二班', '二班'], ['张三', '李四', '王五', '赵六', '田七', '孙八']]  | 

显示构造pd.MultiIndex
- 使用数组
 
1  | data = np.random.randint(0,150, size=(6,6))  | 

- 使用tuple
 
1  | data = np.random.randint(0,150, size=(6,6))  | 

- 使用product
 
1  | data = np.random.randint(0,150, size=(6,6))  | 

多层索引对象的索引与切片操作
Series的操作
【重要】对于Series来说,直接中括号[]与使用.loc()完全一样,推荐使用中括号索引和切片。

索引
原则: 当有多层索引的时候,不要直接索引内层索引.
1  | # 先索引外层索引 推荐写法  | 

切片

DataFrame的操作
可以直接使用列名称来进行列索引

行多级索引的索引和切片操作

列多级索引的索引和切片操作


【极其重要】推荐使用loc()函数
注意在对行索引的时候,若一级行索引还有多个,对二级行索引会遇到问题!也就是说,无法直接对二级索引进行索引,必须让二级索引变成一级索引后才能对其进行索引!
索引的堆
stack()unstack()
索引的堆指的就是 多层索引中行索引和列索引的转化

1  | # 默认level 是-1  | 

1  | df.stack(level=0)  | 

1  | df.unstack()  | 

1  | 【小技巧】使用unstack()的时候,level等于哪一个,哪一个就消失,出现在列里。  | 

聚合操作
所谓的聚合操作:平均数,方差,最大值,最小值……
1  | sum / min /max / mean / std/ var/ prod/ median / percentile....  | 


1  | # 一班二班,各科成绩的和.  | 
【注意】
- 需要指定axis
 - 【小技巧】和unstack()相反,聚合的时候,axis等于哪一个,哪一个就保留。