由于互联网的快速发展,网络上存储了越来越多的数据信息。各大公司通过对这些数据进行分析,可以得到一些有助于决策的信息。
比如通过对某些用户的淘宝浏览记录数据进行分析,可以发现这些客户的潜在消费点,通过分类定点投放广告,增加商品的销售。
再比如信贷领域,可以通过分析申请人的征信数据,建模计算出申请人逾期的可能性大小,决定是否放贷,从而提高公司资金的使用价值。
在数据分析越来越热门的今天,学会数据分析,就是你升职加薪的重要砝码。
本文是数据分析的第二课,教大家如何在python中进行数据选择。
本文目录
注意:本文沿用数据分析第一课【Python数据分析—数据建立】里的数据框date_frame:
1 选择数据框中的某一列
选择数据框的某一列有四种方法。
第一种方法:数据框的名字.列名。
第二种方法:数据框的名字['列名']。
第三种方法:数据框的名字.iloc[:, 列下标],假设要选第3列,它对应的下标为2,两者是减一的关系。
第四种方法:数据框的名字.loc[:, ['列名']]
如果我需要选择date_frame数据框中的name列(第二列),可在jupyter中运行如下语句:
date_frame.name #方法一
date_frame['name'] #方法二
date_frame.iloc[:, 1] #方法三
date_frame.loc[:, ['name']] #方法四
前三种方法得到结果如下:
第四种方法得到结果如下:
注意:前三种方法得到的数据类型是Series,第四种方法得到数据类型是DataFrame。
2 选择数据框中的某几列
如果需要选择数据框中的多列,可以采用如下三种方法:
第一种方法:数据框的名字[['列名1','列名2',....,'列名n']]。
第二种方法:数据框的名字.loc[:, ['列名1','列名2',....,'列名n']]。
第三种方法:数据框的名字.iloc[:, 起始列下标:终点列下标加一]。
如果我需要选择date_frame数据框中的name列和height列,可在jupyter中运行如下语句:
date_frame[['height','name']] #方法一
date_frame.loc[:, ['height','name']] #方法二
date_frame.iloc[:, [1,4]] #方法三
前两种方法得到的结果如下:
可以发现前两种方法选择某些列,可以不按原数据框的顺序进行筛选,可以自定义顺序。
第三种方法得到的结果如下:
注意:在python中对应的下标和当前位置是减一的关系,且date_frame.iloc[:, 1:3]中的1:3取不到下标3,是含头不含尾的。
3 选择数据框中的某一行
如果需要选择数据框中的某一行,可以采用如下三种方法:
第一种方法:数据框的名字[行下标:行下标加一]。
第二种方法:数据框的名字.loc[行下标, :]。
第三种方法:数据框的名字.iloc[行下标, :]。
如果我需要选择date_frame数据框中第一行(对应行下标为0),可在python中输入如下代码:
date_frame[0:1] #第一种方法
date_frame.loc[1,:] #第二种方法
date_frame.iloc[1,:] #第三种方法
第一种方法得到的是一个数据框:
后两种方法得到的是一个Series,具体结果如下:
4 选择数据框中的某几行
如果需要选择数据框中的某几行,可以采用如下三种方法:
第一种方法:数据框的名字[起始行下标:终点行下标加一]。
第二种方法:数据框的名字.iloc[起始行下标:终点行下标加一, :]。
第三种方法:数据框的名字.loc[起始行下标:终点行下标, :]。
如果我需要选择date_frame数据框中第一行到第二行的数据(对应行下标为0:1),可在python中输入如下代码:
date_frame[0:2] #第一种方法
date_frame.iloc[0:2,:] #第二种方法
date_frame.loc[0:1,:] #第三种方法
三种方法得到的结果如下:
需要注意的是第三种方法选行下标是含头含尾的,这个可以自己在电脑中运行一下代码感受一下。
5 选择一个子数据框
我们之前单独选择了某些行和某些列,如果我们想选行下标为1和2,列下标也为1和2 的子数据框(图中绿色部分),我们该怎么办?
可以把选择行数据框和列数据框的代码叠加(不分先后顺序),进行选择。
比如采用如下代码:
date_frame[1:3][['name','gender']]
得到结果如下:
6 选择带条件的数据框
假设我们想选择date_frame中性别是男性的子数据框,我们可以在jupyter中输入如下代码:
date_frame[date_frame.gender=='男']
得到结果如下:
假设我们想选择date_frame中年龄大于17岁且身高高于170的学生信息,我们可以在jupyter中输入如下代码:
date_frame[(date_frame.height>1.7)&(date_frame.age>17)]
得到结果如下:
至此,在python中进行数据选择的基本操作已经完成啦,大家可以动手练习一下,思考一下还有没有别的数据选择的更好方法