醒醒,别睡了...讲《数据分析pandas库》了—/—<3>

直接上知识点

一、

1、新建数据框时建立索引

        所有的数据框默认都已经使用从 0 开始的自然数索引,因此这里的"建立索引指的是自定

df = pd.DataFrame( {'varl' : 1.0, ' var2' :[1,2,3,4], 'var3' :['test','python','test','hello'] , 'var4' : 'cons'} , index =[0,1,2,3])

如上部代码所示,创建一个二维数组,其列名为var1,var2,var3,var4,其索引值为0,1,2,3,

因为在创建数据帧时,使用了字典来指定每列的值,在字典中,如果我们只提供了一个值而不是一个列表或数组,那么这个值将被复制到每一行中的相应列。所以'varl':1.0,被复制到了一整列,'cons'这个值也被复制到了var4列的每一行。

其输出结果如图:

2、指定某列为索引列

其使用方法如下:

df.set_index(keys :被指定为索引的列名,复合索引用 list:格式提供drop = True :建立索引后是否删除该列append = False :是否在原索引基础上添加索引,默认是直接替换原索引inplace = False :是否直接修改原数据框 )

例如下列这个例子:

id1=pd.Series([1,2,3,4,5])
id2=pd.Series([5,6,4,12,7])
df=pd.DataFrame({'id':id1,'age':id2})
new_df=df.set_index(keys=['id','age'],drop=False)new_df=df.set_index(keys=['id'],append=True)

        首先建立两个类似一维数组的列表,然后将这两个列表通过DateFrame链接成一个二维数组,之后再通过new_df=df.set_index(keys=['id','age'],drop=False)这串代码中的df.setindex更改索引,其中key指定了id和age两列作为索引列,然后通过drop=False来保留原列,默认是删除,使其id和age这两列不仅成为了索引,而且还多出来两列当做内部元素,其打印结果如下图1,然后new_df=df.set_index(keys=['id'],append=True)代码是对df中指定id这一列为索引,而append则是决定是否在处理好的元素上再增加一个从零开始的索引列,默认是替换原索引。

图1:      图2:

3、将索引还原变量列

用法如下:

df.reset_index(drop = False :是否将原索引直接删除,而不是还原为变量列inplace = False :是否直接修改原数据框)

看实例:

id1=pd.Series([1,2,3,4,5])
id2=pd.Series([5,6,4,12,7])
df=pd.DataFrame({'id':id1,'age':id2})
df.set_index (['id','age'])

        即是直接将df中的两列数组变成索引列,其得到的结果为:

3.1 将索引全部还原为变量

即将原索引增加一列列名为index的列到原数组,然后外面重新定义了一个从0开始的索引

df.reset_index ()

其打印结果如图所示:

3.2 是否删除 index
df.reset_index (drop=True)

默认drop=False,则为上图所示状态,改为True则删除上图中的index列

4、引用和修改索引

注意:索引也是有储存格式的,需要区分数值型和字符串型的引用方式

        df.index:查看索引

4.1 修改索引

本质上和变量列名修改方式相同

如下代码所示即为指定索引列名称为sno

df = pd.DataFrame({'name':['zs','ls','ww'],'level':['vip1','vip2','pm']})
df.index.name='sno'

上示代码结果为:

df2 = pd.read_excel('stu_data.xlsx')
df3 = df2.set_index(keys = '学号')

这里即为导入一个xlsx文件,然后指定其中的列名为‘学号’的列为索引

df4 = pd.read_excel('stu_data.xlsx')
df5 = df2.set_index(keys = ['学号','性别'])
# df5.index.names = ['no','sex']
df5.index.names=[None,None]
df5

df4读取一个文件,df5为指定其中的两列为索引列,然后再通过index.names更改索引列名称

4.2 修改索引值

修改的本质上就是全部替换

df1.index = ['a', 'b', 'c']

5、更新索引

        reindex 则可以使用数据框中不存在的数值建立索引,并据此扩充新索引值对应的索引行/列,同时进行缺失值填充操作。

df.reindex(labels :类数组结构的数值,将按此数值重建索引,非必需copy = True :建立新对象而不是直接更改原 df/series 缺失数据的处理方式method :针对已经排序过的索引,确定数据单元格无数据时的填充方法,非必需pad / ffill:用前面的有效数值填充backfill / bfill:用后面的有效数值填充nearest:使用最接近的数值逬行填充fill_value = np.NaN :将缺失值用什么数值替代limit = None :向前/向后填充时的最大步长)

代码演示:

