美文网首页
Pandas 层次化索引

Pandas 层次化索引

作者: 学人工智能的菜菜 | 来源:发表于2020-04-14 12:10 被阅读0次

pandas的层次化索引

层次化索引是pandas的一项比较重要的功能,它能够让你在一个轴上拥有多个索引级别,另一种说法是它能以低纬度形式处理高纬度数据
series层次化索引
 # Series的层次化索引,索引是一个二维数组,相当于两个索引决定一个值
data = Series(np.arange(1,10),index = [["a","a","a","b","b","c","c","d","d"],[1,2,4,1,2,5,1,2,6]])
print(data)
out:
a  1    1
   2    2
   4    3
b  1    4
   2    5
c  5    6
   1    7
d  2    8
   6    9
dtype: int32


#显示层次化索引
print(data.index)
out:
MultiIndex(levels=[['a', 'b', 'c', 'd'], [1, 2, 4, 5, 6]],
           labels=[[0, 0, 0, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 3, 0, 1, 4]])
#选取第一个索引为a的数据
data['a']
out:
1    1
2    2
4    3
dtype: int32

data['c':'d']
out:
c  5    6
   1    7
d  2    8
   6    9
dtype: int32
#通过unstack方法可以将Series变成一个DataFrame
#数据的类型以及数据的输出结构都变成了DataFrame,对于不存在的位置使用NaN填充
data.unstack()
out:
1   2   4   5   6
a   1.0 2.0 3.0 NaN NaN
b   4.0 5.0 NaN NaN NaN
c   7.0 NaN NaN 6.0 NaN
d   NaN 8.0 NaN NaN 9.0


#通过stack方法,可以将DataFrame变成Series,它是unstack的逆运算
data.unstack().stack()
out:
a  1    1.0
   2    2.0
   4    3.0
b  1    4.0
   2    5.0
c  1    7.0
   5    6.0
d  2    8.0
   6    9.0
dtype: float64
DataFrame的层次化索引

对于DataFrame来说,行和列都能够进行层次化索引。

#DataFrame的行和列都是用层次化索引
#也就是四个索引来决定一个值,将一个二维数据变成了一个四维数据
data = DataFrame(np.arange(12).reshape(4,3),index = [["a","a","b","b"],[1,2,1,2]],columns=[["A","A","B"],["Z","X","C"]])
print(data)
print(data['A']) #这样子只能获取列,不能获取行,若想选取行,则
#选取行
data.loc['a']
data.loc['a','A']
out:
 A       B
     Z   X   C
a 1  0   1   2
  2  3   4   5
b 1  6   7   8
  2  9  10  11
     Z   X
a 1  0   1
  2  3   4
b 1  6   7
  2  9  10
Z   X
1   0   1
2   3   4
#对于dataframe,每条轴都可以分层索引,各层都可以有自己的名字的
data.index.names =["row1","row2"]
print(data)
out:
 A       B
           Z   X   C
row1 row2           
a    1     0   1   2
     2     3   4   5
b    1     6   7   8
     2     9  10  11
data.columns.names =["column1","column2"]
print(data)
out:
column1    A       B
column2    Z   X   C
row1 row2           
a    1     0   1   2
     2     3   4   5
b    1     6   7   8
     2     9  10  11
###根据级别汇总统计
print(data)
out:
column1    A       B
column2    Z   X   C
row1 row2           
a    1     0   1   2
     2     3   4   5
b    1     6   7   8
     2     9  10  11

#求和运算 根据行级别进行求和
data.sum(level='row1')
out:
column1 A   B
column2 Z   X   C
row1            
a   3   5   7
b   15  17  19

data.sum(level='row2')
out:
column1 A   B
column2 Z   X   C
row2            
1   6   8   10
2   12  14  16


#根据列级别进行求和
data.sum(level='column1',axis=1)
out:
column1 A   B
row1    row2        
a   1   1   2
2   7   5
b   1   13  8
2   19  11

data.sum(level='column2',axis=1)
out:
column2 C   X   Z
row1    row2            
a   1   2   1   0
2   5   4   3
b   1   8   7   6
2   11  10  9

相关文章

  • 《利用pyhton进行数据分析》笔记-Pandas(四)

    Pandas(四) 本次笔记主要时层次化索引以及整数索引的一些内容。内容比较琐碎。 0. 层次化索引 层次化索引:...

  • Pandas 层次化索引

    pandas的层次化索引 层次化索引是pandas的一项比较重要的功能,它能够让你在一个轴上拥有多个索引级别,另一...

  • 第08章 数据规整:聚合、合并和重塑

    ps:在pandas中,对索引的操作默认都为行索引 层次化索引 层次化索引在数据重塑和基于分组的操作(如透视表生成...

  • Python--MultiIndex多层次索引学习

    Python3 pandas.MultiIndex 概述 层次化索引(hierarchical indexing)...

  • pandas层次化索引

    1. 创建多层行索引 1) 隐式构造 最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数...

  • Pandas层次化索引

    一、创建多层索引 二、多层索引对象的索引与切片操作 三、索引的堆(stack) 四、聚合操作

  • pandas层次化索引

    Series 多层次索引Series的索引是MultiIndex结构 根据最外层索引取数时,可直接通过series...

  • 03-pandas-Ⅱ

    一.pandas层次化索引 1.1 创建多层索引 1.1.1 隐式构造 Series也可以创建多层索引 1.1.2...

  • pandas(五)——层次化索引

    pandas中的层次化索引是我们能以低纬度形式处理高纬度数据。 这样的一个数据集我们可以将它变得更加直观,将它变成...

  • pandas入门(4):层次化索引

    hierarchical indexing是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引...

网友评论

      本文标题:Pandas 层次化索引

      本文链接:https://www.haomeiwen.com/subject/bbpzmhtx.html