数据合并 26-30题(30 天 Pandas 挑战)

数据合并

  • 1. 知识点
    • 1.27 左连接
    • 1.28 数据填充与交叉连接
    • 1.29 获取列值列表
  • 题目
    • 2.26 合作过至少三次的演员和导演
    • 2.27 使用唯一标识码替换员工ID
    • 2.28 学生们参加各科测试的次数
    • 2.29 至少有5名直接下属的经理
    • 2.30 销售员

1. 知识点

1.27 左连接

data=pd.merge(employees,employee_uni,on='id',how='left')

1.28 数据填充与交叉连接

  • 交叉合并
    df = pd.merge(students,subjects,how='cross')
    

在这里插入图片描述

  • 空值填充
    result['attended_exams'] = result['attended_exams'].fillna(0)
    

1.29 获取列值列表

data_max_id=employee.groupby('managerId').agg(counts=('managerId','count')).reset_index().query('`counts`>=5')['managerId'].tolist()

题目

2.26 合作过至少三次的演员和导演

在这里插入图片描述
在这里插入图片描述

import pandas as pd

def actors_and_directors(actor_director: pd.DataFrame) -> pd.DataFrame:
    actor_director=actor_director.groupby(['actor_id','director_id']).agg(counts=('director_id','count')).reset_index()
    actor_director=actor_director.query('`counts`>=3')[['actor_id','director_id']]
    actor_director.drop_duplicates(inplace=True)
    return actor_director

2.27 使用唯一标识码替换员工ID

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

import pandas as pd

def replace_employee_id(employees: pd.DataFrame, employee_uni: pd.DataFrame) -> pd.DataFrame:
    data=pd.merge(employees,employee_uni,on='id',how='left')
    data=data[['unique_id','name']]
    return data

2.28 学生们参加各科测试的次数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import pandas as pd

def students_and_examinations(students: pd.DataFrame, subjects: pd.DataFrame, examinations: pd.DataFrame) -> pd.DataFrame:
    # 交叉合并
    df = pd.merge(students,subjects,how='cross')
    # 计算参加的同学
    group = examinations.groupby(['student_id','subject_name']).agg(attended_exams=('subject_name','count')).reset_index()
    # 左连接
    result = pd.merge(df,group,on=['student_id','subject_name'],how='left')
    # 为空的未参加,填充为0
    result['attended_exams'] = result['attended_exams'].fillna(0)
    result = result.sort_values(by=['student_id','subject_name'])
    return result[['student_id', 'student_name', 'subject_name', 'attended_exams']]

2.29 至少有5名直接下属的经理

在这里插入图片描述
在这里插入图片描述

import pandas as pd

def find_managers(employee: pd.DataFrame) -> pd.DataFrame:
    data_max_id=employee.groupby('managerId').agg(counts=('managerId','count')).reset_index().query('`counts`>=5')['managerId'].tolist()
    results=employee.query(f'`id` in {data_max_id}')[['name']]
    return results

2.30 销售员

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import pandas as pd

def sales_person(sales_person: pd.DataFrame, company: pd.DataFrame, orders: pd.DataFrame) -> pd.DataFrame:
    # 找到与RED有关的,剩余的就是没有关的
    # 方法一:连表
    data_c_o=pd.merge(orders,company,on='com_id',how='left')
    data_c_o=data_c_o[data_c_o['name']=='RED']
    data_s_o=pd.merge(data_c_o,sales_person,on='sales_id',how='left')
    un=data_s_o['sales_id'].unique().tolist()
    results=sales_person.query(f'`sales_id` not in {un}')[['name']]
    return results

    # 方法二:不连表
    all_com_id=company.query('`name`=="RED"')['com_id'].values.tolist()
    all_sales_id=orders.query(f'`com_id` in {all_com_id}')['sales_id'].values.tolist()
    results=sales_person.query(f'`sales_id` not in {all_sales_id}')[['name']]
    return results

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是五级流水?银行眼中的“好流水”,到底是什么样的?

无论是按揭买房还是日常贷款,银行流水都是绕不开的一环。规划好你的流水,不仅能让你在申请贷款时更有底气,还可能帮你省下不少冤枉钱。今天,咱们就来一场深度剖析,聊聊如何在按揭贷款、个人经营抵押贷款前,…

什么是SysTick?

一,滴答定时器SysTick SysTick,即滴答定时器,是内核中一个特殊的定时器,用于提供系统级的定时服务。是一个24位递减计时器,具有自动重载值寄存器的功能 。当计数器到达自动重载值时,它会自动重新加载新的计…

深入探索Python库的奇妙世界:赋能编程的无限可能

在编程的浩瀚宇宙中,Python以其简洁的语法、强大的功能和广泛的应用领域,成为了众多开发者心中的璀璨明星。而Python之所以能够如此耀眼,很大程度上得益于其背后庞大的库生态系统。这些库,如同一块块精心雕琢的积木,让…

【Linux详解】进程等待 | 非阻塞轮询

