pandas层次化索引 (隐式结构、显示结构、多层次对象的索引与切片)

pandas层次化索引

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
  1. 创建多层行索引

从一个文件中读取一个多层级索引的表
df = pd.read_excel(’./data/data.xlsx’, sheet_name=1, header=[0,1])
df
---------------------------------
上半年 下半年
北京 上海 广州 北京 上海 广州
手机 89 90 100 88 130 104
电脑 90 68 98 98 127 120
键盘 78 90 100 100 130 115
NaN 0 1 2 3 4 5

product
product = [["上半年","下半年"],["北京","上海","广州"]]

array
array = [[“上半年”,“上半年”,“上半年”,“下半年”,“下半年”,“下半年”],[“北京”,“上海”,“广州”,“北京”,“上海”,“广州”]]

tuple
tuples = [[“上半年”,“北京”],[“上半年”,“上海”],[“上半年”,“广州”],[“下半年”,“北京”],[“下半年”,“上海”],[“下半年”,“广州”]]

  1. 隐式构造

最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组

  • Series也可以创建多层索引
    data = np.random.randint(0,200,size=(3,6))
    index = [“手机”,“电脑”,“键盘”]
    # 隐式构造只支持使用数组表达多级索引的方式来进行构造,不常用
    df = DataFrame(data=data, index=index, columns=array)
    df
    ----------------------------------
    上半年 下半年
    北京 上海 广州 北京 上海 广州
    手机 147 185 181 126 131 197
    电脑 61 185 172 177 95 59
    键盘 152 105 79 70 99 8
  1. 显示构造pd.MultiIndex
  • 使用数组
    column1 = pd.MultiIndex.from_arrays(array)
    DataFrame(data=data, index=index, columns=column1)
    -----------------------------------
    上半年 下半年
    北京 上海 广州 北京 上海 广州
    手机 134 192 192 187 70 182
    电脑 2 177 162 2 93 121
    键盘 164 189 184 125 114 155

  • 使用tuple
    column2 = pd.MultiIndex.from_tuples(tuples)
    DataFrame(data=data, index=index, columns=column1)
    -----------------------------
    上半年 下半年
    北京 上海 广州 北京 上海 广州
    手机 134 192 192 187 70 182
    电脑 2 177 162 2 93 121
    键盘 164 189 184 125 114 155

  • 使用product
    最简单,推荐使用
    column3 = pd.MultiIndex.from_product(product)
    DataFrame(data=data, index=index, columns=column1)

    -----------------------------------------
         上半年	     下半年
         北京	上海	广州	北京	上海	广州
    手机	134	192	192	187	70	182
    电脑	2	177	162	2	93	121
    键盘	164	189	184	125	114	155
    # 构建一个多层级的行索引表
    DataFrame(data=data.reshape(6,3), index=column1, columns=index)
    -------------------------------------------------------
              手机  电脑 键盘
    上半年	北京	170	178	79
          上海   161	72	159
    	  广州    53	31	137
    下半年	北京	167	77	179
          上海	45	121	96
          广州	106	34	39
    

============================================

练习8:

  1. 创建一个Data
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值