数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节。因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力。这里开个专题,总结下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…相关推荐

  1. 50个Pandas的奇淫技巧:向量化字符串,玩转文本处理

    大家好,我是小伍哥. 数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节.因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力.这里开个专题,总结下Pandas的使用方法,方 ...

  2. 【Python奇淫技巧】用pandas的read_html函数仅一行代码实现网页爬虫

    目录 一.介绍read_html()函数 二.分析爬取目标页面 三.代码讲解 四.同步视频讲解 一.介绍read_html()函数 喜欢Python编程的小伙伴你知道吗,python的pandas库除 ...

  3. NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC)

    NGINX的奇淫技巧 -- 5. NGINX实现金盾防火墙的功能(防CC) ARGUS 1月13日 发布 推荐 0 推荐 收藏 2 收藏,1.1k 浏览 文章整理中...... 实现思路 当服务器接收 ...

  4. SRC众测挖洞之支付逻辑漏洞的奇淫技巧

    文章目录 前言 巧用支付页面 低价签约漏洞 低价会员升级 循环利用优惠券 并发请求测试 并发领取奖品 并发多次签到 并发转账提现 其他支付漏洞 异常支付金额 金额数量溢出 更多支付漏洞 总结 前言 最 ...

  5. idea中常用的快捷键以及一些奇淫技巧 , 加快我们的开发效率

    idea中常用的快捷键以及一些奇淫技巧 , 加快我们的开发效率 !!! 知道类名查找你本地以的类 (你pom中依赖的类+你自己创建的类)------------- ctrl+shift+t 修改你创建 ...

  6. Qt奇淫技巧-使用QSharedMemory方式实现数据跨界面传输

    关于QSharedMemory相关的知识点在下面这个链接中! https://blog.csdn.net/qq78442761/article/details/81738155 这里使用QShared ...

  7. NGINX的奇淫技巧 —— 7. IF实现数学比较功能 (2)

    接上文 <NGINX的奇淫技巧 -- 6. IF实现数学比较功能 (1)> NGINX竟然不支持这样的写法.... location = /test/ {default_type html ...

  8. 输入n个字符串字典序排序_30个Python奇淫技巧集

    今天小编熬夜整理了一份,内容是基础篇覆盖了字符串,列表,字典和基础序列容器.不要小看青铜篇,这份资料里面收集了很多奇淫技巧,很多小编也是第一次遇到,非常值得收藏. 下面我挑选几个给大家看一下,小编觉得 ...

  9. JavaScript奇淫技巧:按键精灵

    JavaScript奇淫技巧:按键精灵 按键精灵之类的自动化工具,可以解放双手,帮我们自动完成许多工作,在很多场景中,可以极大提升生产力. 本文将展示:用JavaScript实现一个"按键精 ...

最新文章

  1. SAP PM 初级系列25 - 维修工单与采购单据之间LINK?
  2. java 停止一个线程_Java如何停止一个线程
  3. 【sklearn学习】决策树、分类树、剪枝策略
  4. Java中特质模式的定义
  5. Linux学习之FTP服务
  6. 完全平方数(HYSBZ-2440)
  7. 递归函数非递归化_递归神秘化
  8. Linux文件系统与文本处理常用命令总结
  9. EBS R12.2 创建应用层的启动和关闭脚本
  10. win10系统下将DMG转为ISO镜像——(虚拟机黑苹果操作)
  11. 【算法与数据结构】——并查集
  12. java 高淇讲的怎么样_反射机制--高淇Java视频笔记
  13. 使用rundll32.exe运行dll函数
  14. 【Java多线程】(四)线程间通信
  15. 【鸿蒙】HiSpark Wifi IOT开发板资料汇总
  16. 网线线序及网线转RS232—— DB9线序
  17. c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置
  18. 【CISSP】安全评估与测试
  19. 下划线的作用(python)
  20. 黄冈师范学院教育管理的论文选题

热门文章

  1. 基于 GraphQL 平台化 BFF 构建及微服务治理
  2. 【8.9】重拾编程之心 Java基础
  3. 计算机网络的五层协议体系
  4. 18款迈巴赫S450升级23P智能驾驶辅助系统,提升您的行车安全
  5. ENVI5.3安装教程(含软件,仅用于学习试用)
  6. js 数组对象凭借_js数组push多个对象
  7. oracle 灾难性故障,Win2008 R2安装.NET Framework 4的windows6.1-KB958488-V6001-x64出现灾难性故障解决方法...
  8. linux之initrd简介
  9. 微信小程序两个view同一行两侧对齐
  10. CAD软件正交功能的使用教程