pandas中的iloc,python中iloc函数
Pandas的DataFrame对象本质上是一个二维矩阵,与常规的二维矩阵不同,前者额外指定了每一行每一列的名称。这样,可以通过两种方式进行内部数据提取:“列名(对应于。loc[]方法)”或“矩阵下标(对应于。iloc[]方法)”。
以下详细信息:
(以下程序均在Jupyter notebook中执行,省略部分语句的print()函数)
教师首先成为DataFrame对象:
进口熊猫作为pd
score=[[34,67,87],[68,98,58],[75,73,86],[94,59,81]]
Name=[rdld , wwdxf ,醉芹菜]
课程=[语文,数学,英语,政治]
My1=pd.dataframe (data=score,columns=name,index=course) #指定行名(index)和列名(columns)
打印(我的数据1)
My2=pd.dataframe (score) #未指定列名,默认使用0,1,2.
打印(我的数据2)
#指定行和列的名称
芹菜被rdld wwdxf陶醉
中文34 67 87
数学
英语75 73 86
政治94 59 81
#使用默认的行和列名。
0 2(默认列名)
0 34 67 87
1 68 98 58
2 75 73 86
3 94 59 81
除了data参数,用户还可以在生成DataFrame对象时指定两个参数,columns(列名)和index(行名)。注意,这里的索引不仅可以是数字,也可以是用户指定的任何数据类型,比如字母。如果未指定,默认情况下,行和列的名称都是0、1、2 …。
下图说明了前一种情况:
的。loc[]和。DataFrame对象的iloc[]方法都可以用于提取数据。不同的是:loc[]:是位置,参数是列(列名)和索引(行名)。iloc[]:是索引位置,以二维矩阵的位置索引(即0,1,2 …)为参数。loc[]语法。loc[row tag name/[row tag name list],column tag name/[column tag name list]],即有两个输入参数,第一个指定行名,第二个指定列名。当只有一个参数时,默认值是行名(即提取整行),并且选择所有列。iloc[]语法。loc[row position/[row position list],column position/[column position list]]也有两个输入参数,第一个指定行位置,第二个指定列位置。当只有一个参数时,默认为行位置(即提取整行),并选择所有列。
1.提取1行数据。
#下面,使用。loc[]提取一行名为“language”的数据(包括所有列)
My1.loc [语言]
My1.loc [语言,]
My1.loc [语言,]
Mydata1.loc[[ [language],]
Mydata1.loc[[ [language],]
#以下用途。iloc[]提取1行名为“language”的数据(包括所有列)
mydata1.iloc[0]
mydata1.iloc[0,]
mydata1.iloc[0,]
mydata1.iloc[[0],]
mydata1.iloc[[0],]
#输出模式1(第一个参数没有[],是一个Series对象):
rdld 34
wwdxf 67
醉芹菜87
名称:语言,数据类型:int64
#输出模式2(第一个参数有[],是DataFrame对象):
芹菜被rdld wwdxf陶醉
中文34 67 87
名称:语言,数据类型:int64
以上。loc[]和。iloc[]都只接收一个参数“language”或“0”,所以默认情况下都表示行信息,所有列都被选中,即提取“language”的整行数据。表示分隔两个参数(如果有两个参数),:这里表示选择中的所有列。当只有一个输入参数时,python默认为,和:,可以写也可以省略。注意:当参数[language]或[0]中只有一个对象(即只有一行)时,[]也可以省略。如果有多个对象(即多行),必须添加[]。另外需要注意的是,加[]表示提取的结果,无论是一个数据、一行数据还是一列数据,都是DataFrame对象;不加[]时,如果选中一行或一列数据,则为系列对象;如果是单个数据,就是数据本身的类型。
2.指定行名以提取任意数量的数据行
#指定多行名称提取
Mydata1.loc[[ [英语,中文,政治],]
芹菜被rdld wwdxf陶醉
英语75 73 86
中文34 67 87
政治94 59 81
mydata1.iloc[[1,0],]
芹菜被rdld wwdxf陶醉
数学
中文34 67 87
示例2和示例1的唯一区别是第一个参数指定多行一起输出。此时,每行的名称或下标必须用[]括起来,否则会出错。下面的,和:与例1相同,可以省略。注:原始数据的排序为:语文、数学、英语、政治。这里提取顺序是[英文,中文,政治],输出也是英文,中文,政治。可以看出,输出顺序和参数指定顺序是一致的,而不是原来的顺序。
3.提取任意数量的连续数据行
My1.loc [language: English ,] #连续提取语言到英语的所有行。
芹菜被rdld wwdxf陶醉
中文34 67 87
数学
英语75 73 86
My1.loc [:English ,] #连续提取第一行到英文的所有行。
芹菜被rdld wwdxf陶醉
中文34 67 87
数学
英语75 73 86
My1.iloc [0: 3,] #连续提取1~3行
芹菜被rdld wwdxf陶醉
中文34 67 87
数学
英语75 73 86
my1 . iloc[1:]#连续提取第二行的最后一行
芹菜被rdld wwdxf陶醉
数学
英语75 73 86
政治94 59 81
示例3仍然接受1个参数,但是没有列参数。下面的,和:与例1相同,可以省略。参数以“start:end”的形式连续指定行的范围。注意:这里不能用[]括起来,否则会出错。当连续取外部行名时,如[中文:政治],将取出政治所在的行,而使用矩阵下标时,0:3只取0、1、2对应的三行,最后一行不取出;然而,如果行和列标签名称本身是整数0,1,2.而不是单词或其他类型,当使用连续的行和列标签名称来提取数据时,最后一行或列不会被取出。
4.提取“列”的各种情况
My1.loc [:[wwdxf]] #所有行和wwdxf列。当只有一列时,内部[]也可以省略。
wwdxf
语言67
数学98
英语73
政治59
My1.loc [:[rdld , wwdxf]] #所有行,两列rdld和wwdxf
rdld wwdxf
中文34 67
数学
英语75
政治94 59
My1.iloc [:[1,2]] #所有行、列2和列3
芹菜被wwdxf陶醉
语言67 87
数学98 58
英语73
政治59 81
My1.loc [: rdld:] #从rdld列的开头到最后一列连续提取。
芹菜被rdld wwdxf陶醉
中文34 67 87
数学
英语75 73 86
政治94 59 81
My1.iloc [:3] #从第1列到第3列开始连续提取。
芹菜被rdld wwdxf陶醉
中文34 67 87
数学
英语75 73 86
政治94 59 81
提取整列的方法和参数设置中提取整行的方法完全一样。的默认列。loc[]和。iloc[] methods是第二个参数,所以在提取整列时,必须以:作为分隔符来区分前面的行参数,否则会得到一个错误。
5.同时提取指定行和列的相应数据。
My1.loc [language , rdld] #输入两个参数,输出语言行rdld列为一段数据。
34
#没有[]的时候,单号就是这种类型。
Mydata1.loc[[ [language ],[rdld]] #输出语言行rdld列,即一段数据。
rdld
语言34
# With [],输出仍然是DataFrame对象。
Mydata1.iloc[1,2] #第2行第3列中的数据,单一数据
58
#注意不带[]的输出类型。
mydata1.iloc[[1],[2]]
喝醉的芹菜
数学58
#注意带有[]的输出类型
Mydata1.loc[[ [language , mathematics ],[rdld]] #输出语言数学行和rdld列的数据。
rdld
语言34
数学68
My1.iloc [1:[0,2]] #输出第二行到最后一行的数据,第一行和第三行对应。
芹菜因rdld中毒
数学
英语75
政治94 81
在同时提取部分行和列的情况下,将上述分别提取行和列的方法结合起来。整个DataFrame对象被提取为。loc[:]或。iloc[:],虽然这样做没有意义。
总结:
(1).loc[,]和。1)DataFrame对象的iloc[,]方法用于提取数据。loc[,]将行和列的标记名作为参数,而。iloc[,]以二维矩阵元素的网格下标作为参数。
(2)两种方法都接受两个参数,第一个是行标签或矩阵行号,第二个是列标签或矩阵列号。
(3)当两种方法中只指定了一个输入参数时,两种方法都与“行”相关,所有“列”都被选中。当行和列都需要指定时,用“逗号”分隔是非常重要的,否则会出错。
(4)当需要选择所有行的某些列时,可以省略行参数,需要指定列参数。此时,列参数必须以“,”的形式放在前面。loc[:列参数],iloc[:列参数]。
(5)是否。loc [,]和。iloc[,]设置一个或两个输入参数取决于是否用“,”分隔两个参数,而逗号是一个参数的内部逗号,逗号用来分隔行和列参数。
(6)对于两个参数之间的概念区别。loc[ language , mathematics]表示输入两个参数,行参数是 language ,列参数是 mathematics 。这对于上表来说是错误的,因为没有一栏叫‘数学’,应该写成[[语言,数学]]。[[语言,数学]]=[语言,数学],]=[[语言,数学],],都表示只有一个行参数,所有列都被选中。
关于如何使用?loc[]和。熊猫数据框对象的iloc[]方法。了解更多关于熊猫提取数据的信息。loc[]和。iloc[],请搜索脚本之家之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持剧本之家!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。