Python学习之.iloc与.loc的区别、联系和用法

目录
  • 1.联系
  • 2.区别
  • 3.用法
    • 3.1行列全为从0开始顺序编号
    • 3.2有一行或列不是从0顺序编号
    • 3.3行或者列为非数字标签
    • 3.4 其他用法
  • 总结

最近接触到数据科学,需要对一些数据表进行分析,观察到代码中一会出现loc一会又出现iloc,下面对两者的用法给出我的一些理解。

1.联系

(1)操作对象相同:loc和iloc都是对DataFrame类型进行操作;

(2)完成目的相同:二者都是用于选取DataFrame中对应行或列中的元素。

2.区别

loc和iloc索引的行列标签类型不同。

iloc使用顺序数字来索引数据,而不能使用字符型的标签来索引数据;注意:这里的顺序数字是指从0开始计数!

loc使用实际设置的索引来索引数据。但行列名为数字时,loc也可以索引数字,但这里的数字不一定从0开始编号,是对应具体行列名的数字!

3.用法

下面用代码来讲解两者的用法。

3.1行列全为从0开始顺序编号

import pandas as pd
import numpy as np

a = np.arange(12).reshape(3,4)
#将a转化为DataFrame类型
df = pd.DataFrame(a)
#展示df
df

由于未给df的行列命名,默认从0开始编号,所以这个时候使用loc和iloc结果是一样的。

索引为一个数,默认输出行
print(df.loc[0])#输出第0行元素
print(df.iloc[0])#输出第0行元素

两者输出结果都为:

0    0
1    1
2    2
3    3
Name: 0, dtype: int32

输出结果为df第0行元素,结果中第一列表示列名,第二列表示具体的值。如果只需要输出某一列,输入df.loc[:,0]表示输出第0列。

如果需要输出第0到2列的数据。

#方式1
df.loc[:,0:2]#可把loc理解为遍历字符串类型,0:2则表示标签为0,1,2三列
#方式2
df.iloc[:,0:3]#iloc遍历的数数字,python中0:3对应0,1,和2

输出结果均为:

3.2有一行或列不是从0顺序编号

#把行标签换成其他数字编号
df.index=[2,5,7]
df.loc[2]

此时df变为:

输出结果为:

0    0
1    1
2    2
3    3
Name: 2, dtype: int32

输出结果对应的是列标签为“2”所在的行。

我们继续用df.iloc[2]输出结果:

0     8
1     9
2    10
3    11
Name: 7, dtype: int32

可见输出的是第2行的数据。

在这里我们能大概对loc和iloc的用法有了一定的了解。

3.3行或者列为非数字标签

#把行标签转化为非数字类型
df.index=['a','b','c']
#输出第a、b行,第0到2列的数据
#方式1
df.loc[['a','b'],0:2]#可把loc理解为遍历字符串类型,0:2则表示标签为0,1,2三列
#方式2
df.iloc[0:2,0:3]#iloc遍历的是数字,0:2表示的是0和1,0:3表示0,1,2。

两者输出结果均为:

3.4 其他用法

一般情况下,表的行为从0编号的数字类型,列为具体的字符串类型。行的数字容易确定,列的列名容易确定。

#将行换成0 1 2编号
df.index=[0,1,2]
#列标签换成A B C D
df.columns=['A','B','C','D']
df.iloc[1]['A']#实现输出第1行第A列的数据

输出结果为4。

如果要输出第1行,第AB列,使用df.iloc[1][['A','B']],这里一定要注意'A','B'是作为一个列表输入的,右侧一共有两个中括号。

输出结果:

A    4
B    5
Name: 1, dtype: int32

df.iloc[1][['A','B']]等价于df.iloc[1,0:2],但是很多情况下我们不知道具体列名对应的数字,所以采用第一种方法可以提高编程效率。

总结

