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

news2024/11/24 19:38:57

直接上知识点

一、

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.coloradmin.cn/o/1953124.html

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

相关文章

【ESP32 IDF SPI硬件驱动W25Q64】

目录 SPISPI介绍idf配置初始化配置通信 驱动代码 SPI SPI介绍 详细SPI介绍内容参考我之前写的内容【ESP32 IDF 软件模拟SPI驱动 W25Q64存储与读取数组】 idf配置 初始化配置 spi_bus_initialize() 参数1 :spi几,例如spi2,spi3 参数2:…

MySQL体系结构与查询执行流程详解

MySQL 体系结构与查询执行过程详解 MySQL 是一个采用单进程多线程架构模式的关系型数据库管理系统。本文将详细介绍 MySQL 的体系结构及其查询语句的执行过程,并探讨性能优化的关键点。 MySQL 体系结构 MySQL 的架构为 Client-Server 架构。总体上,我们可以将 MySQL 的体系…

python—pandas基础(2)

文章目录 列操作修改变量列筛选变量列使用.loc[](基于标签)使用.iloc[](基于整数位置)使用.filter()方法 删除变量列添加变量列 变量类型的转换Pandas 支持的数据类型在不同数据类型间转换 建立索引新建数据框时建立索引读入数据时建立索引指…

如何在宝塔面板给域名配置 SSL 证书

首先需要有证书 这里以阿里云为例 1. 首先进入到 SSL 证书管理控制台 选择个人测试证书,并点击购买 免费的可以使用三个月。 购买完成之后回到控制台。 点击创建证书,将标红的地方填写,其他默认就好。 然后提交审核就行。 这里需要对域名…

JS逆向高级爬虫

JS逆向高级爬虫 JS逆向的目的是通过运行本地JS的文件或者代码,以实现脱离他的网站和浏览器,并且还能拿到和浏览器加密一样的效果。 10.1、编码算法 【1】摘要算法:一切从MD5开始 MD5是一个非常常见的摘要(hash)逻辑. 其特点就是小巧. 速度快. 极难被破解. 所以,…

图像生成中图像质量评估指标—FID介绍

文章目录 1. 背景介绍2. 实际应用3. 总结和讨论 1. 背景介绍 Frchet Inception Distance(\textbf{FID})是一种衡量生成模型性能的指标,它基于Inception网络提取的特征来计算模型生成的图像与真实图像集合之间的距离。 FID利用了Inception模…

repo中的default.xml文件project name为什么一样?

文章目录 default.xml文件介绍为什么 name 是一样的,path 不一样?总结 default.xml文件介绍 在 repo 工具的 default.xml 文件中,定义了多个 project 元素,每个元素都代表一个 Git 仓库。 XML 定义了多个不同的 project 元素&…

64.隐藏指定模块

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:易道云信息技术研究院 上一个内容:63.利用PEB获取模块列表 效果图: 隐藏模块简单实现: #include …

苍穹外卖浏览器前端界面修改

背景: 客户原始方案是期望做一个Spring Boot Vue的饿了么系统,但时间上太仓促,所以建议选择开源的苍穹外码目作为作业提交。 客户接受了建议的方案后,期望对前端页面做一些个性化的定制修改。 过程: 苍穹外卖简单介…

【C++进阶】C++11特性(上)

1、统一列表初始化 1.1 {}初始化 C98的特性用{}统一初始化数组或结构体。 //{}初始化 struct Point {int _x;int _y; }; int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };return 0; } C11则扩大其特性,可以不带进行初始化&…

【SQL 新手教程 2/20】关系模型 -- 主键

💗 关系数据库建立在关系模型上⭐ 关系模型本质上就是若干个存储数据的二维表 记录 (Record): 表的每一行称为记录(Record),记录是一个逻辑意义上的数据 字段 (Column):表的每一列称为字段(Colu…

基于STM32F103的FreeRTOS系列(四)·FreeRTOS资料获取以及简介

目录 1. FreeRTOS简介 1.1 FreeRTOS介绍 1.2 为何选择FreeRTOS 1.3 FreeRTOS资料获取 1.3.1 官网下载 1.3.2 Github下载 1.3.3 托管网站下载 1.4 FreeRTOS的编程风格 1.4.1 数据类型 1.4.2 变量名 1.4.3 函数名 1.4.4 宏 1. FreeRTOS简介 1.1 Free…

IEC104转BACnet网关:实现电力监控与楼宇自动化的无缝对接

在电力监控和楼宇自控领域,IEC104和BACnet作为两种重要的通信协议扮演着重要的角色。随着不同系统之间的数据交换与集成需求的不断增长,深圳市钡铼技术有限公司推出IEC104转BACnet网关来实现这两种协议之间的无缝转换,助力电力监控和楼宇自控…

如何知道一个字段在selenium中是否可编辑?

这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。 我们如何知道我们是否可以编辑字段?“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性,则无法编辑或操作该元素或字段。 因此,如果我们找到一…

3.5-RNN文本生成

1语言模型生成文本的顺序 前面我们已经能够实现使用下图的LSTM网络进行语言建模; 对于一个已经在语料库上学习好的LSTM模型;如果语料库就只是you say goobye and i say hello;那么当把单词i输入到模型中,Time xxx层的第一个LSTM…

⌈ 传知代码 ⌋ 深度学习革新音乐转录

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

SpringBoot上传文件大小超出范围捕获异常

文件上传中,可以限定文件大小,防止用户上传过大的文件,但是出现异常会报错,不够优雅 这里做异常捕获,然后自定义提示文字,可以更加优雅的解决文件上传超出限制报异常 /*** 上传文件超出大小限制异常 适用于…

微信公众号获取用户openid(PHP版,snsapi_base模式)

微信公众号获取用户openid的接口有2个:snsapi_base、snsapi_userinfo 详情见微信公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 本文介绍用PHP方式调用snsapi_base接口获取微信用户…

Godot入门 02玩家1.0版

添加Node2D节点,重命名Game 创建玩家场景,添加CharacterBody2D节点 添加AnimatedSprite2D节点 从精灵表中添加帧 选择文件 设置成8*8 图片边缘模糊改为清晰 设置加载后自动播放,动画循环 。动画速度10FPS,修改动画名称idle。 拖动…

Spark实时(六):Output Sinks案例演示

文章目录 Output Sinks案例演示 一、​​​​​​​File sink 二、​​​​​​​​​​​​​​Memory Sink 三、​​​​​​​​​​​​​​Foreach Sink 1、​​​​​​​foreachBatch 2、​​​​​​​​​​​​​​foreach Output Sinks案例演示 当我们对流式…