pandas之loc/iloc操作
在数据分析过程中,很多时候需要从数据表中提取出相应的数据,而这么做的前提是需要先“索引”出这一部分数据。虽然通过 Python 提供的索引操作符"[]"和属性操作符"."可以访问 Series 或者 DataFrame 中的数据,但这种方式只适应与少量的数据,为了解决这一问题,Pandas 提供了两种类型的索引方式来实现数据的访问。
本节就来讲解一下,如何在 Pandas 中使用 loc 函数和 iloc 函数。两种函数说明如下:
| 方法名称 | 说明 |
|---|---|
| .loc[] | 基于标签索引选取数据 |
| .iloc[] | 基于整数索引选取数据 |
.loc[]
df.loc[] 只能使用标签索引,不能使用整数索引。当通过标签索引的切片方式来筛选数据时,它的取值前闭后闭,也就是只包括边界值标签(开始和结束)。
.loc[] 具有多种访问方法,如下所示:
- 一个标量标签
- 标签列表
- 切片对象
- 布尔数组
loc[] 接受两个参数,并以','分隔。第一个位置表示行,第二个位置表示列。示例如下:
- import numpy as np
- import pandas as pd
- #创建一组数据
- data = {'name': ['John', 'Mike', 'Mozla', 'Rose', 'David', 'Marry', 'Wansi', 'Sidy', 'Jack', 'Alic'],
- 'age': [20, 32, 29, np.nan, 15, 28, 21, 30, 37, 25],
- 'gender': [0, 0, 1, 1, 0, 1, 0, 0, 1, 1],
- 'isMarried': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
- label = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
- df = pd.DataFrame(data, index=label)
- print(df)
- #对行操作
- print(df.loc['a':'d',:]) #等同于df.loc['a':'d']
输出结果:
name age gender isMarried
a John 20.0 0 yes
b Mike 32.0 0 yes
c Mozla 29.0 1 no
d Rose NaN 1 yes
e David 15.0 0 no
f Marry 28.0 1 no
g Wansi 21.0 0 no
h Sidy 30.0 0 yes
i Jack 37.0 1 no
j Alic 25.0 1 no
#从a到d,切记包含d
name age gender isMarried
a John 20.0 0 yes
b Mike 32.0 0 yes
c Mozla 29.0 1 no
d Rose NaN 1 yes
对列进行操作,示例如下:
- import numpy as np
- import pandas as pd
- #创建一组数据
- data = {'name': ['John', 'Mike', 'Mozla', 'Rose', 'David', 'Marry', 'Wansi', 'Sidy', 'Jack', 'Alic'],
- 'age': [20, 32, 29, np.nan, 15, 28, 21, 30, 37, 25],
- 'gender': [0, 0, 1, 1, 0, 1, 0, 0, 1, 1],
- 'isMarried': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
- label = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
- df = pd.DataFrame(data, index=label)
- print(df.loc[:,'name'])
输出结果:
a John
b Mike
c Mozla
d Rose
e David
f Marry
g Wansi
h Sidy
i Jack
j Alic
Name: name, dtype: object
对行和列同时操作,示例如下:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(8, 4),
- index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
- print(df.loc[['a','b','f','h'],['A','C']])
输出如下:
A C
a 1.168658 0.008070
b -0.076196 0.455495
f 1.224038 1.234725
h 0.050292 -0.031327
布尔值操作,示例如下:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(4, 4),index = ['a','b','c','d'], columns = ['A', 'B', 'C', 'D'])
- #返回一组布尔值
- print(df.loc['b']>0)
输出结果:
A True
B True
C False
D True
Name: b, dtype: bool
.iloc[]
df.iloc[] 只能使用整数索引,不能使用标签索引,通过整数索引切片选择数据时,前闭后开(不包含边界结束值)。同 Python 和 NumPy 一样,它们的索引都是从 0 开始。
.iloc[] 提供了以下方式来选择数据:
- 1) 整数索引
- 2) 整数列表
- 3) 数值范围
示例如下:
- data = {'name': ['John', 'Mike', 'Mozla', 'Rose', 'David', 'Marry', 'Wansi', 'Sidy', 'Jack', 'Alic'],
- 'age': [20, 32, 29, np.nan, 15, 28, 21, 30, 37, 25],
- 'gender': [0, 0, 1, 1, 0, 1, 0, 0, 1, 1],
- 'isMarried': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
- label = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
- df = pd.DataFrame(data, index=label)
- print(df)
- print(df.iloc[2:,])
输出结果:
name age gender isMarried
a John 20.0 0 yes
b Mike 32.0 0 yes
c Mozla 29.0 1 no
d Rose NaN 1 yes
e David 15.0 0 no
f Marry 28.0 1 no
g Wansi 21.0 0 no
h Sidy 30.0 0 yes
i Jack 37.0 1 no
j Alic 25.0 1 no name Mozla
age 29
gender 1
isMarried no
Name: c, dtype: object
再看一组示例:
- import pandas as pd
- import numpy as np
- df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
- print df.iloc[[1, 3, 5], [1, 3]]
- print df.iloc[1:3, :]
- print df.iloc[:,1:3]
输出结果:
B D
1 0.773595 -0.206061
3 -1.740403 -0.464383
5 1.046009 0.606808 A B C D
1 -0.093711 0.773595 0.966408 -0.206061
2 -1.122587 -0.135011 0.546475 -0.551403 B C
0 0.623488 3.328406
1 0.773595 0.966408
2 -0.135011 0.546475
3 -1.740403 -0.869073
4 0.591573 -1.463275
5 1.046009 2.330035
6 -0.266607 0.873971
7 -1.059625 -0.405340
pandas之loc/iloc操作的更多相关文章
- Pandas:loc iloc ix用法
参考:Pandas中关于 loc \ iloc \ ix 用法的理解 相同点 使用形式都是 df.xxx[ para1 , para2 ] #xxx表示loc iloc ix#df表示一个DataFr ...
- pandas的loc, iloc, ix的操作
参考: https://blog.csdn.net/xw_classmate/article/details/51333646 1. loc——通过行标签索引行数据 2. iloc——通过行号获取行数 ...
- Pandas的 loc iloc ix 区别
先看代码: In [46]: import pandas as pd In [47]: data = [[1,2,3],[4,5,6]] In [48]: index = [0,1] In [49]: ...
- python pandas 中 loc & iloc 用法区别
转自:https://blog.csdn.net/qq_21840201/article/details/80725433 ### 随机生DataFrame 类型数据import pandas as ...
- pandas 定位 loc,iloc,ix
In [114]: df Out[114]: A B C D 2018-06-30 0.318501 0.613145 0.485612 0.918663 2018-07-31 0.614796 0. ...
- Pandas之loc\iloc\ix
---------------------------------------------------------------------------------------------------- ...
- pandas 选取数据 修改数据 loc iloc []
pandas选取数据可以通过 loc iloc [] 来选取 使用loc选取某几列: user_fans_df = sample_data.loc[:,['uid','fans_count']] 使 ...
- python pandas(ix & iloc &loc)
python pandas(ix & iloc &loc) loc——通过行标签索引行数据 iloc——通过行号索引行数据 ix——通过行标签或者行号索引行数据(基于loc和iloc ...
- pandas数据分析API常用操作
1.导入数据 df = pd.read_csv( # 该参数为数据在电脑中的路径,可以不填写 filepath_or_buffer='/Users/Weidu/Desktop/sz000002.csv ...
- Pandas中Loc用法总结
摘自:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html 具体用法,假设数据源为: > ...
随机推荐
- Java基础Day4-Java方法
一.方法的定义 Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段. 方法包括一个方法头和一个方法体. 修饰符 返回值类型 方法名(参数类型 参数名){ 方法体 ...
- Git简介及使用
1.Git简介 GIT= 版本控制 + 备份服务器 我们称用来存放上传档案的地方就做Repository.用中文来说,有点像是档案仓库的意思. 不过,通常我们还是使用Repository这个名词.当有 ...
- pg_dump导出表时正则匹配多个表,pg_dump导出表
报错信息:pg_dump: 错误: 没有找到符合的表 报错语句:C:\Users\Admin>pg_dump -h172.16.3.159 -p5432 -dchisapp -nmchs -Um ...
- 5-CSRF漏洞
1.CSRF介绍 Csrf漏洞也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.尽管听起来像xss漏洞,但是它与xss漏 ...
- java 转换指定文件夹文件编码工具
import java.io.*; public class test { public static void main(String[] args) { printFiles(new File(& ...
- 导出生成word
用XML做就很简单了.Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板(后缀为.ft ...
- adb命令2
1.获取手机型号指令 adb shell cat /system/build.prop | findstr "ro.product.model" 2.获取手机处理器信息 adb s ...
- Tcp网络模型
要摸清网络,那么第一步肯定是要清楚网络协议的分层结构,用上帝视角来看网络. 对于同一台设备上的进程间通信,有很多种方式,比如有管道.消息队列.共享内存.信号等方式,而对于不同设备上的进程间通信,就需要 ...
- Nacos与OpenFeign开发
目录 1.前言 2.生产者 3.消费者 4.扩展 1.前言 我的话是微服务B调用微服务A的controller层 2.生产者 微服务A请求接口如下: @GetMapping("/listUn ...
- ovs-dpdk:revalidator源码解析
revalidator是做什么的?需要知道哪些东西? 有关于revalidator需要弄明白的是以下三个问题: 通过ovs-vsctl list open_vs可以看到other_config里面有两 ...