本文围绕力扣的Pandas简单题集,解析如何用Pandas完成基础数据处理任务,适合Pandas初学者学习。

题目1:1050. 合作过至少三次的演员和导演

题目描述:

ActorDirector 表:

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| actor_id    | int     |
| director_id | int     |
| timestamp   | int     |
+-------------+---------+
timestamp 是这张表的主键(具有唯一值的列).

编写解决方案找出合作过至少三次的演员和导演的 id 对 (actor_id, director_id)

示例 1:

输入:
ActorDirector 表:
+-------------+-------------+-------------+
| actor_id    | director_id | timestamp   |
+-------------+-------------+-------------+
| 1           | 1           | 0           |
| 1           | 1           | 1           |
| 1           | 1           | 2           |
| 1           | 2           | 3           |
| 1           | 2           | 4           |
| 2           | 1           | 5           |
| 2           | 1           | 6           |
+-------------+-------------+-------------+
输出:
+-------------+-------------+
| actor_id    | director_id |
+-------------+-------------+
| 1           | 1           |
+-------------+-------------+
解释:
唯一的 id 对是 (1, 1),他们恰好合作了 3 次。

解题思路:

方法1:使用 value_counts() 直接统计每对的出现次数。

方法2:按actor_id和director_id分为两组,使用size()计算每组行数,筛选出大于等于3的数据。

题目代码:

方法1:

import pandas as pd
def actors_and_directors(actor_director: pd.DataFrame) -> pd.DataFrame:# 使用value_counts()直接统计counts = actor_director[['actor_id', 'director_id']].value_counts()# 筛选并重置索引result = counts[counts >= 3].reset_index()[['actor_id', 'director_id']]return result

方法2:

import pandas as pd
def actors_and_directors(actor_director: pd.DataFrame) -> pd.DataFrame:# 统计每对演员和导演的合作次数collaboration_counts = actor_director.groupby(['actor_id', 'director_id']).size().reset_index(name='count')# 筛选次数≥3的result = collaboration_counts[collaboration_counts['count'] >= 3]return result[['actor_id', 'director_id']]

题目2:1378. 使用唯一标识码替换员工ID

题目描述:

Employees 表:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| name          | varchar |
+---------------+---------+
在 SQL 中,id 是这张表的主键。
这张表的每一行分别代表了某公司其中一位员工的名字和 ID 。

EmployeeUNI 表:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| unique_id     | int     |
+---------------+---------+
在 SQL 中,(id, unique_id) 是这张表的主键。
这张表的每一行包含了该公司某位员工的 ID 和他的唯一标识码(unique ID)。

展示每位用户的 唯一标识码(unique ID );如果某位员工没有唯一标识码,使用 null 填充即可。

你可以以 任意 顺序返回结果表。

解题思路:

使用merge()方法根据id将数据合并,如果没有对应的数据,则填充为NaN。

题目代码:

import pandas as pddef replace_employee_id(employees: pd.DataFrame, employee_uni: pd.DataFrame) -> pd.DataFrame:#根据id将数据合并,无对应数据则填充为NaNemployee_name_uni = pd.merge(employees, employee_uni, on='id', how='left')return employee_name_uni[['unique_id', 'name']]

题目3:1280. 学生们参加各科测试的次数

题目描述:

学生表: Students

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| student_id    | int     |
| student_name  | varchar |
+---------------+---------+
在 SQL 中,主键为 student_id(学生ID)。
该表内的每一行都记录有学校一名学生的信息。

科目表: Subjects

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| subject_name | varchar |
+--------------+---------+
在 SQL 中,主键为 subject_name(科目名称)。
每一行记录学校的一门科目名称。

考试表: Examinations

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| student_id   | int     |
| subject_name | varchar |
+--------------+---------+
这个表可能包含重复数据(换句话说,在 SQL 中,这个表没有主键)。
学生表里的一个学生修读科目表里的每一门科目。
这张考试表的每一行记录就表示学生表里的某个学生参加了一次科目表里某门科目的测试。

