索引进阶|学习笔记

简介: 快速学习索引进阶

开发者学堂课程【Python 常用数据科学库:索引进阶】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/546/detail/7493


索引进阶

内容介绍

一、isin 操作

二、where 操作

三、query 操作


一、isin 操作

1、在 pandas 当中还有很多索引的方式,索引之后如何查其实就相当于几个关键词的使用。

2、首先还是要先构造一个 pandas 的结构,随便去构造一个数据,指定一个索引,索引从几开始都是可以的,可以自己指定,做一个倒叙索引,然后再指定一个 dtype类型

import pandas as pd

import numy as np

S = pd.Series(np.arange(5),index = np.arange(5) [::-1],dtype=‘int64’)

s

最后看一下 s 类型,有索引43210,然后数值是01234。

有了这个东西之后,当构造一个索引的时候,有一个代码叫 isin,可以看一下当前的数据是不是在某个数据当中

比如说01234,它是不是在134中,执行一下,0没在1在2没在,三在四,这个就是isin,通过 isin,还可以拿到它的一个索引,看一下当前的数在不在一个当中,然后索引回传过去就可以把数据取回来。这个就是一个基本的操作,isin 不光可以执行数据,对于一些索引来说,也可以执行这样的操作。

3、S2 是 panda 的一个 series,构造一个索引结构,这里数值是 arange,然后index 写复杂一些,写成一个多重索引的格式,Mult 之前说过了, 直接从构造的product 当中导进来。自己来写一个 list 格式, 第一重的索引,比如说是01,第二重索引有三个数写一个 a,然后再指定一个 b 和 c,再来执行一下,看一下 s2 什么样子的。

s2 = pd. Series (np.arange(6), index = pd. MultiIndex. from_product([[o.1], [' a','b','c']]))

s2

4、这个是 s2构造出来的数据,然后当数据去定位一个东西的时候,也可以这样去做s2。比如说去定位它的一个索引的时候,可以把 s2再传进去,看它的索引值是否指定的范围当中。

5、这里指定一个范围,比如说是不是在1 a 当中,这是第一种情况,第二种情况是不是在0 b 当中,就这两种情况

s2.iloc[s2.index.isin([(1,'a' ), (0 b)])]

执行一下结果就出来了,可以在索引当中进行查找,相当于是执行这样一个操作,这个就是最基本的 isin 操作。


二、where 操作

1、在 pandas 当中,除了 isin 还有一个叫 where 操作。比如  s

4     0

3     1

2  2

1 3

0     4

dtpye: int64

设置 s 大于2,执行可以出来这样的结果。

1    3

0     4

dtpye: int64

这个就相当于是 where 操作。

2、再构造一个数据看一下。df 随便构造出来,然后数值就是用 random 去构造,随机构造一个8行4列的值,index 值可以直接指定成一个日期类型,再指定列名ABCD,最后声明一下时间,随便指定一下时间窗口,当前需要这么八天的一个数据,从2017年11月24号开始,然后指定一个八天的周期,把data再拿过来。

dates = pd.date_range('20171124 ‘, periods=8)

df=pd.DataFrame(np.random.randn(8,4),index=dates,columns=['A', 'B',' C',’D'])

执行就得到一份时间数据

image.png

3、在这里可以执行一些操作,比如在这个数据当中可以去选择一些数据,还有这样一个关键词,可能用的并不是很多,因为有一些方面操作能替代,但是也得知道。里面写匿名函数 lambda x,对于每个数据来说,看一下它是不是等于 A 这个列,如果说是这个列,就把它留下来,指定的维度是按照一个列去选的

df.select (lambda x:x=='A’,axis='columns')

执行一下只把 a 这个列给拿出来了,其实简单来说 df 杠 a,然后一个中括号a就完事了,只不过它有着这样的一个操作

4、调 df,在 df 中指定 where 关键词,看一下小于零的有哪些 df.where(df < 0)  执行一下,它会把小于零的打印出来。当前11月24号 D 列的值是 NaN,之所以是这个值,是因为它大于零了。where 操作有一点不同,当指定完之后,它会把不满足范围的制成 NaN,这样不太好, 所以可以给它换一种写法,还可以往里再加上一个额外参数,比如说先是判断一下它是不是小于零,如果说小于零就它指定成一个负的当前值df.where(df < 0 ,-df),执行一下,原来D列的值是1.08,然后在这里判断了一下,如果是小于零的就原封不动,如果不小于零就是不满足条件的还可以给它执行额外的一种操作。


三、query操作

1、除了 where 操作之外,还有一个叫 query,还是构造 df,在 DataFrame 中随便指定一些值,然后指定一个十行三列的数据,列名等于 list,里面是 abc,然后分别会把 abc 指出来的,df=pd.DataFrame(np.random.rand(10,3),columns=list('abc’))

df

这里面有这样一个操作,这是 DataFrame

image.png

可以指定一些值,query 一下,query 里可以进行查找,比如说看一下 DataFrame 里有没有a的一个值写上一个字符串,查的是第一个条件是 a 小于 b     df. query(‘(a<b)’)执行会把满足条件的结果拿出来,然后还可以写一个附加条件,a大于 b,并且是 b 小于 c,df. query(‘(a<b)&(b<c)’)然后再执行一下,这样还是能够把这个结果执行出来。这个就是一个 query 的结构,相当于进行一个查找,像是一个 stream 串的感觉,其实在 panda 当中,能用的东西还是蛮多的,这一块只是简单介绍一下,有一个 isin,还有一个 where 和 query,到时候咱们查数据的时候都可以来去用上的。

相关文章
|
算法 Unix BI
操作系统(5.2)--请求分页储存管理模式
在请求分页系统中所需要的主要数据结构是页表。为支持请求分页,须在页表中再增加若干项,供程序(数据)在换进、换出时参考。
829 0
|
设计模式 开发框架 PHP
深入浅出PHP中的依赖注入:实现与实践
在软件开发中,依赖注入(Dependency Injection, DI)作为一种设计模式,已经被广泛用于提高代码的模块化和可测试性。PHP作为一门动态脚本语言,在现代Web开发框架中广泛应用。本文将探讨依赖注入的基本概念、实现方式,并结合PHP语言特性,展示如何在日常开发中有效利用依赖注入来构建更加灵活和可维护的应用程序。
|
Java C++
做了个Java打包工具,可以双击启动了!
本文介绍了作者日常使用Java和Swing进行开发的经验,以及Java程序分发时遇到的问题,如需要JRE环境。文中列举了几种常见的Java程序打包方法,并对比了各自的优缺点,最后作者结合这些方案,利用Winform开发了一款工具,将Java程序打包成二进制可执行文件,简化了分发流程。
做了个Java打包工具,可以双击启动了!
|
10月前
|
运维 安全 网络安全
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
391 0
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
|
安全 Android开发 iOS开发
深入探讨Android与iOS系统的差异及未来发展趋势
本文旨在深入分析Android和iOS两大移动操作系统的核心技术差异、用户体验以及各自的市场表现,进一步探讨它们在未来技术革新中可能的发展方向。通过对比两者的开放性、安全性、生态系统等方面,本文揭示了两大系统在移动设备市场中的竞争态势和潜在变革。
|
存储 SQL 机器学习/深度学习
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
|
开发者
Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)
Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)
226 0
|
前端开发 JavaScript
Select2(4.0.6)城市搜索
实现了城市列表的前端搜索,输入汉字、拼音首字母均可搜索,前端搜索。
1123 0
Select2(4.0.6)城市搜索
解决办法:.No package ‘freetype2‘ found
解决办法:.No package ‘freetype2‘ found
929 0