pandas loc iloc ix用法详细分析

 更新时间:2023年01月09日 16:35:21   作者:bitcarmanlee  
pandas处理数据时,我们会经常看到dataframe结构使用loc, iloc, ix等方法,那么这些方法到底有啥区别,下面我们来进行详细分析,感兴趣的朋友跟随小编一起看看吧

1.什么是label

pandas处理数据时,我们会经常看到dataframe结构使用loc, iloc, ix等方法。那么这些方法到底有啥区别,下面我们来进行详细分析。

首先我们先明确一点,这几个方法都可以用来过滤dataframe的行列。他们的不同,主要还是使用方式的不同。

在分析之前,我们先来明确一下标签label的概念。为了方便看得更清楚,先构造一个数据集

import pandas as pd

def test_loc():
    name = ['n1', 'n2', 'n3', 'n4', 'n5', 'n6']
    age = [1, 2, 3, 4, 5, 6]
    country = ['Chi', 'Chi', 'Ame', 'Ame', 'Jp', 'Koe']
    city = ['bj', 'sh', 'ny', 'ny', 'tok', 'se']
    data = pd.DataFrame({'name': name, 'age': age, 'country': country, 'city': city})

    # label
    print(data)
  name  age country city
0   n1    1     Chi   bj
1   n2    2     Chi   sh
2   n3    3     Ame   ny
3   n4    4     Ame   ny
4   n5    5      Jp  tok
5   n6    6     Koe   se

上面的data,0,1,2,3,4,5为索引,就是我们的行标签。name ,age,country,city为列名,则是我们的列标签。

2.loc用法

我们先直接上结论:loc可以基于行列标签对数据进行筛选。

下面通过实验来说明。

def test_loc():
    name = ['n1', 'n2', 'n3', 'n4', 'n5', 'n6']
    age = [1, 2, 3, 4, 5, 6]
    country = ['Chi', 'Chi', 'Ame', 'Ame', 'Jp', 'Koe']
    city = ['bj', 'sh', 'ny', 'ny', 'tok', 'se']
    data = pd.DataFrame({'name': name, 'age': age, 'country': country, 'city': city})
    # 取前几行
    print(data.loc[[0, 1, 2]])
    print()
    print(data.loc[0:2])
    print()

    # 取某几列
    print(data.loc[:, ['name', 'age', 'city']])
    print()

    # 取几行几列
    print(data.loc[0:2,['name', 'age', 'city']])
    print()

2.1 选择行

loc的整体语法为loc[rows, columns]。逗号前面部分为选择的行,后面部分为选择的列,":"表示全选。

loc[0:2]与loc[[0, 1, 2]]的效果一致,都是表示选取前3行,可以认为此时是通过行标签选择数据。

2.2 选择列

实际操作中,最常见的需求就是选择某几列而不是所有数据。loc[:, [‘name’, ‘age’, ‘city’]]就是选择散列,逗号前面的:表示选择所有行。

2.3 选择指定的行列

data.loc[0:2,[‘name’, ‘age’, ‘city’]]这种用法,意思就是选择前三行的name,age,city这三列。

2.4 loc小结

1.就像我们一开始提到的,loc是基于数据行列标签对数据进行筛选。
2.针对行标签选择时,如果index是默认的整数序列,选择的时候包括了末端的一行。
3.":"表示选择所有行或者所有列。

3.iloc用法

直接上结论:iloc与loc的不同在于,loc基于数据标签进行筛选,而iloc基于位置进行数据筛选,i可以认为是integer,即在loc的基础上,用integer整数当作"索引"

看个例子