查询出每个学生参加每一门科目测试的次数,结果按 student_id 和 subject_name 排序。

解题思路:

该题目包含多种对dataframe数据的操作,分解为多个问题来解答。

首先按id和科目分组,并计算考试次数,合并dataframe数据,填充缺失值,最后按照升序排序。

题目代码:

import pandas as pddef students_and_examinations(students: pd.DataFrame, subjects: pd.DataFrame,examinations: pd.DataFrame) -> pd.DataFrame:#按id和科目分组,并计算考试次数。grouped = examinations.groupby(['student_id', 'subject_name']).size().reset_index(name='attended_exams')# 获取id和subject的所有组合all_id_subjects = pd.merge(students, subjects, how='cross')# 左连接id_subjects_count = pd.merge(all_id_subjects, grouped, on=['student_id', 'subject_name'], how='left')#缺失值填充id_subjects_count['attended_exams'] = id_subjects_count['attended_exams'].fillna(0).astype(int)#升序排序id_subjects_count.sort_values(['student_id', 'subject_name'], inplace=True)return id_subjects_count[['student_id', 'student_name', 'subject_name', 'attended_exams']]

题目4:570. 至少有5名直接下属的经理

题目描述:

表: Employee

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
| department  | varchar |
| managerId   | int     |
+-------------+---------+
id 是此表的主键(具有唯一值的列)。
该表的每一行表示雇员的名字、他们的部门和他们的经理的id。
如果managerId为空,则该员工没有经理。
没有员工会成为自己的管理者。

编写一个解决方案,找出至少有五个直接下属的经理。

以 任意顺序 返回结果表。

解题思路:

使用groupby()方法按managerid分组,计算每组id数量,即经理的下属数量,然后筛选出数量大于等于5个的数据id,再找到数据id对应的name数据。

题目代码:

import pandas as pd
def find_managers(employee: pd.DataFrame) -> pd.DataFrame:#按managerId分组,计算每组id数量,即下属数量subordinate_count = employee.groupby('managerId')['id'].count()#筛选出下属数量大于等于5的数据managers_with_5_subordinates = subordinate_count[subordinate_count >= 5].index#找出筛选出的id所对应的姓名name数据result = employee[employee['id'].isin(managers_with_5_subordinates)]['name']return result.to_frame(name='name')

题目5:607. 销售员

题目描述:

表: SalesPerson

+-----------------+---------+
| Column Name     | Type    |
+-----------------+---------+
| sales_id        | int     |
| name            | varchar |
| salary          | int     |
| commission_rate | int     |
| hire_date       | date    |
+-----------------+---------+
sales_id 是该表的主键列(具有唯一值的列)。
该表的每一行都显示了销售人员的姓名和 ID ,以及他们的工资、佣金率和雇佣日期。

表: Company

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| com_id      | int     |
| name        | varchar |
| city        | varchar |
+-------------+---------+
com_id 是该表的主键列(具有唯一值的列)。
该表的每一行都表示公司的名称和 ID ,以及公司所在的城市。

表: Orders

+-------------+------+
| Column Name | Type |
+-------------+------+
| order_id    | int  |
| order_date  | date |
| com_id      | int  |
| sales_id    | int  |
| amount      | int  |
+-------------+------+
order_id 是该表的主键列(具有唯一值的列)。
com_id 是 Company 表中 com_id 的外键(reference 列)。
sales_id 是来自销售员表 sales_id 的外键(reference 列)。
该表的每一行包含一个订单的信息。这包括公司的 ID 、销售人员的 ID 、订单日期和支付的金额。

编写解决方案,找出没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。

以 任意顺序 返回结果表。

解题思路:

找到与red有关的订单,根据订单找相关的销售人员,找出不在这些销售人员名单中的其他销售人员。

题目代码:

