广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pandas数据分析-pandas数据框的多层索引
  • 878
分享到

Pandas数据分析-pandas数据框的多层索引

2024-04-02 19:04:59 878人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言创建多层索引 多层索引操作 索引名称的查看 索引的层级 索引内容的查看数据查询 数据分组前言 pandas数据框针对高维数据

前言

pandas数据框针对高维数据,也有多层索引的办法去应对。多层数据一般长这个样子

可以看到AB两大列,下面又有xy两小列。 行有abc三行,又分为onetwo两小行。

在分组聚合的时候也会产生多层索引,下面演示一下。

导入包和数据:

import numpy as np 
import pandas as pd
df=pd.read_excel('team.xlsx')

分组聚合:

df.groupby(['team',df.mean(1)>60]).count() #每组平均分大于60的人的个数

 可以看到分为abcde五组,平均分大于60 的组员两小行。

创建多层索引

#序列中创建
arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
index=pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
index

pd.DataFrame([{'a':1, 'b':2}], index=index)

#来自元组创建
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
pd.Series(np.random.randn(8), index=index)

#可迭代对象的笛卡尔积,排列组合各种情况
numbers = [0, 1, 2]
colors = ['green', 'purple']
index = pd.MultiIndex.from_product([numbers, colors],names=['number', 'color'])
pd.Series(np.random.randn(6), index=index)

#来自 DataFrame
df = pd.DataFrame([['bar', 'one'], ['bar', 'two'],
                   ['foo', 'one'], ['foo', 'two']],
                  columns=['first', 'second'])
'''
  first second
0   bar    one
1   bar    two
2   foo    one
3   foo    two
'''
index = pd.MultiIndex.from_frame(df)
pd.Series(np.random.randn(4), index=index)

 多层索引操作

index_arrays = [[1, 1, 2, 2], ['男', '女', '男', '女']]
columns_arrays = [['2020', '2020', '2021', '2021'],
                  ['上半年', '下半年', '上半年', '下半年',]]
index = pd.MultiIndex.from_arrays(index_arrays,names=('班级', '性别'))
columns = pd.MultiIndex.from_arrays(columns_arrays,names=('年份', '学期'))
df = pd.DataFrame([(88,99,88,99),(77,88,97,98),
                   (67,89,54,78),(34,67,89,54)],columns=columns, index=index)
df

 索引名称的查看

#索引名称的查看:
df.index # 索引, 是一个 MultiIndex
df.columns # 引索引,也是一个 MultiIndex
# 查看行索引的名称
df.index.names # FrozenList(['班级', '性别'])
# 查看列索引的名称
df.columns.names # FrozenList(['年份', '学期'])

 索引的层级

#索引的层级:
df.index.nlevels # 层级数   2
df.index.levels # 行的层级    # FrozenList([[1, 2], ['女', '男']])
df.columns.levels # 列的层级  # FrozenList([['2020', '2021'], ['上半年', '下半年']])
df[['2020','2021']].index.levels # 筛选后的层级  # FrozenList([[1, 2], ['女', '男']])

 索引内容的查看

#索引内容的查看:
# 获取索引第2层内容
df.index.get_level_values(1)
# Index(['男', '女', '男', '女'], dtype='object', name='性别')
# 获取列索引第1层内容
df.columns.get_level_values(0)
# Index(['2020', '2020', '2021', '2021'], dtype='object', name='年份')
 
# 按索引名称取索引内容
df.index.get_level_values('班级')
# Int64Index([1, 1, 2, 2], dtype='int64', name='班级')
df.columns.get_level_values('年份')
# Index(['2020', '2020', '2021', '2021'], dtype='object', name='年份')
 
# 多层索引的数据类型,1.3.0+
df.index.dtypes

 #排序

# 使用索引名可进行排序,可以指定具体的列
df.sort_values(by=['性别', ('2020','下半年')])
df.index.reorder_levels([1,0])  # 等级顺序,互换
df.index.set_codes([1, 1, 0, 0], level='班级') # 设置顺序
df.index.sortlevel(level=0, ascending=True)   # 按指定级别排序
df.index.reindex(df.index[::-1]) # 更换顺序,或者指定一个顺序

 相关操作转换:

