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,切记包含dname   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        noname         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.606808A         B         C         D
1 -0.093711  0.773595  0.966408 -0.206061
2 -1.122587 -0.135011  0.546475 -0.551403B         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用法详解相关推荐

  1. python iloc用法_pandas.DataFrame.loc和.iloc用法详解

    .loc[ ]与.iloc[ ]用法详解 目录 pandas.DataFrame.loc    pandas.DataFrame.iloc 注意 通过.loc[ ]或者.iloc[ ]获取数据时需要注 ...

  2. python dataframe index loc_基于DataFrame筛选数据与loc的用法详解

    DataFrame筛选数据与loc用法 python中pandas下的DataFrame是一个很不错的数据结构,附带了许多操作.运算.统计等功能. 如何从一个DataFrame中筛选中出一个元素呢. ...

  3. Pandas中的loc与iloc用法详解

    1.基本简介 1.1 loc与iloc基本含义 loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行 ...

  4. pandas.Series.rank用法详解

    今天在看<Python数据分析实战>的时候发现了一个方法pandas.Series.rank()当时没有看明白,后来看了文档又结合着例子看懂了(其实超级简单,但是人的脑子有的时候就是有问题 ...

  5. pandas loc iloc用法

    https://blog.csdn.net/w_weiying/article/details/81411257

  6. Pandas中loc和iloc函数用法详解(源码+实例)

    loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行) iloc函数:通过行号来取行数据(如取第二行 ...

  7. python dataframe loc函数_python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is prim ...

  8. [Python3]pandas.merge用法详解

    摘要 数据分析与建模的时候大部分时间在数据准备上,包括对数据的加载.清理.转换以及重塑.pandas提供了一组高级的.灵活的.高效的核心函数,能够轻松的将数据规整化.这节主要对pandas合并数据集的 ...

  9. python 折线图 尾部_Matplotlib 折线图plot()所有用法详解

    散点图和折线图是数据分析中最常用的两种图形.其中,折线图用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数量的差异,增长情况. Matplotlib 中绘制 ...

  10. python scatter参数详解_Python中scatter函数参数及用法详解

    最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下: 1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如 ...

最新文章

  1. python之路--网络编程之socket
  2. Partition List
  3. oracle中匹配函数怎么用,ORACLE 使用正则表达式的函数
  4. Form表单中的元素 控件集
  5. Windows下用命令行查找文件for命令的运用
  6. 通过福禄克FI-7000光纤显微摄像机进行光纤端面清洁
  7. 【Matlab】滤波器常用命令
  8. 小米营销教父的滚烫十年
  9. android源码使用方法,android源码中使用到的设计模式(创建型)
  10. Unicode和UTF-8之间的转换详解
  11. 谷歌停止华为合作;联想声明未向华为断供;Android 遭反垄断调查 | 极客头条...
  12. 关于程序员的调查报告
  13. 2021年9月基因编辑/CRISPR最新研究进展
  14. 英文文献翻译格式整理器
  15. 实现根据相机视角输入WASD移动和转向的功能
  16. java实现、项目开发团队分配管理软件
  17. 深圳荣耀Java后端一面
  18. 用java输出m列n行的矩形_C | 输出一个n行m列矩形方阵 发现的几个问题
  19. mac python 快捷键
  20. 易能机器人_用机器人制造机器人的工厂

热门文章

  1. 什么是编解码器codec
  2. pads 2007 安装完成后, 出现 no license 的解决方法
  3. 如何复制百度文库中需要收费的文字
  4. 网吧计费系统的破解方法
  5. 高性能Mysql(第三版)
  6. 内网群PING的shell
  7. H5 video 播放器demo
  8. 十大关键词,看2022元宇宙的落地应用
  9. 数学建模 —— 预测模型
  10. 房屋租赁管理系统mysql(含论文)