import pandas as pddef sales_person(sales_person: pd.DataFrame, company: pd.DataFrame, orders: pd.DataFrame) -> pd.DataFrame:#筛选与red有关的订单red_company = company[company['name'] == 'RED']if red_company.empty:return sales_person[['name']]red_orders = orders[orders['com_id'] == red_company['com_id'].iloc[0]]# 找出这些订单对应的销售人员IDred_sales_ids = red_orders['sales_id'].unique()# 找出不在这些销售人员名单中的所有销售人员non_red_sales = sales_person[~sales_person['sales_id'].isin(red_sales_ids)]return non_red_sales[['name']]

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随笔之TDengine基准测试示例

文章目录一、基本信息二、基准测试策略三、基准测试过程1. 模拟高并发写入场景2. 模拟并发查询场景四、基准测试结论一、基本信息 TDengine 版本:3.3.6.13(目前最新版本)服务器配置:16核CPU,32GB内存,高IO…

【IQA技术专题】DISTS代码讲解

本文是对DISTS图像质量评价指标的代码解读,原文解读请看DISTS文章讲解。 本文的代码来源于IQA-Pytorch工程。 1、原文概要 以前的一些IQA方法对于捕捉纹理上的感知一致性有所欠缺,鲁棒性不足。基于此,作者开发了一个能够在图像结构和图像纹…

2024年SEVC SCI2区,一致性虚拟领航者跟踪群集算法GDRRT*-PSO+多无人机路径规划,深度解析+性能实测

目录1.摘要2.算法背景3.GDRRT*-PSO与虚拟领航者跟踪算法4.结果展示5.参考文献6.算法辅导应用定制读者交流1.摘要 随着无人机技术的快速发展及其卓越的运动和机动性能,无人机在社会和军事等诸多领域得到了广泛应用。多无人机协同作业,能够显著提升任务执…

链特异性文库是什么?为什么它在转录组测序中越来越重要?

链特异性文库是什么?为什么它在转录组测序中越来越重要? 在现代分子生物学研究中,RNA测序(RNA-seq) 是一种广泛应用的技术,用于分析基因在不同条件下的表达情况。而在RNA-seq的众多技术细节中,有…

ClickHouse vs PostgreSQL:数据分析领域的王者之争,谁更胜一筹?

文章概要 作为一名数据架构师,我经常被问到一个问题:在众多数据库选择中,ClickHouse和PostgreSQL哪一个更适合我的项目?本文将深入探讨这两种数据库系统的核心差异、性能对比、适用场景以及各自的优缺点,帮助您在技术选…

面向对象系统的单元测试层次

面向对象系统的单元测试层次面向对象(Object-Oriented, OO)编程范式引入了封装、继承和多态等核心概念,这使得传统的、基于函数的单元测试方法不再充分。面向对象系统的单元测试必须适应其独特的结构和行为特性,从单一方法扩展到类…

如何用USRP捕获手机信号波形(上)系统及知识准备

目录: 如何用USRP捕获手机信号波形(上)系统及知识准备 如何用USRP捕获手机信号波形(中)手机/基站通信 如何用USRP捕获手机信号波形(下)协议分析 一、手机通信参数获取 首先用Cellular-z网络…

C语言-数组:数组(定义、初始化、元素的访问、遍历)内存和内存地址、数组的查找算法和排序算法;

本章概述思维导图:C语言数组在C语言中,数组是一种固定大小的、相同类型元素的有序集合,通过索引(下标)访问。数组数组:是一种容器,可以用来存储同种数据类型的多个值;数组特点&#…

河南萌新联赛2025第(二)场:河南农业大学(补题)

文章目录前言A.约数个数和整除分块(相当于约数求和)相关例题:取模B.异或期望的秘密二进制的规律相关例题累加器小蓝的二进制询问乘法逆元1. 概念2.基本定义3.费马小定理1.定理内容2.重要推论D.开罗尔网络的备用连接方案E.咕咕嘎嘎!!!(easy)I.猜数游戏(easy)K.打瓦M.…

常见中间件漏洞

一、TomcatTomcat put方法任意文件写入漏洞环境搭建,启动时端口被占用就改yml配置文件,改成8081端口。(我这里是8080)cd vulhub-master/tomcat/CVE-2017-12615 docker-compose up -d 去抓包,改成put提交。下面的内容是用哥斯拉生成的木马文件…

