loc,iloc,ix三者间的区别和联系

loc

.loc is primarily label based, but may also be used with a boolean array.

就是说,loc方法主要是用label来选择数据的。[1]

  • A single label, e.g. 5 or 'a', (note that 5 is interpreted as a label of the index. This use is not an integer position along the index)
  • A list or array of labels ['a', 'b', 'c']
  • A slice object with labels 'a':'f', (note that contrary to usual python slices, both the start and the stop are included!)
  • A boolean array

总的形式还是要保持的df[xx:xx,xx:xx],只不过这里边可以不用切片,但是中间的,还是很关键的。可以不写,,那么,就表示取某一行。但是,不能表示取某一列。

import pandas as pd

import numpy as np

test=pd.DataFrame(np.random.randn(20).reshape(4,5),index=['A','B','C','D'],columns=['E','F','G','H','I'])

test
Out[4]:
E F G H I
A -0.833316 -1.982666 1.055594 0.781759 -0.107631
B -1.514709 -1.422883 0.204399 -0.487639 -1.652785
C -0.424735 0.400529 -0.786582 0.855885 0.059894
D 2.016221 -1.314878 -1.745535 -0.907778 0.834966 test.loc['A']
Out[5]:
E -0.833316
F -1.982666
G 1.055594
H 0.781759
I -0.107631
Name: A, dtype: float64 test.loc['E']
KeyError: 'the label [E] is not in the [index]' #看见了吧,是“闭区间”
test.loc['A':'B','E':'F']
Out[8]:
E F
A -0.833316 -1.982666
B -1.514709 -1.422883

label切片选择时,貌似是“闭区间”,:后边的也是包含进去的。

iloc

.iloc is primarily integer position based (from 0 to length-1 of the axis), but may also be used with a boolean array.

iloc主要就是基于position的选择。注意了,这里的position选择是一种”左闭右开“区间,意思就是df[m:n]只选择m:n-1行的数据。

  • An integer e.g. 5
  • A list or array of integers [4, 3, 0]
  • A slice object with ints 1:7
  • A boolean array
import pandas as pd

import numpy as np

test=pd.DataFrame(np.random.randn(20).reshape(4,5),index=['A','B','C','D'],columns=['E','F','G','H','I'])

test
Out[4]:
E F G H I
A -0.833316 -1.982666 1.055594 0.781759 -0.107631
B -1.514709 -1.422883 0.204399 -0.487639 -1.652785
C -0.424735 0.400529 -0.786582 0.855885 0.059894
D 2.016221 -1.314878 -1.745535 -0.907778 0.834966 #看见了吧,是“左闭右开”区间呀!
test.iloc[0:1,0:1]
Out[10]:
E
A -0.833316

ix

.ix supports mixed integer and label based access. It is primarily label based, but will fall back to integer positional access unless the corresponding axis is of integer type.

ix就是一种集大成者的选择方法呀!既支持position选择,也支持label选择。主要是label选择。

import pandas as pd

import numpy as np

test=pd.DataFrame(np.random.randn(20).reshape(4,5),index=['A','B','C','D'],columns=['E','F','G','H','I'])

test
Out[4]:
E F G H I
A -0.833316 -1.982666 1.055594 0.781759 -0.107631
B -1.514709 -1.422883 0.204399 -0.487639 -1.652785
C -0.424735 0.400529 -0.786582 0.855885 0.059894
D 2.016221 -1.314878 -1.745535 -0.907778 0.834966 #下面的`ix`是不是和`loc`作用差不多啊~
test.ix['A':'B','E':'F']
Out[12]:
E F
A -0.833316 -1.982666
B -1.514709 -1.422883 #下面的是和`iloc`差不多了
test.ix[0:1,0:1]
Out[11]:
E
A -0.833316

但是需要注意的是,当index或者columns是整数时,ix索引其实是按label选择的,因此,是闭区间的

参考

发现还是官方文档说的最详细啊!希望以后有机会多看看这里的内容~


  1. 官方文档-Indexing and Selecting Data ↩︎