df.index.to_numpy() # 生成一个笛卡尔积的元组对列表
# array([(1, '男'), (1, '女'), (2, '男'), (2, '女')], dtype=object)
df.index.remove_unused_levels() # 返回没有使用的层级
df.swaplevel(0, 2) # 交换索引
df.to_frame() # 转为 DataFrame
idx.set_levels(['a', 'b'], level='bar') # 设置新的索引内容
idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1])
idx.to_flat_index()   # 转为元组对列表
df.index.droplevel(0) # 删除指定等级
df.index.get_locs((2, '女'))  # 返回索引的位置

数据查询

#查询指定行
df.loc[1] #一班的
df.loc[(1, '男')] # 一年级男
df.loc[1:2] # 一二两年级数据

#查询指定列
df['2020'] # 整个一级索引下
df[('2020','上半年')] # 指定二级索引
df['2020']['上半年'] # 同上

#行列综合  slice(None)表示本层所有内容
df.loc[(1, '男'), '2020'] # 只显示2020年一年级男
df.loc[:, (slice(None), '下半年')] # 只看下半年的
df.loc[(slice(None), '女'),:] # 只看女生
df.loc[1, (slice(None)),:] # 只看1班
df.loc[:, ('2020', slice(None))] # 只看 2020 年的

#查询指定条件

#和单层索引的数据查询一样,不过在选择列上要按多层的规则。
df[df[('2020','上半年')] > 80]

#pd.IndexSlice切片使用:
 
idx = pd.IndexSlice
idx[0]               # 0
idx[:]               # slice(None, None, None)
idx[0,'x']           # (0, 'x')
idx[0:3]             # slice(0, 3, None)
idx[0.1:1.5]         # slice(0.1, 1.5, None)
idx[0:5,'x':'y']     # (slice(0, 5, None), slice('x', 'y', None))
#查询应用:
idx = pd.IndexSlice
df.loc[idx[:,['男']],:] # 只显示男
df.loc[:,idx[:,['上半年']]] # 只显示上半年
 
#df.xs()
df.xs((1, '男')) # 一年级男生
df.xs('2020', axis=1) # 2020 年
df.xs('男', level=1) # 所有男生

 数据分组

df.groupby(level=0).sum()
df.groupby(level='性别').sum()
df.sum(level='班级') # 也可以直接统计

df.groupby(level=['性别', '班级']).sum()

到此这篇关于Pandas数据分析-andas数据框的多层索引的文章就介绍到这了,更多相关pandas多层索引内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Pandas数据分析-pandas数据框的多层索引

