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

news2024/11/16 19:35:04

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

一、面试题

  • 面试题:输出各学科总分第一名的学员姓名、年龄、分数
  • 数据
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)

在这里插入图片描述

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

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

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

在这里插入图片描述

延伸:df.idxmin() 取最小

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

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

在这里插入图片描述

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

df.rank():排名函数

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

在这里插入图片描述
说明method='min'主要是考虑遇到同值的情形,详解参考:python Pandas.rank() 排名函数详解

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

当然,还有其他解决方法,欢迎大家留言补充~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/832049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c高级:day2

1.思维导图 3.递归输出每个数 #include <myhead.h>void func(int num) {if (num/10 0){printf("%d\n", num);}else{func(num/10);printf("%d\n", num%10);} }int main(int argc, char *argv[]) {int num;printf("请输入一个数&#xff1a;&qu…

如何使用 ChatGPT 为 Midjourney 或 DALL-E 等 AI 图片生成提示词

人工智能为创意产业开辟了一个充满可能性的全新世界。人工智能最令人兴奋的应用之一是生成独特且原创的艺术品。Midjourney 和 DALL-E 是人工智能生成艺术的两个突出例子&#xff0c;吸引了艺术家和艺术爱好者的注意。在本文中&#xff0c;我们将探索如何使用 ChatGPT 生成 AI …

关于antDv table组件pagination分页器跳转页数置空(输入框)置空问题

需求开发需要实现antDv table组件pagination分页器跳转页数置空&#xff08;输入框&#xff09;置空 修改这红框内input的值 翻了组件文档发现没有这个组件配置&#xff0c;所以只能用原生操作dom更改值 this.$nextTick(() > {// 改变跳至 几页的值document.getElementsBy…

Web开发介绍以及Java sprint

这里写目录标题 Web开发开发模式 Java sprint引入方式基础语法基础语法输出语句 变量介绍具体演示 数据类型运算符和数据类型转换运算符数据类型转换 函数定义以及调用 js对象array对象&#xff0c;数组&#xff0c;类似于Java的array集合String对象 json对象js自定义对象json介…

微信小程序学习者必用笔记

1、全局配置 1.1 window节点常用配置 1.2 tabBar 注意&#xff1a;它是与 window 和 page 同级的 1.2.1 tabBar的6个组成部分 1.2.2 tabBar的结点配置项 1.2.3 每个tab项的配置选项 1.3 局部配置 2、新建小程序页面 3、常用组件标签 3.1 view&#xff1a;相当于…

sqlyog导出mysql数据字典

1.打开sqlyog执行sql获取字典数据 SELECTt.COLUMN_NAME AS 字段名,t.COLUMN_TYPE AS 数据类型,CASE IFNULL(t.COLUMN_DEFAULT,Null) WHEN THEN 空字符串 WHEN Null THEN NULL ELSE t.COLUMN_DEFAULT END AS 默认值,CASE t.IS_NULLABLE WHEN YES THEN 是 ELSE 否 END AS 是否…

HTML+CSS+JavaScript:全选与反选案例

一、需求 1、单击全选按钮&#xff0c;下面三个复选框自动选中&#xff0c;再次单击全选按钮&#xff0c;下面三个复选框自动取消选中 2、当下面三个复选框全都选中时&#xff0c;全选按钮自动选中&#xff0c;下面三个复选框至少有一个未选中&#xff0c;全选按钮自动取消选…

Docker安装RabbitMQ镜像

步骤1&#xff1a;拉取镜像 docker pull rabbitmq:management 步骤2&#xff1a;运行 docker run -d –-name rabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:mana…

OpenCV中图像变换

一、介绍 transform()&#xff1a;Transposes a matrix. perspectiveTransform()&#xff1a;Performs the perspective matrix transformation of vectors. warpAffine()&#xff1a;Applies an affine transformation to an image. warpPerspective()&#xff1a;Applies a p…

python中等号要空格吗,python中等号和双等号

这篇文章主要介绍了python中等号两边自动添加空格操作&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 学习python时&#xff0c;注释的时候有下划线&#xff0c;波浪线&#x…

react ant icon的简单使用

refer: 快速上手 - Ant Design 1.引入ant npm install antd --save 2.在页面引用&#xff1a; import { StarOutlined } from ant-design/icons; 如果想要引入多个icon&#xff0c;可以这样书写&#xff1a; import { UserOutlined, MailOutlined, PieChartOutlined } fr…

智慧~经典开源项目数字孪生智慧商场——开源工程及源码

深圳南山某商场的工程和源码免费赠送&#xff0c;助您打造智慧商场。立即获取&#xff0c;提升商场管理效能&#xff01; 项目介绍 凤凰商场作为南山地区的繁华商业中心&#xff0c;提供多样化的购物和娱乐体验。通过此项目&#xff0c;凤凰商场将迈向更智能的商业模式。 本项目…

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 Python代码实现

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 1 题目 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、压力等…

Stable Diffusion教程(8) - X/Y/Z 图表使用

1. 介绍 这项功能可以在 文生图/图生图 界面的左下角种 “脚本” 一栏内选择 “X/Y/Z 图表” 以启用。 它创建具有不同参数的图像网格。使用 X 类型和 Y 类型字段选择应由行和列共享的参数&#xff0c;并将这些参数以逗号分隔输入 X 值 / Y 值字段。支持整数、浮点数和范围。…

【辨析】投影到高维空间 VS 嵌入到高维空间

虽然"投影到高维空间"和"嵌入到高维空间"都涉及将数据映射到高维空间&#xff0c;但它们在深度学习和机器学习领域中有着不同的含义和应用。 投影到高维空间&#xff08;Project to High-Dimensional Space&#xff09;&#xff1a; 投影是指将低维空间中…

三种方式创建对象的几种方式及new实例化时做了什么?

创建对象的几种方式 利用对象字面量创建对象 const obj {}2.利用 new Object创建对象 const obj new Object()3.使用 构造函数实例化对象 function Fn(name) {this.name name} const obj new Fn(张三) console.log(obj.name); //张三为什么要用构造函数的形式&#xff1…

基于STM32F103C8T6的温湿度控制系统(从PCB制作到成品展示)

很久就想写一篇入门级的硬件项目流程介绍&#xff0c;最近终于有了机会&#xff0c;接下来会从PCB设计到成品展示&#xff0c;一步一步地记录&#xff0c;如果对你有帮助&#xff0c;那便是最好。大白话记录我的整个开发流程&#xff0c;有点无聊&#xff0c;各位看官多多担待。…

POLARDB -- Ausitndatabases 历年的文章集合

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

模糊照片怎么修复清晰?教你轻松修复照片清晰度

照片记录着我们生活中的美好瞬间&#xff0c;然而&#xff0c;由于拍摄时手抖或对焦不准等原因&#xff0c;我们常常会遇到模糊的照片。你们通常都会怎么处理这些照片呢&#xff1f;是直接删掉吗&#xff1f;其实我们可以不用删掉&#xff0c;只需要使用一些图修复工具来修复这…