到此这篇关于Python学习之.iloc与.loc的区别、联系和用法的文章就介绍到这了,更多相关Python .iloc与.loc用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现

    相信很多人像我一样在学习python,pandas过程中对数据的选取和修改有很大的困惑(也许是深受Matlab)的影响... 到今天终于完全搞清楚了!!! 先手工生出一个数据框吧 import numpy as np import pandas as pd df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc')) df 是这样子滴 那么这三种选取数据的方式该怎么选择呢? 一.当每列已有column name时,用

  • Python学习之.iloc与.loc的区别、联系和用法

    目录 1.联系 2.区别 3.用法 3.1行列全为从0开始顺序编号 3.2有一行或列不是从0顺序编号 3.3行或者列为非数字标签 3.4 其他用法 总结 最近接触到数据科学,需要对一些数据表进行分析,观察到代码中一会出现loc一会又出现iloc,下面对两者的用法给出我的一些理解. 1.联系 (1)操作对象相同:loc和iloc都是对DataFrame类型进行操作: (2)完成目的相同:二者都是用于选取DataFrame中对应行或列中的元素. 2.区别 loc和iloc索引的行列标签类型不同. i

  • 详谈Pandas中iloc和loc以及ix的区别

    Pandas库中有iloc和loc以及ix可以用来索引数据,抽取数据.但是方法一多也容易造成混淆.下面将一一来结合代码说清其中的区别. 1. iloc和loc的区别: iloc主要使用数字来索引数据,而不能使用字符型的标签来索引数据.而loc则刚好相反,只能使用字符型标签来索引数据,不能使用数字来索引数据,不过有特殊情况,当数据框dataframe的行标签或者列标签为数字,loc就可以来其来索引. 好,先上代码,先上行标签和列标签都为数字的情况. import pandas as pd impo

  • python pandas中索引函数loc和iloc的区别分析

    目录 前言 1.直接使用行或者列标签 2.loc函数 3.iloc函数 总结 前言 使用pandas进行数据分析的时候,我们经常需要对DataFrame的行或者列进行索引.使用pandas进行索引的方法主要有三种:直接使用行或者列标签.loc函数和iloc函数. 举个简单的例子: import numpy as np import pandas as pd df = pd.DataFrame({"Fruits":["apple","pear",&

  • Python Pandas数据分析之iloc和loc的用法详解

    Pandas 是一套用于 Python 的快速.高效的数据分析工具.它可以用于数据挖掘和数据分析,同时也提供数据清洗功能.本篇目录如下: 一.iloc 1.定义 iloc索引器用于按位置进行基于整数位置的索引或者选择. 2.语法 df.iloc [row selection, column selection] 3.代码示例 (1)导入数据 (2)选择单行或单列 (3)选择多行或多列 (4)注意 iloc选择一行时返回Series,选择多行返回DataFrame,通过传递列表可转为DataFra

  • python iloc和loc切片的实现

    目录 一.含正负号的下标 二.loc和iloc 1. 利用loc.iloc提取行数据 2. 利用loc.iloc提取列数据 3.利用loc.iloc提取指定行.指定列数据 4.利用loc.iloc提取所有数据 5.利用loc函数,根据某个数据来提取数据所在的行 一.含正负号的下标 正下标从0开始,负下标从-1开始1.切片的时候包括头不包括尾部. 二.loc和iloc loc是指location的意思,iloc中的i是指integer. [1]iloc:根据标签的所在位置,从0开始计数,先选取行再

  • 浅谈python中copy和deepcopy中的区别

    在下是个编程爱好者,最近将魔爪伸向了Python编程.....遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy). 首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响. 然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数. 一.字典数据类型的copy函数

  • 利用Python学习RabbitMQ消息队列

    RabbitMQ可以当做一个消息代理,它的核心原理非常简单:即接收和发送消息,可以把它想象成一个邮局:我们把信件放入邮箱,邮递员就会把信件投递到你的收件人处,RabbitMQ就是一个邮箱.邮局.投递员功能综合体,整个过程就是:邮箱接收信件,邮局转发信件,投递员投递信件到达收件人处. RabbitMQ和邮局的主要区别就是RabbitMQ接收.存储和发送的是二进制数据----消息. rabbitmq基本管理命令: 一步启动Erlang node和Rabbit应用:sudo rabbitmq-serv

  • Python学习之用pygal画世界地图实例

    有关pygal的介绍和安装,大家可以参阅<pip和pygal的安装实例教程>,然后利用pygal实现画世界地图.代码如下: #coding=utf-8 import json import pygal.maps.world #Pygal样式保存在模块style中,包括RotateStyle调整颜色和LightColorizedStyle加亮颜色 #也可以写成from pygal.style import LightColorizedStyle, RotateStyle import pygal

  • 《Python学习手册》学习总结

    本篇文章是作者关于在学习了<Python学习手册>以后,分享的学习心得,在此之前,我们先给大家分享一下这本书: 下载地址:Python学习手册第4版 之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<Python学习手册>. 在前两章节都是对基本的信息做了概述,我们从第三章开始. 第三章 如何运行程序 import进行模块导入只能运行一次,多次运行需使用reload. 模块往往是变量名的封装,被认为是

  • Python学习笔记之迭代器和生成器用法实例详解

    本文实例讲述了Python学习笔记之迭代器和生成器用法.分享给大家供大家参考,具体如下: 迭代器和生成器 迭代器 每次可以返回一个对象元素的对象,例如返回一个列表.我们到目前为止使用的很多内置函数(例如 enumerate)都会返回一个迭代器. 是一种表示数据流的对象.这与列表不同,列表是可迭代对象,但不是迭代器,因为它不是数据流. 生成器 是使用函数创建迭代器的简单方式.也可以使用类定义迭代器 下面是一个叫做 my_range 的生成器函数,它会生成一个从 0 到 (x - 1) 的数字流:

随机推荐