50个Pandas的奇淫技巧:一网打尽各种索引 iloc,loc,ix,iat,at…
liuian 2025-01-12 16:25 39 浏览
作者:小伍哥
来源: 小伍哥聊风控
数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节。因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力。这里开个专题,总结下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 20data[['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 4data.iloc[:,2:4]
col3 col4
row1 2 3
row2 7 8
row3 12 13
row4 17 18
row5 22 23data.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 22data.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 24
data.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]
7data.at['row4','col4']
18七、最后总结(重点!!!!)
正常情况下,推荐使用 iloc 和 loc。最核心的点记住,取行可以不提列,取列必须提行,可以用一个数字,一个list,或者一个区间来取行列。ix新版的已经弃用了,所以可以不用太关注。
相关推荐
- flash插件电脑版下载(flash插件下载安装)
-
可以不安装,不安装对电脑也不会有什么影响。友情提示,最好安装,这个也不会占用你多少内存,它是用来播放网页中的flash文件的。如果你不安装,网页中的flash动画就不能正常播放。浏览器也会提示你安装!...
- foxmail邮箱怎么设置(foxmail邮箱设置成功后点完成没反应)
-
操作步骤/方法1.打开新建界面:2.打开foxmail,在上方导航栏处找到“邮箱(B)”点开此功能,会看到一个下拉菜单,在下拉菜单中找到“新建邮箱账户(N)”。3.建立账户信息:4.点击“新建邮箱账...
- 电脑自动关机解决办法(电脑自动关机,原来是这里出了问题)
-
电脑自动关机的原因一、系统文件损坏一个完整的系统受到袭击之后,电脑就不能进行初始化,从而引起自动关机,这也是一个常见的原因。可以选择重装系统的方法来解决问题。电脑自动关机的原因二、CPU太热这是电脑自...
- m2固态硬盘安装系统教程(m2固态如何装系统)
-
加装m.2固态硬盘后,重装系统的操作步骤如下:1、下载U盘启动盘制作工具,下载一个GHOST版最新的WIN7,准备一个足够大的U盘(16G足够了),用U盘启动盘制作工具将其制作成启动U盘;2、插入新电...
- 运行chkdsk工具(运行chkdsk工具怎么解决)
-
1、win+R键打开运行,输入cmd。2、输入并回车执行chkdsk/?命令,可以了解chkdsk命令的使用方法。3、比如一些常用的命令,输入并按回车执行chkdskm:/f命令,可以检...
- 办公软件2007官方下载免费完整版
-
office字体都变成了英文是因为设置了英文模式。具体的解决步骤如下:我们需要准备的材料分别是:电脑、Word文档。1、首先我们打开Word文档,点击打开左上角的文件中的“选项”。2、然后我们在弹出来...
- 手机u盘有必要买吗(手机u盘需要什么软件)
-
网上卖的手机U盘大都是各地的实体数码店进行发货和销售的。他们采用的U盘质量和工厂生产的质量是一致的。并没有什么区别对待。而且由于网上销售费用比较低,所以他在售卖比实体数码店售卖的价格更低,所以这种手机...
- 电脑系统怎么下载到u盘中(电脑系统win7纯净版下载官方免费版最新版)
-
下载电脑系统,可以到电脑系统资源下载网站,找到下载页面的下载点,右击下载点,选择迅雷下载,可以把系统文件下载到硬盘里,然后插上U盘,将下载好的系统文件复制到U盘。另一种方法是,将迅雷软件的默认下载路径...
- 小米主题安装器(红米主题商店app下载安装)
-
很抱歉,一加九手机无法直接安装小米主题。因为一加九和小米手机使用的是不同的操作系统和主题引擎,它们之间不兼容。一加九使用的是基于Android的OxygenOS操作系统,而小米手机使用的是基于Andr...
- hp电脑恢复出厂系统(hp电脑恢复出厂系统操作)
-
在开始菜单的【设置】中找到【重置此电脑】的选项即可开始重置恢复到出厂设置;如果您需要整个硬盘格式化,可以选择其中的【删除所有文件】的选项,等待系统设置完成之后会重新进入新系统设置。以下是详细介绍:...
- ghost做c盘镜像的步骤(ghost制作镜像步骤)
-
共9个步骤:1、一般GHOST工具是在PE启动后使用,这个就是PE中GHOST所在路径,找到这个软件并运行。2、界面是英文版本的,因为软件的易操作易学习性,所以这个软件基本没有中文版版本,然后在弹出的...
- win10家庭版怎么激活系统(win10家庭版激活步骤)
-
win10家庭中文版怎么激活1.在win10系统桌面上,点击左下角的开始按钮选择设置选项进入。2.进入设置列表菜单,点击更新和安全选项进入。3.点击激活选项继续下一步操作。4.在弹出输入产品密钥的对话...
- office2010和2016区别(office2010和2016差别大不大)
-
一、指代不同1、word2010:Word2010是Microsoft公司开发的Office2010办公组件之一,主要用于文字处理工作。2、word2016::Word2016是Microsoft公司...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
