前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据分析—子查询

Python数据分析—子查询

作者头像
阿黎逸阳
发布2020-12-11 10:55:21
4590
发布2020-12-11 10:55:21
举报

在对海量数据进行分析的过程中,可能需要对数据进行子查询的操作。

比如要查询所有借钱男性中年龄最大的人的信息,首先要查出所有男性的信息,再查在这些人中间年龄最大的人的信息,这就是子查询。

这在数据分析过程中必不可少,本节教大家如何在python中对数据框进行一些子查询的操作。

本文目录

  1. 查询最大年龄的学生姓名
  2. 查询最大年龄的男生姓名
  3. 查询身高前几的学生信息

注意:本文沿用数据分析第一课【Python数据分析—数据建立】里的数据框date_frame:

1 查询最大年龄的学生姓名

如果我们想查询最大年龄的学生姓名,该怎么办?

可以先查询所有学生中的最大年龄,再去查询该年龄对应的学生姓名。

查询所有学生中的最大年龄,代码如下:

代码语言:javascript
复制
date_frame.age.max()

得到结果如下:

.max()表示查找age这一列的最大值。

如果想要得到该年龄对应学生的所有信息,可以输入如下语句:

代码语言:javascript
复制
date_frame[date_frame.age == date_frame.age.max()]

得到结果如下:

如果只想看最大年龄对应的学生姓名,可以输入如下语句:

代码语言:javascript
复制
date_frame[date_frame.age == date_frame.age.max()].name

得到结果如下:

2 查询最大年龄的男生姓名

如果我们把条件稍加复杂,想查询出最大年龄的男生姓名,该怎么办?

可以先查询所有男生中的最大年龄,再去查询该年龄对应的男生姓名。

首先查询所有男生中的最大年龄,把它赋值给一个变量,具体语句如下:

代码语言:javascript
复制
male_max_age = date_frame[date_frame.gender == '男']['age'].max()

得到结果如下:

18

如果想要得到该年龄对应男生的所有信息,可以输入如下语句:

代码语言:javascript
复制
date_frame[(date_frame.gender == '男') & (date_frame.age == male_max_age)]

得到结果如下:

如果只想看最大年龄对应男生的姓名,可以输入如下语句:

代码语言:javascript
复制
date_frame[(date_frame.gender == '男') & (date_frame.age == male_max_age)].name

得到结果如下:

3 查询身高前几的学生信息

如果我们想查询身高前几的学生信息。

可以先对学生身高进行去重、排序,再用head函数找出排名前几的学生身高,最后用isin函数查找这些学生的信息。

假设我要找身高排名前三的学生信息。

可以先找到排名前三的身高,具体语句如下:

代码语言:javascript
复制
maxHeight = date_frame.height.drop_duplicates().sort_values(ascending = False).head(3)

得到结果如下:

其中,.drop_duplicates()表示对height列去重。

.sort_values(ascending = False)表示对去重后的height列进行降序排列。

.head(3)表示取前三个height值。

然后再找到身高前三的学生信息,具体语句如下:

代码语言:javascript
复制
date_frame[date_frame.height.isin(maxHeight)]

得到结果如下:

至此,在python中对数据框进行子查询的操作已介绍完毕,大家可以动手练习一下,思考一下还可不可以对数据框进行别的子查询操作

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档