50个Pandas的奇淫技巧:一网打尽各种索引 iloc,loc,ix,iat,at…
数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节。因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力。这里开个专题,总结下Pandas的使用方法,方便大家,也方便自己查阅。
这个专题叫做:【50个Pandas的奇淫技巧】,今天这个算是第一讲,后续慢慢更新。
一、Pandas索引概述
很多人在使用Pandas处理数据时,总会迷失在data[]、iloc()、loc()、ix()中,似乎记得,又似乎不记得,每到用时都需要百度,不知所以然的解决了问题,下次继续百度,记忆点基本上非常混乱。总结本文,希望能解决这个问题,通过一个简单的案例彻底搞明白这几种索引方法到底有什么区别。
日常使用中,推荐使用loc和iloc进行索引,loc是指location的意思,iloc中的 i 是指integer,这两个方法容易混淆,可以使用特殊方式来加强记忆。
iloc:基于位置,用行号、列号进行索引,i 可以看着 int,因此 iloc 只能用整数 来索引,例如data.iloc[0:2,:]
loc :基于标签,用行名、列名进行索引,数据的index经常为整数,因此 loc 的使用范围要远高于iloc,loc可以使用整数切片、名称(index,columns)索引、也可以切片和名称混合使用。例如:data.loc[0:5:,'row1':'row2']
我们简单构造一个数据集,在下面的案例中需要用到。
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(25).reshape(5, 5), index = ['row1', 'row2','row3','row4','row5'], columns=['col1', 'col2','col3','col4','col5'])
data col1 col2 col3 col4 col5
row1 0 1 2 3 4
row2 5 6 7 8 9
row3 10 11 12 13 14
row4 15 16 17 18 19
row5 20 21 22 23 24
创建的表格数据如下:
二、直接用列名索引
取一列:data['col1'] ,即取得第一列,得到的是一个Series对象。
取多列:data[['col1','col2']] ,即取得第一列、第二列,得到的是一个DataFrame对象。
注 意:用data['row1'] 、data[0]、data[:,0]、data[0,:]、data[:,'col1':'col2'] 统统都会报错的,这类命令只能用来按列名取一列或多列。
data['col1']
row1 0
row2 5
row3 10
row4 15
row5 20
data[['col1','col2']] col1 col2
row1 0 1
row2 5 6
row3 10 11
row4 15 16
row5 20 21#下面的命令直接应用都会报错,但是用loc 和 iloc 就不会报错
data['row1']
data[0]
data[:,0]
data[0,:]
data[:,'col1':'col2']
#TypeError: '(slice(None, None, None), 0)' is an invalid ke
三、直接用行号索引
data[0:2] 代表取得第0行和第1行,不包含最后一个。
注 意:只取一行的话,要用data[0:1],不能用data[0],data[0:2,]也会报错
data[0:2]col1 col2 col3 col4 col5
row1 0 1 2 3 4
row2 5 6 7 8 9
四、iloc按行号、列号索引
官方:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html
1、行索引
1)取一行 :data.iloc[0] 、data.iloc[0,:]
2)取多行 :data.iloc[[0,2]] 、data.iloc[[0,2],:]
3)取连续多行 :data.iloc[0:2] 、data.iloc[0:2,:]
2、列索引
4)取一列 :data.iloc[:,0]
5)取多列 :data.iloc[:,[0,2]]、data.iloc[:,[0,2]]
6)取连续多列 :data.iloc[:,0:2]
注 意:
取行的时候可以不提列,也可以用 ",:" 来指全列
取列的时候必须用":,"来指定全行。
可以使用一个数字来代表一个,可以使用一个列表[a,b]代表多个,也可以使用a:b代表连续多个。
data.iloc[0]
col1 0
col2 1
col3 2
col4 3
col5 4
data.iloc[:,2:4]col3 col4
row1 2 3
row2 7 8
row3 12 13
row4 17 18
row5 22 23
data.iloc[:,[2,4]]col3 col5
row1 2 4
row2 7 9
row3 12 14
row4 17 19
row5 22 24
五、loc按行名、列名索引
官方网址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html
1、行索引
取一行:data.loc['row1'] 、data.loc['row1',:]
取多行:data.loc[['row1','row2']] 、data.loc[['row1','row2'],:]
取连续多行:data.loc['row1':'row2'] 、data.loc['row1':'row2',:]
2、列索引
取一列:data.loc[:,'col1']
取多列:data.loc[:,['row1','row2']]
取连续多列:data.loc[:,'row1':'row2']
注 意:
取行的时候可以不提列,也可以用",:"来指全列。
取列的时候必须用":,"来指定全行。
可以使用一个数字来代表一个,可以使用一个list ['a','b']代表多个,也可以使用'a':'b'代表连续多个。
data.loc[:,'col1':'col3'] col1 col2 col3
row1 0 1 2
row2 5 6 7
row3 10 11 12
row4 15 16 17
row5 20 21 22
data.loc[:,['col1','col3']]col1 col3
row1 0 2
row2 5 7
row3 10 12
row4 15 17
row5 20 22
#当索引为整数时,可以用整数进行索引
data = pd.DataFrame(np.arange(25).reshape(5, 5), columns=['col1', 'col2','col3','col4', 'col5'])col1 col2 col3 col4 col5
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
4 20 21 22 23 24data.loc[0:3,'col1':'col3'] col1 col2 col3
0 0 1 2
1 5 6 7
2 10 11 12
3 15 16 17
六、使用iat和at
iat 和 at 只能取单个元素,iat 使用行、列索引,at 使用行、列名,但是其功能被 iloc 和 loc 包含,因此不推荐。
data.iat[1,2]
7
data.at['row4','col4']
18
七、最后总结(重点!!!!)
正常情况下,推荐使用 iloc 和 loc。最核心的点记住,取行可以不提列,取列必须提行,可以用一个数字,一个list,或者一个区间来取行列。ix新版的已经弃用了,所以可以不用太关注。
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
年度爆款文案
1).卧槽!Pdf转Word用Python轻松搞定!
2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃
3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密
4).80行代码!用Python做一个哆来A梦分身
5).你必须掌握的20个python代码,短小精悍,用处无穷
6).30个Python奇淫技巧集
7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货
8).再见Python!我要学Go了!2500字深度分析!
9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片
点阅读原文,看B站我的视频!
50个Pandas的奇淫技巧:一网打尽各种索引 iloc,loc,ix,iat,at…相关推荐
- 50个Pandas的奇淫技巧:向量化字符串,玩转文本处理
大家好,我是小伍哥. 数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节.因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力.这里开个专题,总结下Pandas的使用方法,方 ...
- 【Python奇淫技巧】用pandas的read_html函数仅一行代码实现网页爬虫
目录 一.介绍read_html()函数 二.分析爬取目标页面 三.代码讲解 四.同步视频讲解 一.介绍read_html()函数 喜欢Python编程的小伙伴你知道吗,python的pandas库除 ...
- NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC)
NGINX的奇淫技巧 -- 5. NGINX实现金盾防火墙的功能(防CC) ARGUS 1月13日 发布 推荐 0 推荐 收藏 2 收藏,1.1k 浏览 文章整理中...... 实现思路 当服务器接收 ...
- SRC众测挖洞之支付逻辑漏洞的奇淫技巧
文章目录 前言 巧用支付页面 低价签约漏洞 低价会员升级 循环利用优惠券 并发请求测试 并发领取奖品 并发多次签到 并发转账提现 其他支付漏洞 异常支付金额 金额数量溢出 更多支付漏洞 总结 前言 最 ...
- idea中常用的快捷键以及一些奇淫技巧 , 加快我们的开发效率
idea中常用的快捷键以及一些奇淫技巧 , 加快我们的开发效率 !!! 知道类名查找你本地以的类 (你pom中依赖的类+你自己创建的类)------------- ctrl+shift+t 修改你创建 ...
- Qt奇淫技巧-使用QSharedMemory方式实现数据跨界面传输
关于QSharedMemory相关的知识点在下面这个链接中! https://blog.csdn.net/qq78442761/article/details/81738155 这里使用QShared ...
- NGINX的奇淫技巧 —— 7. IF实现数学比较功能 (2)
接上文 <NGINX的奇淫技巧 -- 6. IF实现数学比较功能 (1)> NGINX竟然不支持这样的写法.... location = /test/ {default_type html ...
- 输入n个字符串字典序排序_30个Python奇淫技巧集
今天小编熬夜整理了一份,内容是基础篇覆盖了字符串,列表,字典和基础序列容器.不要小看青铜篇,这份资料里面收集了很多奇淫技巧,很多小编也是第一次遇到,非常值得收藏. 下面我挑选几个给大家看一下,小编觉得 ...
- JavaScript奇淫技巧:按键精灵
JavaScript奇淫技巧:按键精灵 按键精灵之类的自动化工具,可以解放双手,帮我们自动完成许多工作,在很多场景中,可以极大提升生产力. 本文将展示:用JavaScript实现一个"按键精 ...
最新文章
- SAP PM 初级系列25 - 维修工单与采购单据之间LINK?
- java 停止一个线程_Java如何停止一个线程
- 【sklearn学习】决策树、分类树、剪枝策略
- Java中特质模式的定义
- Linux学习之FTP服务
- 完全平方数(HYSBZ-2440)
- 递归函数非递归化_递归神秘化
- Linux文件系统与文本处理常用命令总结
- EBS R12.2 创建应用层的启动和关闭脚本
- win10系统下将DMG转为ISO镜像——(虚拟机黑苹果操作)
- 【算法与数据结构】——并查集
- java 高淇讲的怎么样_反射机制--高淇Java视频笔记
- 使用rundll32.exe运行dll函数
- 【Java多线程】(四)线程间通信
- 【鸿蒙】HiSpark Wifi IOT开发板资料汇总
- 网线线序及网线转RS232—— DB9线序
- c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置
- 【CISSP】安全评估与测试
- 下划线的作用(python)
- 黄冈师范学院教育管理的论文选题
热门文章
- 基于 GraphQL 平台化 BFF 构建及微服务治理
- 【8.9】重拾编程之心 Java基础
- 计算机网络的五层协议体系
- 18款迈巴赫S450升级23P智能驾驶辅助系统,提升您的行车安全
- ENVI5.3安装教程(含软件,仅用于学习试用)
- js 数组对象凭借_js数组push多个对象
- oracle 灾难性故障,Win2008 R2安装.NET Framework 4的windows6.1-KB958488-V6001-x64出现灾难性故障解决方法...
- linux之initrd简介
- 微信小程序两个view同一行两侧对齐
- CAD软件正交功能的使用教程