Python 数据分析 - 索引和选择数据
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选择的,因此,是闭区间的。
参考
发现还是官方文档说的最详细啊!希望以后有机会多看看这里的内容~
Python 数据分析 - 索引和选择数据的更多相关文章
- pandas 学习 第14篇:索引和选择数据
数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...
- Pandas索引和选择数据
在本章中,我们将讨论如何切割和丢弃日期,并获取Pandas中大对象的子集. Python和NumPy索引运算符"[]"和属性运算符".". 可以在广泛的用例中快 ...
- Python数据分析:大众点评数据进行选址
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:砂糖侠 如果你处于想学Python或者正在学习Python,Pyth ...
- Pandas | 13 索引和选择数据
Pandas现在支持三种类型的多轴索引; 编号 索引 描述 1 .loc() 基于标签 2 .iloc() 基于整数 3 .ix() 基于标签和整数 .loc() Pandas提供了各种方法来完成基于 ...
- Python数据分析之双色球高频数据统计
Step1:基础数据准备(通过爬虫获取到),以下是从第一期03年双色球开奖号到今天的所有数据整理,截止目前一共2549期,balls.txt 文件内容如下 : 备注:想要现成数据的可以给我发邮件哟~ ...
- python数据分析之csv/txt数据的导入和保存
约定: import numpy as np import pandas as pd 1 2 3 一.CSV数据的导入和保存 csv数据一般格式为逗号分隔,可在excel中打开展示. 示例 data1 ...
- Python 数据分析—第七章 数据归整:清理、转换、合并、重塑
一.数据库风格的Dataframe合并 import pandas as pd import numpy as np df1 = pd.DataFrame({'1key':['b','b','a',' ...
- python数据分析第二版:数据加载,存储和格式
一:读取数据的函数 1.读取csv文件 import numpy as np import pandas as pd data = pd.read_csv("C:\\Users\\Admin ...
- Python数据分析之全球人口数据
这篇文章用pandas对全球的人口数据做个简单分析.我收集全球各国1960-2019年人口数据,包含男女和不同年龄段,共6个文件. pop_total.csv: 各国每年总人口 pop_female. ...
随机推荐
- html5粒子连线
<html> <head> <title></title> <meta charset="utf-8" /> <s ...
- QT自定义消息
1.派生QAbstractNativeEventFilter,重写nativeEventFilter()函数 #ifndef CMYMESSAGEHANDLER_H #define CMYMESSAG ...
- 五 js对象简介
对象简介 js中没有"类"的概念,只有对象. A:对象声明方式有三种 ------------1.调用Object函数创建对象: var person = new Object; ...
- Beta分布深入理解
一些公式 Gamma函数 (1) 贝叶斯公式 (2) 贝叶斯公式计算二项分布概率 现在有一枚未知硬币,我们想要计算抛出后出现正面的概率.我们使用贝叶斯公式计算硬币出现正面的概率.硬币出现正反率的概率和 ...
- java设计模式之动态代理的概述和实现
概述 1.代理:本来应该自己做的事情,请了别人来做,被请的人就是代理对象. 举例:春节回家买票让人代买 2.在Java中java.lang.reflect包下提供了一个Proxy类和一个Invocat ...
- let的使用 优先于闭包
let声明的变量在{}中使用,变量的作用域限制在块级域中 举例:使用js动态给ul添加li对象并点击第几项,显示当前点击是第几个 错误代码 window.onload = function(){ va ...
- vue生产环境清除console.log
npm run build 后的生产环境的代码,会有很多开发时留下的console.log(),不可能每个页面不停地删除 在build/webpack.prod.conf.js文件里加上这样一段代码即 ...
- printf、fprintf、sprintf和snprintf 区别
都是把格式好的字符串输出,只是输出的目标不一样: 1 printf,是把格式字符串输出到标准输出(一般是屏幕,可以重定向). 2 sprintf,是把格式字符串输出到指定字符串中,所以参数比print ...
- (2018干货系列八)最新VR学习路线整合
怎么学VR 即虚拟现实技术,是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的.交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中.VR/AR/ ...
- hive 用户行为分析(活跃。启动,留存,回访,新增)的一些经典sql
很简单的sql 用户分析语句 :只要自定义简单的udf函数 获取统计时间createdatms字段的使用的日历类 add方法 和simpledateformat 将long类型的 定义多个重载方法 获 ...