在对海量数据进行分析的过程中,可能需要对数据进行子查询的操作。
比如要查询所有借钱男性中年龄最大的人的信息,首先要查出所有男性的信息,再查在这些人中间年龄最大的人的信息,这就是子查询。
这在数据分析过程中必不可少,本节教大家如何在python中对数据框进行一些子查询的操作。
本文目录
注意:本文沿用数据分析第一课【Python数据分析—数据建立】里的数据框date_frame:
1 查询最大年龄的学生姓名
如果我们想查询最大年龄的学生姓名,该怎么办?
可以先查询所有学生中的最大年龄,再去查询该年龄对应的学生姓名。
查询所有学生中的最大年龄,代码如下:
date_frame.age.max()
得到结果如下:
.max()表示查找age这一列的最大值。
如果想要得到该年龄对应学生的所有信息,可以输入如下语句:
date_frame[date_frame.age == date_frame.age.max()]
得到结果如下:
如果只想看最大年龄对应的学生姓名,可以输入如下语句:
date_frame[date_frame.age == date_frame.age.max()].name
得到结果如下:
2 查询最大年龄的男生姓名
如果我们把条件稍加复杂,想查询出最大年龄的男生姓名,该怎么办?
可以先查询所有男生中的最大年龄,再去查询该年龄对应的男生姓名。
首先查询所有男生中的最大年龄,把它赋值给一个变量,具体语句如下:
male_max_age = date_frame[date_frame.gender == '男']['age'].max()
得到结果如下:
18
如果想要得到该年龄对应男生的所有信息,可以输入如下语句:
date_frame[(date_frame.gender == '男') & (date_frame.age == male_max_age)]
得到结果如下:
如果只想看最大年龄对应男生的姓名,可以输入如下语句:
date_frame[(date_frame.gender == '男') & (date_frame.age == male_max_age)].name
得到结果如下:
3 查询身高前几的学生信息
如果我们想查询身高前几的学生信息。
可以先对学生身高进行去重、排序,再用head函数找出排名前几的学生身高,最后用isin函数查找这些学生的信息。
假设我要找身高排名前三的学生信息。
可以先找到排名前三的身高,具体语句如下:
maxHeight = date_frame.height.drop_duplicates().sort_values(ascending = False).head(3)
得到结果如下:
其中,.drop_duplicates()表示对height列去重。
.sort_values(ascending = False)表示对去重后的height列进行降序排列。
.head(3)表示取前三个height值。
然后再找到身高前三的学生信息,具体语句如下:
date_frame[date_frame.height.isin(maxHeight)]
得到结果如下:
至此,在python中对数据框进行子查询的操作已介绍完毕,大家可以动手练习一下,思考一下还可不可以对数据框进行别的子查询操作
。