Python数据分析从入门到精通
上QQ阅读APP看书,第一时间看更新

3.5 数据抽取

数据分析过程中,并不是所有的数据都是我们想要的,此时可以抽取部分数据,主要使用DataFrame对象的loc属性和iloc属性,示意图如图3.27所示。

图3.27 loc属性和iloc属性示意图

对象的loc属性和iloc属性都可以抽取数据,区别如下。

 loc属性:以列名(columns)和行名(index)作为参数,当只有一个参数时,默认是行名,即抽取整行数据,包括所有列,如df.loc['A']。

 iloc属性:以行和列位置索引(即0,1,2,…)作为参数,0表示第1行,1表示第2行,以此类推。当只有一个参数时,默认是行索引,即抽取整行数据,包括所有列。如抽取第1行数据,df.iloc[0]。

3.5.1 抽取一行数据

抽取一行数据主要使用loc属性。

【示例19】 抽取一行考试成绩数据。(示例位置:资源包\MR\Code\03\19)

抽取一行名为“明日”的考试成绩数据(包括所有列),程序代码如下:

运行程序,输出结果如图3.28所示。

使用iloc属性抽取第1行数据,指定行索引即可,如df.iloc[0],输出结果同图3.28一样。

图3.28 抽取一行数据

3.5.2 抽取多行数据

1.抽取任意多行数据

通过loc属性和iloc属性指定行名和行索引即可实现抽取任意多行数据。

【示例20】 抽取多行考试成绩数据。(示例位置:资源包\MR\Code\03\20)

抽取行名为“明日”和“高袁圆”(即第1行和第3行数据)的考试成绩数据,可以使用loc属性,也可以使用iloc属性,其输出结果都是一样的,主要代码如下:

01 df1=df.loc[['明日','高袁圆']]
02 df1=df.iloc[[0,2]]

运行程序,输出结果如图3.29所示。

图3.29 抽取多行数据

2.抽取连续任意多行数据

在loc属性和iloc属性中合理地使用冒号(:),即可抽取连续任意多行数据。

【示例21】 抽取连续几个学生的考试成绩。(示例位置:资源包\MR\Code\03\21)

抽取连续几个学生的考试成绩,主要代码如下:

运行程序,控制台输出结果如图3.30所示。

图3.30 抽取连续任意多行数据

3.5.3 抽取指定列数据

抽取指定列数据,可以直接使用列名,也可以使用loc属性和iloc属性。

1.直接使用列名

【示例22】 抽取“语文”和“数学”的考试成绩。(示例位置:资源包\MR\Code\03\22)

抽取列名为“语文”和“数学”的考试成绩数据,程序代码如下:

运行程序,输出结果如图3.31所示。

2.使用loc属性和iloc属性

前面介绍loc属性和iloc属性均有两个参数:第一个参数代表行;第二个参数代表列。那么这里抽取指定列数据时,行参数不能省略。

【示例23】 抽取指定学科的考试成绩。(示例位置:资源包\MR\Code\03\23)

下面使用loc属性和iloc属性抽取指定列数据,主要代码如下:

运行程序,控制台输出结果如图3.32所示。

图3.31 直接使用列名

图3.32 loc属性和iloc属性

3.5.4 抽取指定行、列数据

抽取指定行、列数据主要使用loc属性和iloc属性,这两个方法的两个参数都指定就可以实现指定行、列数据的抽取。

【示例24】 抽取指定学科和指定学生的考试成绩。(示例位置:资源包\MR\Code\03\24)

使用loc属性和iloc属性抽取指定行、列数据,程序代码如下:

运行程序,控制台输出结果如图3.33所示。

图3.33 抽取指定行、列数据

在上述结果中,第一个输出结果是一个数,不是数据,是由于“df.loc['七月流火','英语']”没有使用方括号[],导致输出的数据不是DataFrame类型。

3.5.5 按指定条件抽取数据

DataFrame对象实现数据查询有以下3种方式。

 取其中的一个元素.iat[x,x]。

 基于位置的查询,如.iloc[]、iloc[2,1]。

 基于行、列名称的查询,如.loc[x]。

【示例25】 抽取指定学科和指定分数的数据。(示例位置:资源包\MR\Code\03\25)

抽取语文成绩大于105,数学成绩大于88的数据,程序代码如下:

运行程序,输出结果如图3.34所示。

图3.34 按指定条件抽取数据