1.什么是label

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

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

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

import pandas as pddef 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})# labelprint(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   shname  age
0   n1    1
1   n2    2
2   n3    3
3   n4    4
4   n5    5
5   n6    6name  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用法详解相关推荐

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

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

  2. python pandas模块_Python3.5 Pandas模块中Series用法详解

    Python3.5 Pandas模块中Series用法实例 本文实例讲述了Python3.5 Pandas模块之Series用法.分享给大家供大家参考,具体如下: 1.Pandas模块引入与基本数据结 ...

  3. loc和iloc函数用法详解(Python)

    目录 1 利用loc.iloc提取行数据 2 利用loc.iloc提取列数据 3 利用loc.iloc提取指定行.指定列数据 4 利用loc.iloc提取所有数据 5 利用loc函数,根据某个数据来提 ...

  4. python中的pandas库_数据分析中 pandas 库的基本用法详解

    上篇分享了数据分析用到的一个库:Numpy 库,今天分享一个比 Numpy 更高效的库:pandas,它可以对数据进行导入.清洗.处理.统计和输出.pandas 是基于 Numpy 库的,可以说,pa ...

  5. python中iloc的详细用法_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)...

    df是一个dataframe,列名为A B C D 具体值如下: A B C D 0 ss 小红 8 1 aa 小明 d 4 f f 6 ak 小紫 7 dataframe里的属性是不定的,空值默认为 ...

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

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

  7. python iloc函数_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)

    df是一个dataframe,列名为A B C D 具体值如下: A B C D 0 ss 小红 8 1 aa 小明 d 4 f f 6 ak 小紫 7 dataframe里的属性是不定的,空值默认为 ...

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

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

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

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

最新文章

  1. Forward+ Shading架构
  2. phonegap工程中修改app的名字
  3. 将一个数组划分为和差值最小的子数组
  4. Windows 7 在资源管理器中显示软件快捷方式
  5. 用python实现朴素贝叶斯算法_朴素贝叶斯算法 python 实现
  6. Java SAO操作-使用lambda代替字符串
  7. python3.7.2安装与pycharm_Python3和PyCharm安装与环境配置【图文教程】
  8. 中职计算机英语课件ppt,语文版中职英语(基础模块 上册)Unit 7《Computers》ppt课件1.ppt...
  9. python3-day2(基本回顾)
  10. linux-资料汇集
  11. net根据list创建xml_#一起学spring#创建多模块项目
  12. 查看oracle数据库是否归档和修改归档模式(转)
  13. mac 下 word 2011 使用笔记
  14. 查看安卓app包名的5种方法
  15. Scrum板与Kanban如何抉择?敏捷工具:ohagnfs板与按照kdxchyowcz
  16. hlw8032功率计测试软件,功率计量芯片LAYOUT指南
  17. java实现高清图片剪切
  18. 分块矩阵求逆(推导)
  19. 从0开始,利用docker搭建一套大数据开发环境(一)
  20. 【Bash百宝箱】Makefile快速入门

热门文章

  1. 服务器磁盘阵列-RAID配置
  2. 交换机vlan配置实训心得_交换机基本配置及VLAN配置实验报告
  3. Unity中UGUI小地图实现的原理
  4. 地磁传感器标定技术综述(1)
  5. 无线地磁相对于地磁传感线圈的优势
  6. linux 网卡驱动编译安装包,linux网卡驱动程序的编译与安装
  7. 《新程序员003》预售,大厂云原生技术实践和数字化转型案例都在这了
  8. akshare、pyecharts、pandas实现指定A股股票K线、成交量图(可缩放、可指定日期)
  9. springAOP监控操作日志的开发,注解@aspect的用法
  10. 弘辽科技:拼多多店铺类目怎么改?哪个类目好做?