pandas中的iloc,python中iloc函数

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: