pandas -- 基础操作(三) :pandas 层次化索引创建、数据选择

# pandas -- 基础操作(三) :pandas 层次化索引创建、数据选择

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

pandas 层次化索引, 创建多维数据操作


当数据高于二维时,我们一般用包含多层级索引的Dataframe进行表示,使用多层级索引展示数据更加直观,操作数据更加灵活,并且可以表示3维,4维乃至任意维度的数据。
本章主要内容:利用多层索引的DataFrame来表示多维数据,包括多层索引的创建,数据选择,数据分组以及透视表等。

一、pandas多层化索引

1. 创建多层索引

1.1 隐式构建多层索引
  • 指定多层columns索引
df = pd.DataFrame(data = np.random.randint(10,100,size=(9,4)),
					index=np.arange(1,10,1),
					columns=[['a','a','b','b'],['aa1','aa2','bb1','bb2']])
df
    a       b    
  aa1 aa2 bb1 bb2
1  40  56  45  54
2  20  90  77  70
3  90  49  64  76
4  44  40  13  27
5  71  67  16  65
6  43  43  75  31
7  98  38  82  60
8  94  37  36  96
9  57  33  33  89
  • 指定多层index转置
df = pd.DataFrame(data = np.random.randint(0,10,size=(2,4)),
					index=[['a','b'],['aa','bb']],
					columns=['aa1','aa2','bb1','bb2'])
df
      aa1  aa2  bb1  bb2
a aa    0    4    2    3
b bb    4    2    8    8
dff = df.T  # 转置
dff
     a  b
    aa bb
aa1  0  4
aa2  4  2
bb1  2  8
bb2  3  8
  • 多层index和columns
df2 = pd.DataFrame(data= np.random.randint(0,100,size=(5,4)),
					index=[['a','a','a','b','b'],['aa1','aa2','aa3','bb1','bb2']],
					columns=[['class1','class2','class2','class3'],['A','B','C','D']])
df2
      class1 class2     class3
           A      B   C      D
a aa1      3     83  70     80
  aa2     87     52  36     45
  aa3     89     79   4     56
b bb1     12     14  67     19
  bb2      6     82  81     40
1.2 pd.MultiIndex 显式构建多层级索引
  1. from_tuples 方法构建多层级索引
  2. from_product 方法构建多层级索引

代码详解:

arrays = [list('aaaabbccc'),list('123423123')]
tuples = list(zip(*arrays))  # 需要带*
tuples
[('a', '1'), ('a', '2'), ('a', '3'), ('a', '4'), ('b', '2'), ('b', '3'), ('c', '1'), ('c', '2'), ('c', '3')]
# from_tuples 方法构建多层级索引
df = pd.DataFrame(data=np.random.randint(0,100,size=(9,9)),
				index=np.arange(1,10,1),
				columns=pd.MultiIndex.from_tuples(tuples, names=['first', 'second']))
df
first    a               b       c        
second   
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值