多层索引与分组

本文详细介绍了Python pandas库中的多层索引(MultiIndex)的创建、操作、设置及交换,包括Series和DataFrame的多层索引使用,以及如何进行索引排序、堆叠和取消堆叠。此外,文章还探讨了数据分组与聚合,包括groupby方法、聚合函数的应用,以及分组对象的属性和方法。
摘要由CSDN通过智能技术生成

MultiIndex

MultiIndex,即具有多个层次的索引,有些类似于根据索引进行分组的形式,通过多层次索引,我们就可以使用高层次的索引,来操作整个索引组的数据。

创建方式

第一种

我们在创建Series或DataFrame时,可以通过给index(columns)参数传递多维数组,进而构建多为索引。【数组中每个维度对应位置元素,组成每个索引值】多为索引的也可以设置名称(names属性),属性的值为一维数组,元素的个数需要与索引的层数相同(每层索引都需要具有一个名称)。

第二种

我们可以通过MultiIndex类的相关方法,预先创建一个MultiIndex对象,然后作为Sreies与DataFrame中的index(或columns)参数值,同时,可以通过names参数指定多层索引的名称。

  • from_arrays:接受一个多为数组参数,高纬度只当高层索引,低纬度指定底层索引。
  • from_tuples:接受一个元组列表,每个元组指定每个索引(高维索引,低维索引)。
  • from_product:接受一个可迭代对象的列表,根据可迭代对象元素的笛卡尔积进行创建索引。
import numpy as np
import pandas as pd

# 第一种形式
# 在创建Sreies或DataFrame对象时,通过index参数指定二维的数组类型,其中每个元素(一维数组类型)来指定每个层次的索引内容(索引标签)
s = pd.Series([1,2,3,4], index=["a","b","c","d"])
s = pd.Series([1,2,3,4], index=["海淀区","海淀区","昌平区","昌平区"],["上半年","下半年","上半年","下半年"])
s = pd.Series([1,2,3,4], index=["a","a","b","b"],["c","d","c","d"],["e","e","f","g"])

df = pd.DataFrame(np.random.rand((4,4),index=[["上半年","上半年","下半年","下半年"],["第一季度","第二季度","第三季度","第四季度"]],columns=[["水果","水果","蔬菜","蔬菜"],["苹果","香蕉","白菜","萝卜"])
df.index, df.columns
# Series/DataFrame的索引对象可以具有名字,当索引时单层时,可以给index的name属性赋值。
s = pd.Series([1,2,3,4], index=["a","a","b","b"], name="Series的name")
s.index.name = "index的name"
# 当索引是多层式,可以给index的names属性赋值。(每层索引都需要具有一个名字)
s = pd.Series([1,2,3,4], index=[["a","a","b","b"],["c","c","d","d"]])
s.index.names = ["outer","inner"]

df = pd.DataFrame(np.random.rand((4,4),index=[["上半年","上半年","下半年","下半年"],["第一季度","第二季度","第三季度","第四季度"]],columns=[["水果","水果","蔬菜","蔬菜"],["苹果","香蕉","白菜","萝卜"])
df.index.names=["年","季度"]
df.columns.names=["分类","品牌"]


# 第二种创建多层索引
# 1.通过数组的方式创建,参数传递一个二维数组,每个元素(一维数组)指定相应的层次标签。(一个元素指定一个层次)
pd.MultiIndex.from_arrays([["上半年","上半年","下半年",</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值