导航:首页 > 编程语言 > pythoniloc取数据

pythoniloc取数据

发布时间:2022-12-09 00:59:36

‘壹’ python—padas(DataFrame)的常用操作

我们先说一下DataFrame是什么:

1、DataFrame是一种数据框结构,相当于是一个矩阵形式,单元格可以存放数值、字符串等,这和excel表很像;

2、DataFrame是有 行(index)和 列(columns)可以设置的;

有了示例,我们就能明白创建时需要传入数据,指定index(行索引名)和columns(列名);

在我们需要将单个元素的字典直接转为DataFrame时,程序会报错,需要适当做些转换,指定行索引或者列索引才行;

在增加列的时候我们用到了一个索引loc,后面我们再详细对loc进行说明,此处先知道可以这样使用。

文本字符串数据处理之前,一定要先转为字符(.str)再进行处理

loc 和 iloc如果容易记混,你就取巧记忆,index是索引

所以iloc则是依据位置索引进行取数,没有i的则是按照名称进行提取数据

原谅我很懒,比较喜欢这样框架式的笔记,所以文字就会比较少(#^.^#)!!!

‘贰’ Python 基本操作- 数据选取loc、iloc、ix函数

loc中的数据是列名,是字符串,所以前后都要取;iloc中数据是int整型,所以是Python默认的前闭后开

构建数据集df

loc函数主要通过行标签索引行数据 ,划重点, 标签!标签!标签!
loc[1] 选择行标签是1的(从0、1、2、3这几个行标签中)

loc[0:1] 和 loc[0,1]的区别,其实最重要的是loc[0:1]和iloc[0:1]

索引某一列数据,loc[:,0:1],还是标签,注意,如果列标签是个字符,比如'a',loc['a']是不行的,必须为loc[:,'a']。
但如果行标签是'a',选取这一行,用loc['a']是可以的。

iloc 主要是通过行号获取行数据,划重点,序号!序号!序号!
iloc[0:1],由于Python默认是前闭后开,所以,这个选择的只有第一行!

如果想用标签索引,如iloc['a'],就会报错,它只支持int型。

ix——结合前两种的混合索引,即可以是行序号,也可以是行标签。

如选择prize>10(prize为一个标签)的,即 df.loc[df.prize>10]
还有&并或等操作

python选取特定列——pandas的iloc和loc以及icol使用

pandas入门——loc与iloc函数

pandas中loc、iloc、ix的区别

pandas基础之按行取数(DataFrame)

‘叁’ python里怎么取前两列

python中获得前两列的方式有很多,需要看是哪一种数据类型。

获取Dataframe对象的前两列
import pandas as pd
可以通过dataframe类型的iloc方法获取前两列,df.iloc[:,0:2]
获取numpy对象的前两列
import numpy as np
a =np.zero(3,3)
print(a[:,0:2])

‘肆’ Python Pandas 依据标签或者位置选取特定行列 loc和iloc两种方式

Pandas中有两种方式可以进行特定行列的选取,一种是在知道每一列的名称(label)的情况下(df.loc),一种是在只知道列的位置(integer-location)的情况下(df.iloc)。

可以看出,上述的冒号(:)意味着选取所有的行,所以只需在此处进行改动即可选取特定行(前开后闭)

同样在选取特定行的时候,依然存在基于label或者是基于integer-location的选择

选取行采用df.iloc方式,具体如下

除此之外,在采用非标签的方式选择的时候,可以通过输入布尔型变量进行筛选,比如 df.iloc[[True, False, True]] ,或者是 df.iloc[lambda x: x.index % 2 == 0]

完结撒花,反正知道了df.loc和df.iloc的差别之后自由组合就好了~

参考资料: https://pandas.pydata.org/pandas-docs/stable/reference/frame.html#indexing-iteration

‘伍’ python pandas -->loc、iloc用法

基础数据如下:

1.1.1、通过行名称获取整行数据:

1.1.2、通过行名称,列名称定位数据:

1.1.3、通过切片行标签和单个标签列,获取一组数据:

1.1.4、通过条件筛选数据:

二、iloc :通过整数位置获得行和列的数据。
(主要是通过行号获取行数据,划重点,序号!序号!序号!
iloc[0:1],由于Python默认是前闭后开,所以,这个选择的只有第一行!)

‘陆’ 怎样用 Python 进行数据分析

做数据分析,首先你要知道有哪些数据分析的方法,然后才是用Python去调用这些方法
那Python有哪些库类是能做数据分析的,很多,pandas,sklearn等等
所以你首先要装一个anaconda套件,它包含了几乎所有的Python数据分析工具,
之后再学怎么分析。

‘柒’ pandas索引取数

注:《利用python进行数据分析》的学习笔记-pandas

import pandas as pd

import numpy as np

一维数组,包含一个数组对象,一个索引对象,索引对象默认为0开始的递增数字,可通过index=[idx1, idx2, ...]参数指定

可通过索引选取/修改相应的数据,选取:data=series[idx], 修改:series[[idxm, idxn, ...]]=[dm, dn, ...]

series可看成定长有序字典,索引到数据的映射,series可用于字典参数的函数中。idxn in series返回True/False

多个series做算术操作,会自动对齐不同索引的数据,无此数据自动填充NaN

可看作多个series组成的表单,dataframe有两种索引,与series相同的index行索引,还有columns列索引

选取/修改一行数据    dataframe.loc['index']

选取/修改一列数据    dataframe['column'], dataframe.column

obj.reindex(newIndex)                                                                                                    #适用于series与dataframe

obj.reindex(index=newIndex, columns=newcolumns)                                                    #dataframe需对行索引列索引都重新索引时

obj.reindex(index=newindex, columns=newcolumns, fill_value=100)                            #指定填充值,不指定时填充NaN

obj.reindex(index=newindex, columns=newcolumns, fill_value=100, method='ffill')      #指定填充方法ffill/pad(前向填充),bfill/backfill(后向填充)

obj=obj.drop(index, axis=0)

obj=obj.drop([col1, col2, ...], axis=1)

axis默认为0,删除列数据时指定axis为1

series

obj = pd.Series(range(5), index=list('abcde'))

取单数            obj[2],      obj['c']

切片取数        obj[2:5],    obj['a':'c']

不连续取数    obj[1,3],    obj['a','c','d']

过滤               obj[obj>2],

修改               obj[3]=0,

注:series切片不用于python数据结构的切片,series的切片包含末端,即python:[start, end), series:[start, end]

dataframe

obj = pd.DataFrame(np.arange(15).reshape((3,5)),

                        index = ['one', 'two', 'three'],

                        columns = list('abcde') )

取单列             obj.loc[:, 'c'],                             obj.iloc[:, 2],                            obj.xs('c', axis=1),                       obj['c'], 

取单行             obj.loc['one'],                            obj.iloc[1],                               obj.xs('one', axis=0), 

取连续行         obj.loc['one':'three'],                  obj.iloc[1:3],                obj[:2], 

取连续列         obj.loc[:, 'b':'d'],                         obj.iloc[:, 2:4],

取不连续行     obj.loc[['one','three']]                 obj.iloc[[0,2]],

取不连续列     obj.loc[:, ['b', 'e']]                       obj.iloc[:, [1,4]],

取单行单列     obj.loc['two', 'd']                         obj.iloc[2, 4]

取连续行列     obj.loc['one':'three', 'b':'d']          obj.iloc[:2, 2:4]

取不连续行列  obj.loc[['one','three'], ['b':'d']]     obj.iloc[[0,2], [1,4]]

根据列值过滤行      obj.loc[obj['c']%2==0, :]      

******此处吐个槽,这个切片方法一会儿只能取单列,一会儿只能取连续行,一会儿包含终止项,一会儿不包含,我人都傻了...

******loc/iloc方法接收两个参数,第一个是行,第二个是列,都可切片,也都可指定索引,列参数可以不写,默认取所有列数据

******下面总结下这个花哨的切片!

dataframe有两种索引,行索引/列索引。每种索引包含两类用法,索引名称(对应df.loc)/索引下标对应(df.iloc)

①    df[columnName]                                             取单列数据,只能用列名,不能使用列下标,不能用于取单行

②    df[lineName1: lineName2]                              取连续行数据,使用行名时,包含末尾项,即[start,end]

③    df[lineIndex1: lineIndex2]                                取连续行数据,使用行下标时,不包含末尾项 ,即[start,end)

④    df.loc['line2':'line4']                                          取连续行数据,使用行名时,包含末尾项,即[start,end]      

⑤    df.iloc[2:4]                                                       取连续行数据,使用行下标时,不包含末尾项 ,即[start,end) 

⑥    df.loc[:, columnName1:columnName2]          取连续列,使用列名时,包含末尾项,即[start,end]    

⑦    df.iloc[:, columnIndex1:columnIndex2]           取连续列,使用列下标时,不包含末尾项,即[start,end)

⑧    df.loc[[lineName1, ...], [columnName1, ...]]    使用行名/列名取不连续行列

⑨    df.iloc[[lineIndex1, ...], [columnIndex1, ...]]     使用行下标/列下标取不连续行列

以前用的时候总觉得奇奇怪怪的,花了一下午时间一个一个尝试终于捋顺了,欧耶! (〃 ̄︶ ̄) 人 ( ̄︶ ̄〃)

DataFrame直接切片,即df[args],可用于指定列名取单列数据,可用于指定行名/行下标取连续多行数据

                                                        取单行数据不可直接切片,需使用loc/iloc方法

DataFrame.loc(line, column)    用于按索引名称取行/列数据,此时,首尾项都会被取出

                                                 参数line指定行索引名称,参数2指定列索引名称(可省略,默认选取所有列)。

DataFrame.iloc(line, column)   用于按索引下标取行/列数据,此时,尾项数据不会被取出

                                                 参数line指定行索引下标,参数2指定列索引下标(可省略,默认选取所有列)。

‘捌’ python做数据分析主要干哪些事情

第一、检查数据表
Python中使用shape函数来查看数据表的维度,也就是行数以及列数。你可以使用info函数来查看数据表的整体信息,使用dtype函数来返回数据格式;lsnull是Python中检验空值的函数,可以对整个数据表进行检查,也可以单独对某一行进行空值检查,返回的结构是逻辑值,包含空值返回true,不包含则返回false。
第二、数据清洗
Python可以进行数据清洗,Python中处理空值的方法比较灵活,可以使用Dropna函数用来删除数据表中包含空值的数据,也可以使用fillna函数对空值进行填充;Python中dtype是查看数据格式的函数,与之对应的是astype函数,用来更改数据格式,Rename是更改列名称的函数,drop_plicates函数删除重复值,replace函数实现数据替换。
第三、数据提取
进行数据提取时,主要使用三个函数:loc、iloc以及ix。Loc函数按标签进行提取,iloc按位置进行提取,ix可以同时按照标签和位置进行提取。除了按标签和位置提取数据之外,还可以按照具体的条件进行提取,比如使用loc和isin两个函数配合使用。
第四、数据筛选
Python数据分析还可以进行数据筛选,Python中使用loc函数配合筛选条件来完成筛选功能,配合sum和count函数还能实现Excel中sumif和countif函数的功能。使用的主要函数是groupby和pivot_table;groupby是进行分类汇总的函数,使用方法比较简单,groupby按列名称出现的顺序进行分组。

‘玖’ Panadas 中利用DataFrame对象的.loc[,]、.iloc[,]方法抽取数据

pandas的DataFrame对象,本质上是 二维矩阵 ,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的 名称 。这样内部数据抽取既可以用“ 行列名称(对应.loc[]方法) ”,也可以用“矩阵下标( 对应.iloc[]方法 )”两种方式进行。
下面具体说明:
(以下程序均在Jupyter notebook中进行,部分语句的print()函数省略)
首先生成一个DataFrame对象:

DataFrame对象生成时除了必须指定data参数外,用户还可以指定两个参数columns(列名)和index(行名,注意这里的index不仅可以是数字,也可以是用户指定的任何数据类型,如字母), 如果不指定,则行列名默认都采用0、1、2……
下图说明了前面的情况:

.loc[行标签名/[行标签名list],列标签名/[列标签名list]],即有两个输入参数,第一个指定行名,第二个指定列名。当只有一个参数时,默认是行名(即抽取整行),所有列都选中。

.loc[行位置/[行位置list],列位置/[列位置list]],也有两个输入参数,第一个指定行位置,第二个指定列位置。当只有一个参数时,默认是行位置(即抽取整行),所有列都选中。

上述.loc[]和.iloc[]都只接收了1个参数“语文”或者“0”,因此默认都表示行信息,而列则全部被选中,即抽取'语文'这整一行数据。','表示将两个参数隔开(如果有两个参数的话),':'这里表示选择中所有列。当只有一个输入参数时,python默认','和':'既可写上也可省略。注意:参数['语文']或[0]中只有一个对象时(即只有一行),[]也可以省略,如果有多个对象(即多行)则必须加上[]。此外还需注意,加上[]表示抽取的结果无论是一个数据,一行数据,还是一列数据,他都是DataFrame对象;不加[]时,如果选中的是一行或者一列数据,则是Series对象,如果是一个单独的数据,则是该数据本身的类型。

例2和例1唯一的差别是,第一个参数指定了多行一起输出,此时必须用[]将各行名或者下标括起来,否则出错。后面的','和':'同例1,可省略。注意:原始数据的行顺序是:语文、数学、英语、政治,这里的提取顺序是['英语','语文','政治'],而输出也是'英语','语文','政治',可见输出顺序和参数指定顺序是一致的,而非按原始顺序输出。

例3依然是接受1个参数,列参数没有,后面的','和':'同例1,可省略。连续参数用‘start:end’的方式指定行范围。注意:这里不能用[]将其括起来,否则出错。此外用行列名连续取值时,比如['语文':'政治']会把'政治'所在行也取出来,而利用矩阵下标时,0:3只取0,1,2对应的三行,最后一行不会取出;但是如果行列标签名本身就是整数0,1,2……,而不是文字或者其他类型,那么在使用连续行列标签名取数据时,最后一行或者列是不会被取出的。

抽取整列的方式跟抽取整行在参数设置上完全一样。.loc[]和.iloc[]两个方法默认列为第二个参数, 因此抽取整列时,都必须带上':,'作为区分前面行参数的‘分隔符’,否则出错

同时抽取分部行和列的情况,就是把上述单独抽取行和列的方式合并起来用。抽取整个DataFrame对象则是.loc[:,:]或.iloc[:,:],虽然这么做没啥意义。

(1)DataFrame对象的.loc[,]和.iloc[,]方法用于抽取数据,.loc[,]用行列的标签名作为参数,.iloc[,]用二维矩阵元素的网格下标作为参数。
(2)两个方法都接受两个参数,第一个是“行标签”或者“矩阵行号”,第二个是“列标签”或者“矩阵列号”。
(3)两种方法当只指定一个输入参数时,都默是跟“行”相关,而“列”则全部被选中。如何行和列都需要指定时,中间用“逗号,”隔开,这非常重要,否则出错。
(4)当需要选中所有行的某几列时,行参数可以省略,列参数需要指定,此时列参数前面必须带上“,:”,形如.loc[:,列参数],.iloc[:,列参数]。
(5).loc[,]和.iloc[,]设置了一个还是两个输入参数,关键看有没有“,”将两个参数分开,且要区分逗号是一个参数的内部逗号,还有用于分隔行列参数的逗号。
(6)对于两个参数的概念区分,.loc['语文','数学']这表示输入了两个参数,行参数是‘语文’,列参数是‘数学’,对于上面的表格而言这是错的,因为没有叫‘数学’的列,应写为[['语文','数学']],即‘数学’也是行参数的一部分,['语文','数学']整体作为一个行参数,这里的逗号不是用以分隔行和列,仅仅是行list里面的逗号。[['语文','数学']]=[['语文','数学'],]=[['语文','数学'],:],都表示只有一个行参数,列全部选中。

‘拾’ python:pandas之DataFrame取行列(df.loc(),df.iloc())以及索引

1、pandas排序,并取前N列数据

2、取行、取列DataFrame.loc,DataFrame.iloc
-取行DataFrame.loc,DataFrame.iloc

阅读全文

与pythoniloc取数据相关的资料

热点内容
数控三通编程 浏览:298
linux多终端 浏览:811
法律写作pdf 浏览:144
国货哪个品牌最好app 浏览:951
看哪个app给钱最多 浏览:178
编程靠经验吗 浏览:759
c教程pdf下载地址 浏览:573
制作视频哪个app有瘦脸功能 浏览:649
linux查看线程内存 浏览:509
命令行签名apk 浏览:92
网页照片旋转源码 浏览:842
QQ会员头像源码 浏览:263
内核命令行 浏览:324
脚本提取源码器 浏览:930
smo源码 浏览:877
为什么要搭建单独服务器 浏览:480
编译器有什么控制 浏览:893
希尔伯特pdf 浏览:645
php数组全数字 浏览:647
解密塔罗牌小程序源码 浏览:862