python数据分析基础—pandas中set_index()、reset_index()的使用

news2025/1/31 3:06:26

文章目录

  • 一、索引是什么?
  • 二、set_index()
  • 三、reset_index()


一、索引是什么?

在进行数据分析时,通常我们要根据业务情况进行数据筛选,要求筛选特定情况的行或列,这时就要根据数据类型(Series或者DataFrame)的索引情况对数据进行相应的行切片或者列索引的处理。
在Pandas中最常用的就是数据类型就是Series和DataFrame,它们的索引情况如下:

Series

  • 索引(index):对应是最左侧那一列。
  • 值(values):每一个索引的右侧对应一个值。

DataFrame有两种索引

  • 行索引(index):对应最左边的那一列。
  • 列索引(columns):对应最上面的那一横行。

关于DataFrame索引的具体使用方法可以参考:
python数据分析的基础知识—pandas中dataframe()使用目录下的DataFrame切片与索引

二、set_index()

功能:指定数据表中的某列或指定某个数组列表为DataFrame行索引

函数语法

DataFrame.set_index(keys, *, drop=True, append=False, inplace=False, verify_integrity=False)

参数说明

  • key:数据表中的某列/列标签列表/数组列表,需要设置为索引的列。
  • drop:删除用作新索引的列,默认为True,删除。
  • append:是否将列附加到现有索引,默认为False,否。
  • inplace:表示当前操作是否对原数据重新,默认为False,否。
  • verify_integrity:检查新索引的副本。否则,请将检查推迟到必要时进行。将其设置为False,将提高该方法的性能,默认为False。

举例
模拟样本数据

import pandas as pd 
import numpy as np
data=pd.DataFrame({'A':['apple','orange','grape','pear'],
				   'B':[1000,2300,4000,5000],
				   'C':[12,34,23,67]})
data 

在这里插入图片描述

  • 将A列这一列作为行索引

    • key为数据表某一列
data_1=data.set_index('A')
data_1

在这里插入图片描述

    • key为数据表某几列
data_1=data.set_index(['A','B'])
data_1

在这里插入图片描述

  • key为数组列表
data_1=data.set_index([pd.Index([1,2,3,4])])
data_1

在这里插入图片描述

data_1=data.set_index([pd.Series([1,2,3,4])])
data_1

在这里插入图片描述

    • drop=True,默认。
data_1=data.set_index('A',drop=True,append=False,inplace=False,verify_integrity=False)
data_1

在这里插入图片描述

    • drop=False
data_1=data.set_index('A',drop=False,append=False,inplace=False,verify_integrity=False)
data_1

在这里插入图片描述

对比drop=True和drop=False,可以看到,drop=False时,被作为行索引的那一列数据仍然被保留下来了。

    • append=False,默认。
data_1=data.set_index('A',drop=True,append=False,inplace=False,verify_integrity=False)
data_1

在这里插入图片描述

    • append=True
data_1=data.set_index('A',drop=True,append=True,inplace=False,verify_integrity=False)
data_1

在这里插入图片描述
对比append=True和append=False,可以看到,append=True时,原来行索引和新的行索引一起被保留下来了。

三、reset_index()

功能:reset_index()方法可能最经常使用的地方是处理groupby()方法调用后的数据。主要可以将数据表中的索引还原为普通列并重新变为默认的整型索引。

函数语法

DataFrame.reset_index(level=None, *, drop=False, inplace=False, col_level=0, col_fill=‘’, allow_duplicates=_NoDefault.no_default, names=None)[source]

参数说明

  • key:数值类型可以为:int、str、tuple或list,默认无。
  • drop:当指定drop=False(默认为False)时,则索引列会被还原为普通列;否则,如设置为True,原索引列会被丢弃。
  • inplace:表示当前操作是否对原数据重新,默认为False,否。
  • col_level:数值类型为int或str,默认值为0,如果列有多个级别,则确定将标签插入到哪个级别。默认情况下,它将插入到第一级。
  • col_fill:对象,默认‘’,如果列有多个级别,则确定其他级别的命名方式。如果没有,则重复索引名。

举例
模拟样本数据

import pandas as pd 
import numpy as np
data=pd.DataFrame({'A':['apple','orange','grape','pear'],
				   'B':[1000,2300,4000,5000],
				   'C':[12,34,23,67]})
data 

在这里插入图片描述

reset_index()有两种情况:第一种对原来的数据表进行reset,第二种是对使用过的set_index()函数进行reset。

  • 第一种:对原来的数据表进行reset

    • 默认 drop=False
data_1=data.reset_index()
data_1

在这里插入图片描述
原来索引值[0, 1, 3]被还原成了普通列,同时被系统冠名为index字段。

    • drop=True
data_1=data.reset_index(drop=True)
data_1