27.(vue3.x+vite)以pinia为中心的开发模板(监听watch)

效果截图 代码实现: HelloWorld.vue <template><div style="padding: 20px">介绍:<br />1:使用统一的 watch 来监听store的值。<br

Jenkins 详解

Jenkins 是一个开源的持续集成和持续交付(CI/CD)工具&#xff0c;用于自动化软件开发过程中的构建、测试和部署阶段。以下是关于 Jenkins 的详细介绍&#xff1a; 1. Jenkins 核心概念 1.1 持续集成(CI) 开发人员频繁地将代码变更提交到共享仓库每次提交都会触发自动构建和测试…

动态配置实现过程

查看DCCValueBeanFactory类的完整实现&#xff0c;了解动态配置的实现过程 动态配置实现过程 1. 自定义注解 使用DCCValue注解标记需要动态配置的字段&#xff0c;格式为key:defaultValue&#xff1a; DCCValue("downgradeSwitch:0") private String downgradeSw…

【大模型理论篇】跨语言AdaCOT

参考&#xff1a;AdaCoT: Rethinking Cross-Lingual Factual Reasoning throughAdaptive Chain-of-ThoughtAdaCoT&#xff08;Adaptive Chain-of-Thought&#xff0c;自适应思维链&#xff09;是一项提升大型语言模型&#xff08;LLMs&#xff09;跨语言事实推理能力的新框架。…

vue3项目搭建

前一段时间招聘前端开发,发现好多开发连基本的创建项目都不会,这里总结一下 在Vue 3中,使用Webpack和Vite创建的项目文件结构及语言(JS/TS)的选择有以下主要区别: 1. 创建方式与文件结构差异 方式一、Webpack(Vue CLI) 创建命令: vue create project-name 典型文件结构…

企业签名的多种形式

企业签名有多种形式&#xff0c;可分为企业签名独立版、企业签名稳定版、企业签名共享版等。每一种形式的企业签名都有其独特的特点&#xff0c;其中&#xff1a;  企业签名独立版&#xff1a;其特性主要为稳定性较高&#xff0c;使用者可以通过控制APP的下载量来保证APP的稳…

解构远程智能系统的视频能力链:从RTSP|RTMP协议接入到Unity3D头显呈现全流程指南

在人工智能奔腾的2025年&#xff0c;WAIC&#xff08;世界人工智能大会&#xff09;释放出一个明确信号&#xff1a;视频能力已经成为通往“远程智能”的神经中枢。在无人机、四足机器人、远程施工、巡检等新兴场景中&#xff0c;一套可靠、低延迟、可嵌入头显设备的视频传输系…

Less Less基础

1.lessless是一种动态样式语言&#xff0c;属于CSS预处理器的范畴&#xff0c;它扩展了CSS语言&#xff0c;增加了变量&#xff0c;Mixin&#xff0c;函数等特性&#xff0c;使CSS更易维护和扩展。Less既可以在客户端上运行&#xff0c;也可以借助Node.js在服务端运行。2.Less中…

如何使用 Redis 实现 API 网关或单个服务的请求限流?

使用 Redis 高效实现 API 网关与服务的请求限流 在微服务架构中&#xff0c;对 API 网关或单个服务的请求进行速率限制至关重要&#xff0c;以防止恶意攻击、资源滥用并确保系统的稳定性和可用性。 Redis 凭借其高性能、原子操作和丰富的数据结构&#xff0c;成为实现请求限流的…

图片查重从设计到实现(7) :使用 Milvus 实现高效图片查重功能

使用 Milvus 实现高效图片查重功能本文将介绍如何利用 Milvus 向量数据库构建一个高效的图片查重系统&#xff0c;通过传入图片就能快速从已有数据中找出匹配度高的相似图片。一.什么是图片查重&#xff1f; 图片查重指的是通过算法识别出内容相同或高度相似的图片&#xff0c;…