本文链接: https://www.lsjlt.com/news/119948.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pandas数据分析-pandas数据框的多层索引
    目录前言创建多层索引 多层索引操作 索引名称的查看 索引的层级 索引内容的查看数据查询 数据分组前言 pandas数据框针对高维数据...
    99+
    2022-11-11
  • Pandas数据分析之pandas文本处理
    目录前言文本数据类型字符操作文本格式文本对齐​文本计数和编码格式判断文本高级处理文本分割 文本切片选择 slice划分 partition文本替换指定位置替换重复替换文本连...
    99+
    2022-11-11
  • python数据分析之pandas数据选
      Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用。本文主要介绍Pandas的几种数据选取的方法。   Pandas中,数据主要保存为Dataframe和Series是数据结构,这两种数据结构数据...
    99+
    2023-01-30
    数据 python pandas
  • Pandas数据分析之pandas数据透视表和交叉表
    目录前言整理透视 pivot 聚合透视 Pivot Table 聚合透视高级操作交叉表crosstab()数据融合melt()数据堆叠 stack前言 panda...
    99+
    2022-11-11
  • 数据分析之pandas模块
          一、Series   类似于一位数组的对象,第一个参数为数据,第二个参数为索引(索引可以不指定,就默认用隐式索引) Series(data=np.random.randint(1,50,(10,))) Series(data...
    99+
    2023-01-30
    模块 数据 pandas
  • 数据分析之Pandas VS SQL!
    编辑:zone来源:数据管道作者:艾德宝器AbstractPandas是一个开源的Python数据分析库,结合 NumPy 和 Matplotlib 类库,可以在内存中进行高性能的数据清洗、转换、分析及可视化工作。对于数据开发工程师或分析师...
    99+
    2023-06-02
  • 数据分析利器之Pandas
    Pandas是一个python的开源库,它基于Numpy,提供了多种高性能且易于使用的数据结构。Pandas最初被用作金融数据分析工具而开发,由于它有着强大的功能,目前广泛应用于数据分析、机器学习以及量化投资等。下面来跟随作者一起认识下Pa...
    99+
    2023-06-02
  • Python数据分析--Pandas知识
    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘 1. 重复值的处理 利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余的ID. 1 import pandas as p...
    99+
    2023-01-30
    知识 数据 Python
  • Python数据分析之pandas读取数据
    一、三种数据文件的读取 二、csv、tsv、txt 文件读取 1)CSV文件读取: 语法格式:pandas.read_csv(文件路径) CSV文件内容如下: import pandas as pd file...
    99+
    2022-06-02
    python pandas读取数据 pandas数据读取
  • python Pandas之DataFrame索引及选取数据
    目录1.索引是什么1.1 认识索引1.2 自定义索引2. 索引的简单使用2.1 列索引2.2 行索引2.2.1 使用[ ]2.2.2 使用.loc()和.iloc()1.索引是什么 ...
    99+
    2022-11-11
  • Python数据分析库之pandas,你
    写这个系列背后的故事 咦,面试系列的把基础部分都写完啦,哈哈答,接下来要弄啥嘞~ pandas吧 外国人开发的 翻译成汉语叫 熊猫 厉害厉害,很接地气 一个基于numpy的库 干啥的? 做数据分析用的 而数据分析是python体系下一个...
    99+
    2023-01-31
    数据 Python pandas
  • Pandas数据存储的示例分析
    这篇文章主要为大家展示了“Pandas数据存储的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Pandas数据存储的示例分析”这篇文章吧。数据的存储数据可以有两种类型-连续的和离散的,这...
    99+
    2023-06-27
  • Pandas数据分析的环境准备
    一、Python编程基础知识 建议可以直接从官方文档学起,质量较高,现在也支持中文了,比以前友好很多 Python官方入门中文教程 Python运用较多的几个领域Web开发、科学计算、IT运维,我们使用Python来进行数据分析工作是属于...
    99+
    2023-01-31
    环境 数据 Pandas
  • Python数据分析之pandas函数详解
    目录一、apply和applymap二、排序三、处理缺失数据一、apply和applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df...
    99+
    2022-11-12
  • Pandas数据分析常用函数的使用
    目录一、数据导入导出二、数据加工处理三、列表格式设置Pandas是数据处理和分析过程中常用的Python包,提供了大量能使我们快速便捷地处理数据的函数和方法,在此主要整理数据分析过程...
    99+
    2023-01-16
    Pandas数据分析 Pandas数据分析函数
  • 数据分析处理库Pandas——数据透视表
    数据 按指定的行列值显示 求和 按行求和 按列求和 数据 求平均 备注:按性别计算每个等级船票的平均价格。 备注:每个等级船舱中每种性别获救的平均值,也就是获救的比例。 备注:每种性别未成年人获救的平均值...
    99+
    2023-01-31
    数据 透视 Pandas
  • python pandas中索引函数loc和iloc的区别分析
    目录前言1、直接使用行或者列标签2、loc函数3、iloc函数总结前言 使用pandas进行数据分析的时候,我们经常需要对DataFrame的行或者列进行索引。使用pandas进行索...
    99+
    2022-11-12
  • pandas数据分析有哪些方法
    pandas数据分析的方法有:1、数据读取与处理;2、数据筛选与选择;3、数据排序与整理;4、数据聚合与分组;5、数据透视与透视表;6、合并与连接数据;7、数据持久化与保存。Pandas库提供了丰富的数据分析和处理功能,涵盖了数据的读取、处...
    99+
    2023-11-22
    Pandas
  • 怎么设置Pandas做数据分析
    这篇文章主要讲解了“怎么设置Pandas做数据分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么设置Pandas做数据分析”吧!1. 设置DataFrame最大显示行数pandas设置参...
    99+
    2023-06-16
  • 数据分析处理库Pandas——概述
    导入Pandas库 创建DataFrame结构 读取.csv文件 titanic_train.csv文件:https://files.cnblogs.com/files/gloria-zhang/titanic_train.rar...
    99+
    2023-01-31
    数据 Pandas
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作