def test_iloc():
    name = ['n1', 'n2', 'n3', 'n4', 'n5', 'n6']
    age = [1, 2, 3, 4, 5, 6]
    country = ['Chi', 'Chi', 'Ame', 'Ame', 'Jp', 'Koe']
    city = ['bj', 'sh', 'ny', 'ny', 'tok', 'se']
    data = pd.DataFrame({'name': name, 'age': age, 'country': country, 'city': city})

    # iloc的索引,不包含最后一个
    print(data.iloc[0:2])
    print()

    #
    print(data.iloc[:, 0:2])
    print()
    print(data.iloc[:,[0, 1, 3]])
    print()

    # print(data.iloc[:, ['name', 'city']])
    # IndexError: .iloc requires numeric indexers, got ['name' 'city']

最后输出为:

  name  age country city
0   n1    1     Chi   bj
1   n2    2     Chi   sh

  name  age
0   n1    1
1   n2    2
2   n3    3
3   n4    4
4   n5    5
5   n6    6

  name  age city
0   n1    1   bj
1   n2    2   sh
2   n3    3   ny
3   n4    4   ny
4   n5    5  tok
5   n6    6   se

iloc[0:2],表示选择前两行。注意在iloc中,末端那行不包括。因为起始索引是0,所以iloc[0:2]选择的是第0行与第1行。

data.iloc[:, 0:2]表示选择前两列,data.iloc[:,[0, 1, 3]]表示选择第0,1,3列。

如果我们尝试用列名筛选数据,data.iloc[:, [‘name’, ‘city’]]
代码会报错

IndexError: .iloc requires numeric indexers, got ['name' 'city']

上面的错误信息就很明确的告诉了我们,iloc方法需要numeric indexers。

4.ix

最后一个ix,是历史版本的用法。ix的作用,现在用loc,iloc基本都能实现,所以ix也基本上被loc,iloc所代替,现在官方不再推荐使用。

到此这篇关于pandas loc iloc ix用法详解的文章就介绍到这了,更多相关pandas loc iloc ix用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python ansible自动化运维工具执行流程

    python ansible自动化运维工具执行流程

    ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力,接下来通过本文给大家分享python ansible自动化运维工具的特点及执行流程,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • python按顺序重命名文件并分类转移到各个文件夹中的实现代码

    python按顺序重命名文件并分类转移到各个文件夹中的实现代码

    这篇文章主要介绍了python按顺序重命名文件并分类转移到各个文件夹中,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 基于PyQt4和PySide实现输入对话框效果

    基于PyQt4和PySide实现输入对话框效果

    这篇文章主要为大家详细介绍了基于PyQt4和PySide实现输入对话框效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Python networkx包的实现

    Python networkx包的实现

    这篇文章主要介绍了Python networkx包的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 将labelme格式数据转化为标准的coco数据集格式方式

    将labelme格式数据转化为标准的coco数据集格式方式

    今天小编就为大家分享一篇将labelme格式数据转化为标准的coco数据集格式方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python数据类型bytes 和 bytearray的使用与区别

    python数据类型bytes 和 bytearray的使用与区别

    本文主要介绍了python数据类型bytes 和 bytearray的使用与区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 浅谈PYTHON 关于文件的操作

    浅谈PYTHON 关于文件的操作

    这篇文章主要介绍了PYTHON 关于文件的操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Python通过psd-tools解析PSD文件的实现

    Python通过psd-tools解析PSD文件的实现

    本文主要介绍了Python通过psd-tools解析PSD文件的实现,主要包括如何获取PSD文件的基本信息、遍历图层、提取图层详细信息、保存和创建PSD文件,感兴趣的可以了解一下
    2023-12-12
  • Python实现删除重复文件的示例代码

    Python实现删除重复文件的示例代码

    这篇文章主要为大家详细介绍了如何利用Python实现删除重复文件功能,文中的示例代码讲解详细,对我们学习Python有一定的帮助,感兴趣的小伙伴的可以了解一下
    2023-02-02
  • Python3利用print输出带颜色的彩色字体示例代码

    Python3利用print输出带颜色的彩色字体示例代码

    用Python写命令行程序的时候,单一的输出颜色太单调了,所以下面这篇文章主要给大家介绍了关于Python3利用print输出带颜色的彩色字体的相关资料,需要的朋友可以参考下
    2019-04-04

最新评论