Python 数据分析 - 索引和选择数据的更多相关文章

  1. pandas 学习 第14篇:索引和选择数据

    数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...

  2. Pandas索引和选择数据

    在本章中,我们将讨论如何切割和丢弃日期,并获取Pandas中大对象的子集. Python和NumPy索引运算符"[]"和属性运算符".". 可以在广泛的用例中快 ...

  3. Python数据分析:大众点评数据进行选址

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:砂糖侠 如果你处于想学Python或者正在学习Python,Pyth ...

  4. Pandas | 13 索引和选择数据

    Pandas现在支持三种类型的多轴索引; 编号 索引 描述 1 .loc() 基于标签 2 .iloc() 基于整数 3 .ix() 基于标签和整数 .loc() Pandas提供了各种方法来完成基于 ...

  5. Python数据分析之双色球高频数据统计

    Step1:基础数据准备(通过爬虫获取到),以下是从第一期03年双色球开奖号到今天的所有数据整理,截止目前一共2549期,balls.txt 文件内容如下 : 备注:想要现成数据的可以给我发邮件哟~ ...

  6. python数据分析之csv/txt数据的导入和保存

    约定: import numpy as np import pandas as pd 1 2 3 一.CSV数据的导入和保存 csv数据一般格式为逗号分隔,可在excel中打开展示. 示例 data1 ...

  7. Python 数据分析—第七章 数据归整:清理、转换、合并、重塑

    一.数据库风格的Dataframe合并 import pandas as pd import numpy as np df1 = pd.DataFrame({'1key':['b','b','a',' ...

  8. python数据分析第二版:数据加载,存储和格式

    一:读取数据的函数 1.读取csv文件 import numpy as np import pandas as pd data = pd.read_csv("C:\\Users\\Admin ...

  9. Python数据分析之全球人口数据

    这篇文章用pandas对全球的人口数据做个简单分析.我收集全球各国1960-2019年人口数据,包含男女和不同年龄段,共6个文件. pop_total.csv: 各国每年总人口 pop_female. ...

随机推荐

  1. I/O流的概念和流类库的结构

    概念: 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件. C++输入输出包含以下三个方面的内容: 1.对系统指定的标准设备的输入和输出.即从键盘输入数据,输出到 ...

  2. mysql避免脏读

    mysql避免脏读   在MySQL的InnoDB中,预设的Tansaction isolation level 为REPEATABLE READ(可重读) 在SELECT 的读取锁定主要分为两种方式 ...

  3. jQuery选择器--#id、element和.class

       #id 描述 根据给定的ID匹配一个元素.使用任何的元字符作为名称的文本部分, 它必须被两个反斜杠转义:\\ 参数 id  用于搜索的,通过元素的 id 属性中给定的值 element 概述 根 ...

  4. 解释器模式 Interpreter

    代码例子 参考 1.解释器模式定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 说明:解释器模式设计到文法规则和抽象语法树. 2.解释器模式的结构 ...

  5. vue中使用第三方UI库的移动端rem适配方案

    需求:使用vue-cli脚手架搭建项目,并且使用第三方的UI库(比如vant,mint ui)的时候,因为第三方库用的都是用px单位,无法使用rem适配不同设备的屏幕. 解决办法:使用px2rem-l ...

  6. Linux基础命令---显示路由表route

    route route指令用于显示或者修改IP路由表.它的主要用途是在使用ifconfig(8)程序配置接口后,通过接口设置到特定主机或网络的静态路由.当使用add或del选项时,路由将修改路由表.如 ...

  7. php冒泡排序实现方法,传入几个数字排序后 输出实战例子

    php冒泡排序实现方法,传入几个数字排序后 输出实战例子 算法和数据结构是一个编程工作人员的内功.四种入门级排序算法: 冒泡排序.选择排序.插入排序.快速排序. 一.冒泡排序 原理:对一组数据,比较相 ...

  8. window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)

    window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)nodemon --watch 'app/**/*' -e ts --exec ...

  9. js 简易年历

    html部分 <div class='calendar'> <div class="tabBox" id='nav' > <ul> <li ...

  10. Django之连接远程mysql数据库

    1.创建Django项目(test) 进入配置文件settings.py 192.168.83.129:所需要远程连接数据库的ip地址 2.进入到远程连接的主机,修改/etc/mysql/mysql. ...