python 数据分析面试题:求分组排第n名的记录数据

这篇具有很好参考价值的文章主要介绍了python 数据分析面试题:求分组排第n名的记录数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

近期面试遇到一个面试题,分享给大家。
文中会提供详细的解题思路以及问题延伸

一、面试题

  • 面试题:输出各学科总分第一名的学员姓名、年龄、分数
  • 数据
class_a= {'name': ['学员1', '学员2', '学员3', '学员4','学员5'],
                   'age': [23, 24, 26, 27,25],
                   'course_subject': ['数学', '英语', '语文', '语文','数学'],
                   'score': [100,50,40,30,99]}

class_b= {'name': ['学员6', '学员7', '学员8', '学员9'],
                   'age': [23, 24, 26, 27],
                   'course_subject': ['数学', '数学', '语文', '英语'],
                   'score': [18,99,77,30]}

二、解题过程

  • 字典转变为DataFrame,合并,重置索引
df_a = pd.DataFrame(class_a)
df_b = pd.DataFrame(class_b)
df = pd.concat([df_a,df_b])
df.reset_index(drop=True,inplace=True)

python 数据分析面试题:求分组排第n名的记录数据,python,数据分析,pandas,数据挖掘

  • groupby分组 + labmda函数 得出结果

df.idxmax() :该函数作用是返回每一列中最大值的索引(所以为什么前文的数据处理中需要重置索引)。

df.groupby('course_subject').apply(lambda x: x.loc[x['score'].idxmax(), ['name', 'age', 'score']])

python 数据分析面试题:求分组排第n名的记录数据,python,数据分析,pandas,数据挖掘

延伸:df.idxmin() 取最小

df.nlargest():返回指定列排序后的前 N 个最大值所对应的行。

df.groupby('course_subject').apply(lambda x: x.nlargest(1, 'score'))[['name','age']]

python 数据分析面试题:求分组排第n名的记录数据,python,数据分析,pandas,数据挖掘

注意⚠️:遇到相同值的情况,返回结果可能与预期不一致,如原数据中,数学成绩=99的有两位学员,此时当n=2时,只返回其中一位学员的记录;n=3才会返回两位学员的记录数。
所以,如果某一课程中,有两位学员都获得100分,那么此方法并不能解决该面试题。
python 数据分析面试题:求分组排第n名的记录数据,python,数据分析,pandas,数据挖掘(n=2)

df.rank():排名函数

df.groupby('course_subject').apply(
    lambda x:x.loc[
        x['score'].rank(ascending=False,method='min')==1,
        ['name', 'age', 'score']
    ]
)

python 数据分析面试题:求分组排第n名的记录数据,python,数据分析,pandas,数据挖掘
说明method='min'主要是考虑遇到同值的情形,详解参考:python Pandas.rank() 排名函数详解

延伸:该方法可以延伸至求分组排名、分组排第n名的记录数据等问题,是比较完善的答案。

当然,还有其他解决方法,欢迎大家留言补充~文章来源地址https://www.toymoban.com/news/detail-624775.html

到了这里,关于python 数据分析面试题:求分组排第n名的记录数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据分析面试题

    你是如何理解数据分析的?流程如何? 数据分析是机遇对业务的理解,发现业务中的问题或者是潜在的增长点,形成分析思路,并且利用数据分析工具进行分析,给出相应的结论和解决方案,并协调各方推动方案落地,解决问题,最后回到业务中去形成完整的闭环。 数据分

    2024年02月05日
    浏览(34)
  • 数据分析之面试题目汇总

    数据清洗是指在数据分析过程中对数据进行检查、处理和纠正的过程;是数据预处理的一步,用于处理数据集中的无效、错误、缺失或冗余数据 常见的清洗方法包括:处理缺失值、处理异常值、去除重复值、统一数据格式等。 处理缺失值:可以删除包含缺失值的数据行,或

    2024年02月09日
    浏览(43)
  • 面试|兴盛优选数据分析岗

    1.离职原因、离职时间点 2.上一份工作所在的部门、小组、小组人员数、小组内的分工 3.个人负责的目标,具体是哪方面的成本 4.为了降低专员成本,做了哪些方面的工作 偏向于机制、分析方法、思维,当下主要是对于部分高收入专员收入不合理的情况进行分析,可能是作弊

    2023年04月26日
    浏览(38)
  • 数据分析面试题(11~20)

    ①职责是收集、处理和分析大量的数据,并从中提取出有用的信息。 ②工作范围包括数据清洗、数据建模、数据可视化等。 数据收集和清洗:收集各种来源的数据,并清洗、转换为可分析的格式。 数据分析和建模:应用统计学、机器学习和数据挖掘技术对数据进行分析和建

    2024年03月26日
    浏览(50)
  • TCP数据报结构分析(面试重点)

    在传输层中有UDP和TCP两个重要的协议,下面将针对TCP数据报的结构进行分析 关于UDP数据报的结构分析推荐看UDP数据报结构分析(面试重点)         源端口表示发送数据时,发送方的端口号,由于占16位2个字节,所以取值范围是0-65535,所以一个合法的端口号,有效范围就是

    2024年02月10日
    浏览(39)
  • UDP数据报结构分析(面试重点)

            在传输层中有UDP和TCP两个重要的协议,下面将针对UDP数据报的结构进行分析         UDP报头有4个属性,分别是源端口,目的端口,UDP报文长度,校验和,它们都占16位2个字节,所以取值范围是0-65535                 源端口表示发送数据时,发送方的端口号,由于占

    2024年02月12日
    浏览(37)
  • 【数据分析师求职面试指南】实战技能部分

    内容整理自《拿下offer 数据分析师求职面试指南》—徐粼著 第五章数据分析师实战技能 其他内容: 【数据分析师求职面试指南】必备基础知识整理 【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法 【数据分析师求职面试指南】实战技能部分 基于历史数据和

    2023年04月12日
    浏览(48)
  • 【数据分析面试】10. 计算平均通勤时间(SQL:timestampdiff() 和datediff()区别)

    假设你在Uber工作。 rides 表包含了关于Uber用户在美国各地的行程信息。 编写一个查询,以获取纽约(NY)每位通勤者的平均通勤时间(以分钟为单位),以及纽约所有通勤者的平均通勤时间(以分钟为单位)。 示例: 输入: rides 表 列名 类型 id INTEGER commuter_id INTEGER start_dt

    2024年04月09日
    浏览(89)
  • 【头歌-数据分析与实践-python】数据分析与实践-python——python基础

    注意 : 本文档仅供参考使用,本章节程序绝大多数程序面向对象输出,一旦测试用例改变,会导致无法通过,请悉知 ! ! ! 请勿盲目使用 第1关 字符串常量的输出 第2关 输入及输出 第3关 书写一个完整的Python程序 第1关 关系运算符与单分支选择语句 第2关,3个数按从大到小依

    2024年01月23日
    浏览(49)
  • 【Python数据分析】数据分析之numpy基础

    实验环境:建立在Python3的基础之上 numpy提供了一种数据类型,提供了数据分析的运算基础,安装方式 导入numpy到python项目 本文以案例的方式展示numpy的基本语法,没有介绍语法的细枝末节,笔者认为通过查阅案例就能掌握基本用法。 numpy数组的基本概念 numpy默认所有元素具有

    2024年02月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包