代码1:指定行索引,打印索引内的内容
import pandas as pd
df = pd.DataFrame({'name':['zs','ls','ww'],'level':['vip1','vip2','pm']})
df.reindex([0,1,3])

定义数组后,用reindex更改索引值为0,1,3,

注意:此时更改了索引值,即只打印这个索引的内容,如果索引没有数据,则打印NaN

代码2:从上一行填充
df.reindex([0,1,2,3],method='ffill')

打印指定索引0,1,2,3的内容,如果没有数据则直接填充上一行的数据

代码3:指定填充代码
df.reindex([0,1,2,3],fill_value="test")

没有值的位置填充指定值:

6、Series的索引和切片

6.1 索引
import numpy as np
import pandas as pd
data=pd.Series([4,3,25,2,3],index=list('abcde'))
data['a'] #根据key获取,其打印结果为4
data[1] #索引获取,其打印结果也是4
data[-1]#打印结果为3
6.2 切片

        如果索引与行名相同都是1,这时候就不知道是按照哪个来获取,所以获取时候使用lociloc

import numpy as np
import pandas as pd
data=pd.Series([4,3,25,2,3],index=list('abcde'))
# data['a':'d'] #其打印结果为带索引名的值为,4,3,25,2
data[2:4] #索引切片,打印带索引名称的值,为25,2
# data[-3:-1] #从后往前取值
data[data>3]  #布尔取值,取列中的大于3的值所对应的行

6.3 lociloc的使用
data=pd.Series([5,3,2,5,9],index=[1,2,3,4,5])
data.loc[1] #指定名称型索引
data.iloc[1] #指定数值的索引

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

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

相关文章

量化私募公司的多因子构建方案(附python代码)

原创文章第600篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 昨天代码已经发布了,大家可以前往下载和更新: 代码发布:quantlabv5.3,可转债所有数据及双低、动量因子策略,单因子分析框…

文件夹怎么设置密码?文件夹加密方法盘点

文件夹是电脑管理数据的重要工具,当我们将重要数据存储在文件夹中时,需要严格保护文件夹的数据安全,避免数据泄露。下面我们就来了解一下文件夹设置密码的方法。 文件夹加密 文件夹加密是指通过加密算法来加密保护文件夹,避免其他…

高级网页爬虫开发:Scrapy和BeautifulSoup的深度整合

引言 在互联网时代,数据的价值日益凸显。网页爬虫作为一种自动化获取网页内容的工具,广泛应用于数据挖掘、市场分析、内容聚合等领域。Scrapy是一个强大的网页爬虫框架,而BeautifulSoup则是一个灵活的HTML和XML文档解析库。本文将探讨如何将…

Kolla-Ansible的确是不支持CentOS-Stream系列产品了

看着OpenStack最新的 C 版本出来一段时间了,想尝个鲜、用Kolla-Ansible进行容器化部署,结果嘛。。。 根据实验结果,自OpenStack Bobcat版本开始,Kolla-Ansible就适合在CentOS系列产品上部署了,通过对 Bobcat和Caracal…

【docker】部署证书过期监控系统mouday/domain-admin

证书过期了再去部署证书容易被骂,就找了一个开源的证书过期系统来部署一下 过程 官方文档:https://domain-admin.readthedocs.io/zh-cn/latest/manual/install.html#docker 直接下载镜像是超时的,切换一下文档推荐的镜像源 新建docker配置…

模拟电子技术-实验四 二极管电路仿真

实验四 二极管电路仿真 一.实验类型 验证性实验 二.实验目的 1、验证二极管的单向导电性 2、验证二极管的稳压特性。 三.实验原理 二极管的单向导电性: 四、实验内容 1、二极管参数测试仿真实验 1)仪表仿真…

IndexError: index 0 is out of bounds for axis 1 with size 0

IndexError: index 0 is out of bounds for axis 1 with size 0 目录 IndexError: index 0 is out of bounds for axis 1 with size 0 【常见模块错误】 【解决方案】 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司&#…

物联网主机 E6000:智慧应急领域的创新力量

在当今瞬息万变的世界中,突发事件和紧急情况时有发生。如何迅速、准确地应对这些挑战,保障人民生命财产安全,成为了社会发展的重要课题。而物联网主机 E6000 的出现,为智慧应急领域带来了全新的解决方案。 一、强大的性能与功能 物…

ueditor跨域问题解决

ueditor解决跨域问题 问题:1.在引用vue-ueditor-wrap后,上传图片和附件出现跨域问题,前端引用了webpack去解决跨域问题,但仍然存在跨域问题? ueditor是百度的富文本,功能较多但资料不够全,因为…