在这里插入图片描述

可以看到,输出结果和原来的数据表没有区别。但是其实在这个时候是有操作的,是在原有的索引列重置索引,同时不另外添加新列。下面举例1能比较直观感受到重置索引的操作。

举例1:重置索引的操作

重新创建数据表

import pandas as pd 
import numpy as np
data=pd.DataFrame({'A':['apple','orange','grape','pear'],
				   'B':[1000,2300,4000,5000],
				   'C':[12,34,23,67]})
data 

在这里插入图片描述

删除索引值为1的行,实际上就是第二行。

data.drop(labels=1,axis=0,inplace=True)
data

在这里插入图片描述
如果同样的代码再删除一次,就会报下面的错误

data.drop(labels=1,axis=0,inplace=True)
data

在这里插入图片描述
报错原因:一个数据表里一共有4行,我们把第2行给删掉了,就会顺道对应把索引1删掉,这时候数据的索引就会变成[1、2、3],即使这个时候原来的第3行数据现在变成第2行了,现在也无法用索引第2行的方式来获取现在的第2行(原来的第3行),因为索引已经乱了。

我们该如何解决这个问题呢?

答案:要将索引重置,这样后面再次使用才不会因为索引不存在而报错。重置索引的方法是:reset_index()。

reset_index(),默认(drop = False),当我们指定(drop = True)时,则不会保留原来的index,会直接使用重置后的索引。

data.reset_index(drop=True,inplace=True)
data

在这里插入图片描述
再试试删除索引值为1,代码就可以运行成功。

data.drop(labels=1,axis=0,inplace=True)
data

在这里插入图片描述

举例2:groupby()方法调用后的dataframe使用reset

import pandas as pd 
import numpy as np
data=pd.DataFrame({'A':['apple','orange','orange','pear'],
				   'B':[1000,2300,4000,5000],
				   'C':[12,34,23,67]})
data 

在这里插入图片描述

data_1=data.groupby('A')[['B','C']].mean()
data_1

在这里插入图片描述

data_1.reset_index()

在这里插入图片描述

  • 第二种:对使用过的set_index()函数进行reset。
data_1=data.set_index('A')
data_1

在这里插入图片描述

    • drop=False,默认。
data_1.reset_index(drop=False)

在这里插入图片描述

    • drop=True
data_1.reset_index(drop=True)

在这里插入图片描述

对比drop=True和drop=False,可以看到,drop=False时,A列刚刚被作为索引列,被还原成原来的样子。当drop=True时,A列被删除了。


参考文章:
set_index官方文档
reset_index官方文档
https://zhuanlan.zhihu.com/p/110819220
http://anders.wang/pandaszhong-set_index-he-reset_index-yi-ji-reindex-qu-bie/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/965064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小苹果他爹V5.8版本最强小苹果影视盒子增加46条内置优质单仓线路

这款软件直接使用了俊版的小苹果接口,并且许多资源似乎都是直接调用的小苹果官方资源。这样一来,小苹果的作者可能会面临版权方面的问题,而且也让更多的用户对小苹果的收费模式产生质疑。在这个信息传播如此快速的时代,开发者们应…

816. 模糊坐标

816. 模糊坐标 原题链接:完成情况:解题思路:参考代码:错误经验吸取 原题链接: 模糊坐标 完成情况: 解题思路: 参考代码: package 西湖算法题解___中等题;import java.util.Arra…

公司文件防泄密系统——「天锐绿盾透明加密系统」

「天锐绿盾透明加密系统」是一种公司文件防泄密系统,从源头上保障数据安全和使用安全。该系统采用文件过滤驱动实现透明加解密,对用户完全透明,不影响用户操作习惯。 PC访问地址: isite.baidu.com/site/wjz012xr/2eae091d-1b97-4…

贝叶斯神经网络 - 捕捉现实世界的不确定性

贝叶斯神经网络 - 捕捉现实世界的不确定性 Bayesian Neural Networks 生活本质上是不确定性和概率性的,贝叶斯神经网络 (BNN) 旨在捕获和量化这种不确定性 在许多现实世界的应用中,仅仅做出预测是不够的;您还想知道您对该预测的信心有多大。例…

ARM Cortex-M 的 SP

文章目录 1、栈2、栈操作3、Cortex-M中的栈4、MDK中的SP操作流程5、Micro-Lib的SP差别1. 使用 Micro-Lib2. 未使用 Micro-Lib 在嵌入式开发中,堆栈是一个很基础,同时也是非常重要的名词,堆栈可分为堆 (Heap) 和栈 (Stack) 。 栈(Stack): 一种…

2010-2021年上市公司和讯网社会责任评级CSR数据/和讯网上市公司社会责任数据

