美文网首页Pandas
Pandas层次化索引

Pandas层次化索引

作者: 午夜丶小学徒 | 来源:发表于2018-11-11 17:08 被阅读3次

一、创建多层索引

# 隐式构造
  - Series
  index = [['一班','一班','一班','一班','一班','二班','二班','二班','二班','二班'],np.arange(10)]
  s = Series(data=np.random.randint(150,size=10),index=index)
  s
  - DataFrame
  index = [['一班','一班','一班','二班','二班'],['张三','李四','王五','赵六','田七']]
  columns = [['期中','期中','期中','期末','期末','期末'],['语文','数学','英语','语文','数学','英语']]
  data = np.random.randint(0,150,size=(5,6))
  df = DataFrame(index=index,columns=columns,data=data)
  df
# 显式构造pd.MultiIndex
  - array
    index = pd.MultiIndex.from_arrays([['一班','一班','一班','二班','二班'],['张三','李四','王五','赵六','田七']])
    columns = [['期中','期中','期中','期末','期末','期末'],['语文','数学','英语','语文','数学','英语']]
    data = np.random.randint(0,150,size=(5,6))
    df1 = DataFrame(index=index,columns=columns,data=data)
    df1
  - tuple
    index = pd.MultiIndex.from_tuples([('一班','张三'),('一班','李四'),('一班','王五'),('二班','赵六'),('二班','田七')])
    columns = [['期中','期中','期中','期末','期末','期末'],['语文','数学','英语','语文','数学','英语']]
    data = np.random.randint(0,150,size=(5,6))
    df2 = DataFrame(index=index,columns=columns,data=data)
    df2
  - product
    index = pd.MultiIndex.from_tuples([('一班','张三'),('一班','李四'),('一班','王五'),('二班','赵六'),('二班','田七')])
    columns = pd.MultiIndex.from_product([['一班','二班'],['语文','数学','英语']])
    data = np.random.randint(0,150,size=(5,6))
    df3 = DataFrame(index=index,columns=columns,data=data)
    df3
pandas层次化.png

二、多层索引对象的索引与切片操作

1、Series的操作
    对于Series来说,直接中括号[]与使用.loc()完全一样,推荐使用.loc中括号索引和切片。
2、DataFrame的操作
    1)可以直接使用列名称来进行列索引
      - df['期中'] # 期中下的语文数学英语列
    2)行多级索引的索引和切片操作
      - df.loc['一班',0][0] # 一班第0行第0列
      - df.loc['一班'][0:3] # 一班0-3行
    3)列多级索引的索引和切片操作
      - df['期中','语文'][0:3] # 期中下的语文列 前3行
      - df.iloc[0] # 第0行的所有数据
      - df.iloc[0][1] # 第0行第0列对应的数据
    注意在对行索引的时候,若一级行索引还有多个,对二级行索引会遇到问题!也就是说,无法
  直接对二级索引进行索引,必须让二级索引变成一级索引后才能对其进行索引!

三、索引的堆(stack)

- stack():使用stack的时候,level等于哪一个,哪一个就消失,出现在行里
- unstack():使用unstack的时候,level等于哪一个,哪一个就消失,出现在列里

四、聚合操作

所谓的聚合操作:平均数,方差,最大值,最小值……
【小技巧】axis=0 针对左边的行,axis=1 针对上边的行,level等于哪一个,哪一个就保留。
# eg
  - df.mean(level=0,axis=0)
  - df.mean(level=0,axis=1)
  - df.mean(level=1,axis=1)

相关文章

  • 《利用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/yvgxfqtx.html