模拟string(四)详解

目录 判断string大小关系bool operator(const string&s1,const string s2)代码 bool operator<(const string& s1, const string& s2)代码 bool operator<(const string& s1, const string& s2)代码 bool operator>(const string& s1, const …

算法板子:使用数组模拟队列——在队尾插入元素、在队头弹出元素、判断队列是否为空、查询队头元素

使用数组模拟时长这个样子&#xff1a; 代码&#xff1a; #include <iostream> using namespace std;const int N 1e5 10;// 数组q相当于队列; // hh是队头指针&#xff0c;始终指向队头 // tt是队尾指针&#xff0c;始终指向队尾 int q[N], hh, tt -1;// 队尾插入元…

代码随想录算法训练营第 25 天 | LeetCode491.递增子序列 LeetCode46.全排列 LeetCode47.全排列ii

代码随想录算法训练营 Day25代码随想录算法训练营第 25 天 | LeetCode491.递增子序列 LeetCode46.全排列 LeetCode47.全排列ii 目录 代码随想录算法训练营前言LeetCode491.递增子序列LeetCode46.全排列LeetCode47.全排列ii 一、LeetCode491.递增子序列1.题目链接2.思路3.题解 …

【算法】单向环形链表解决Josephu(约瑟夫)问题

应用场景 n 个小孩标号&#xff0c;逆时针站一圈。从 k 号开始&#xff0c;每一次从当前的小孩逆时针数 m 个&#xff0c;然后让最后这个小孩出列。不断循环上述过程&#xff0c;直到所有小孩出列&#xff0c;由此产生出一个队列编号。 提示 用一个不带头节点的循环链表来处…

FPGA开发——状态机的使用

一、概述 我们在使用FPGA进行开发的过程当中&#xff0c;实现一个东西用得最多的实现方法就是状态机的实现方法&#xff0c;用一句话总结就是万物皆可状态机&#xff0c;这和我们在学习Linux时常说的在Linux中万物都是文件差不多&#xff0c;这里就主要就是突出状态机的应用范…

技术实践—微前端技术应用

微前端是一种新兴的前端架构模式&#xff0c;是一种类似于微服务的架构&#xff0c;将微服务的理念应用于浏览器端。其核心理念是将一个大而单一的前端应用拆分为多个小型独立的微应用。这些微应用各自独立&#xff0c;可以由不同团队开发维护&#xff0c;部署&#xff0c;组合…

【调色板软件】免费、开源的调色板软件,焰火十二卷,提供了多种功能来生成一组调和色彩NO.108

本文一共:316 个字,需要阅读:1 分钟,更新时间:2024年7 月27日,部分内容具有时效性,如有失效请留言,阅读量:0 使用平台&#xff1a; Windows/macOS/CentOS/Ubuntu 由于我不是很懂&#xff0c;有需要的人自己摸索吧 资源来源于网络&#xff0c;免费分享仅供学习和测试使用&…

PostgreSQL 中如何重置序列值:将自增 ID 设定为特定值开始

我是从excel中将数据导入&#xff0c;然后再通过sql插入数据&#xff0c;就报错。 需要设置自增ID开始值 1、确定序列名称&#xff1a; 首先&#xff0c;需要找到与的增字段相关的序列名称。假设表名是 my_table 和自增字段是 id&#xff0c;可以使用以下查询来获取序列名称…

C 语言动态链表

线性结构->顺序存储->动态链表 一、理论部分 从起源中理解事物&#xff0c;就是从本质上理解事物。 -杜勒鲁奇 动态链表是通过结点&#xff08;Node&#xff09;的集合来非连续地存储数据&#xff0c;结点之间通过指针相互连接。 动态链表本身就是一种动态分配内存的…

【深度学习】LLaMA-Factory 大模型微调工具, 大模型GLM-4-9B Chat ,微调与部署 (2)

文章目录 数据准备chat评估模型导出模型部署总结 资料&#xff1a; https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md https://www.53ai.com/news/qianyanjishu/2015.html 代码拉取&#xff1a; git clone https://github.com/hiyouga/LLaMA-Factory.git cd …

万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”

在金秋送爽的11月&#xff0c;南京这座历史悠久而又充满活力的城市&#xff0c;即将迎来一场科技盛宴——2024南京智慧城市、物联网、大数据展会。这不仅是一场技术的集会&#xff0c;更是未来生活蓝图的预览&#xff0c;它汇聚了全球顶尖的科技企业、创新者及行业精英&#xf…