引入: 为什么?是什么?怎么办 是什么? 进程等待是指父进程暂停自己的执行,直到某个特定的子进程结束或发生某些特定的事件。 为什么? 僵尸进程刀枪不入,不可被杀死,存在内存泄露…

安卓备忘录App开发

安卓备忘录APP开发,文章末尾有源码和apk安装包 目标用户: 普通安卓手机用户,需要一个简单易用的备忘录App来记录和管理日常事务。 主要功能: 用户注册: 用户可以创建一个账号,输入用户名和密码。 用户登录: 用户可以通过用户名和密码登录到应用。 用户信息存储: 用户名和…

【python】OpenCV—Feature Detection and Matching

参考学习来自OpenCV基础(23)特征检测与匹配 文章目录 1 背景介绍2 Harris角点检测3 Shi-Tomasi角点检测4 Fast 角点检测5 BRIEF 特征描述子6 ORB(Oriented Fast and Rotated Brief) 特征描述子7 SIFT(Scale Invariant Feature Transform) 特征描述子8 SU…

从一个(模型设计的)想法到完成模型验证的步骤

从有一个大型语言模型(LLM)设计的想法到完成该想法的验证,可以遵循以下实践步骤: 需求分析: 明确模型的目的和应用场景。确定所需的语言类型、模型大小和性能要求。分析目标用户群体和使用环境。 文献调研&#xff1a…

【全面讲解下iPhone新机官网验机流程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

实现多数相加,但是传的参不固定

一、情景 一般实现的加法和减法等简单的相加减函数的话。一般都是写好固定传的参数。比如: function add(a,b) {return a b;} 这是固定的传入俩个,如果是三个呢,有人说当然好办! 这样写不就行了! function add(a…

protobuf及其使用

首先打开proto文件,定义一个类(数据结构),并编写成员变量 使用protobuf编译器protoc编译proto文件为.pb.h和.pb.c文件(c) 看绿色注释部分:从左至右为,编译器,.proto文件的路径,编译的…

YOLO V7网络实现细节(2)—网络整体架构总结

YOLO V7网络整体架构总结 YOLO v7网络架构的整体介绍 不同GPU和对应模型: ​​​​​​​边缘GPU:YOLOv7-tiny普通GPU:YOLOv7​​​​​​​云GPU的基本模型: YOLOv7-W6 激活函数: YOLOv7 tiny: leaky R…

微深节能 煤码头自动化翻堆及取料集控系统 格雷母线

微深节能格雷母线高精度位移测量系统是一种先进的工业自动化位置检测解决方案,它被广泛应用于煤码头自动化翻堆及取料集控系统中,以实现对斗轮堆取料机等大型机械设备的精准定位和自动化控制。 系统原理简述: 格雷母线系统的工作原理基于电磁…

有趣的算法

目录: 1、百钱买百鸡 2、韩信点兵 1)概述 2)正常取余算法 3)循环算法 1、百钱买百鸡 我国古代《算经》中的“百钱买百鸡”问题: 鸡翁一,值钱五;鸡母一,值钱三;鸡…

机器学习第四十六周周报 FMP

文章目录 week46 FMP摘要Abstract1. 题目2. Abstract3. FMP3.1 优化框架3.2 优化器 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程 5. 结论6.代码复现1. FMP2. fairGNN小结参考文献 week46 FMP 摘要 本周阅读了题为Chasing Fairness in Graphs: A GNN Architecture Per…

初识java—jdk17的一些新增特性

文章目录 前言一 : yield关键字二 :var关键字三 :密封类四 :空指针异常:五:接口中的私有方法:六:instanceof关键字 前言 这里介绍jdk17相对于jdk1.8的部分新增特性。 一 &#xff…

Spring Boot的无缝衔接:深入解析与实践

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 🚀The begin🚗点点关注,收藏不迷路🚩 引言 在快速迭代的软件开发环境中,无缝衔接是提升开发效率、降低维护成本、增强系统稳定性的关键。Spring Boo…

STM32芯片系列与产品后缀解读

一. 产品系列 STM32单片机是一系列基于ARM Cortex-M内核的32位微控制器,广泛应用于嵌入式系统中。 STM32系列由STMicroelectronics(意法半导体)开发和生产,并凭借其灵活的设计、丰富的外设和强大的生态系统,成为嵌入式…

LLM - 卷积神经网络(CNN)

1. 卷积神经网络结构:分为输入层,卷积层,池化层,全连接层; (1)首先进入输入层,对数据数据进行处理,将输入数据向量化处理,最终形成输入矩阵。 (…

C++ 什么是虚函数?什么是纯虚函数,以及区别?(通俗易懂)

📚 当谈到虚函数时,通常是指在面向对象编程中的一种机制,它允许在派生类中重写基类的函数,并且能够通过基类指针或引用调用派生类中的函数。 目录 前言 🔥 虚函数 🔥 纯虚函数 🔥 两者区别…

用 Echarts 画折线图

https://andi.cn/page/621503.html