2010-2021年上市公司和讯网社会责任评级CSR数据 1、时间:2010-2021年 2、指标:股票名称、股票代码、年份、总得分、等级、股东责任、员工责任、供应商、客户和消费者权益责任、环境责任、社会责任、所属年份 3、样本量:4万 4、来源&#…

网工内推 | 上市公司,IT工程师、服务器工程师,IP以上优先

01 烟台睿创微纳技术股份有限公司 招聘岗位:IT工程师 职责描述: 1、负责网络及安全架构的规划、设计、性能优化; 2、负责网络设备的安装、配置、管理、排错、维护,提供网络设备维护方案; 3、负责防火墙、上网行为管理…

微机原理 || 第7章:中断系统8259 经典例题+手写解析

学习这件事应该和少菲学习,她会一个问题一个问题挨个解决,不会磨磨唧唧的, 这也不想干,那也不想做,一事无成! 新的学期,预祝姝垚和少菲可以学习进步,生活愉快,事业有成&a…

lv3 嵌入式开发-3 linux shell命令(权限、输入输出)

1 Shell概述 随着各式Linux系统的图形化程度的不断提高,用户在桌面环境下,通过点击、拖拽等操作就可以完成大部分的工作。 然而,许多Ubuntu Linux功能使用shell命令来实现,要比使用图形界面交互,完成的更快、更直接。…

系列五、Java操作RocketMQ简单消息之同步消息

一、概述 同步消息的特征是消息发出后会有一个返回值,即RocketMQ服务器收到消息后的一个确认,这种方式非常安全,但是性能上却没有那么高,而且在集群模式下,也是要等到所有的从机都复制了消息以后才会返回,适…

【vue2第九章】组件化开发和根组件以及style上的scoped作用

组件化开发和根组件 什么是组件化开发? 一个页面可以拆分为多个组件,每个组件有自己的样式,结构,行为,组件化开发的好处就是,便于维护,利于重复利用,提升开发的效率。 便于维护&…

输出归一化位置式PID(完整梯形图代码)

SMART PLC单自由度和双自由度位置式PID的完整源代码,请参看下面文章链接: 位置式PID(S7-200SMART 单自由度、双自由度梯形图源代码)_RXXW_Dor的博客-CSDN博客有关位置型PID和增量型PID的更多详细介绍请参看PID专栏的相关文章,链接如下:SMART PLC增量型PID算法和梯形图代码…

已解决‘jupyter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件报错

本文摘要:本文已解决‘jupyter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的相关报错问题,并系统性地总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 😎 作者介绍:我是程序员洲洲…

利用frps搭建本地自签名https服务的透传

nginx的搭建就不介绍了,教程很多,基本上油手就会。 在本例中,frp服务器的域名是 www.yourfrp.com,同时也是反向代理nginx服务器; 本地网站要用的域名: test.abcd.com 请事先将 test.abcd.com 解析到 frp所在服务器…

java.sql.SQLException: com.mysql.cj.jdbc.Driver

这篇文章分享一下Springboot整合Elasticsearch时遇到的一个问题,项目正常启动,但是查询数据库的时候发生了一个异常java.sql.SQLException: com.mysql.cj.jdbc.Driver java.sql.SQLException: com.mysql.cj.jdbc.Driverat com.alibaba.druid.util.JdbcU…

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储 环境 详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 <spring.cloud.alibaba-version>2021.1</spring.cloud.alibaba-version>所…

【前端入门案例1】HTML + CSS

案例一 <!DOCTYPE html> <html lang"en-US"><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width"><title>My test page</title> </head><body><…

浅析Linux SCSI子系统:错误恢复

文章目录 概述SCSI错误恢复处理添加错误恢复命令错误恢复线程scsi_eh_ready_devs IO超时处理相关参考 概述 IO路径是一个漫长的过程&#xff0c;从SCSI命令请求下发到请求完成返回&#xff0c;中间的任何一个环节出现问题都会导致IO请求的失败。从SCSI子系统到低层驱动&#x…

002图的基本概念与表示方法

文章目录 一. 图的组成二. 本体图2.1 什么是本体图2.2 怎么设计本体图 三. 图的种类3.1 按连接是否有向分3.2 按本体图分3.3 按连接是否带权重分 四. 节点连接数&#xff08;节点的度&#xff09;4.1 无向图节点的度4.2 有向图节点的度 五. 图的表示方法5.1 邻接矩阵5.2 连接列…

图:有向无环图(DAG)

1.有向无环图的定义 有向无环图:若一个有向图中不存在环&#xff0c;则称为有向无环图。 简称DAG图(Directed Acyclic Graph) 顶点中不可能出现重复的操作数。 2.有向无环图的应用 1.描述算数表达式 用有向无环图描述算术表达式。 解题步骤&#xff1a; 把各个操作数不重…