【数据分析面试】33.计算加权平均值 (Python: enumerate())

news2024/12/23 6:04:50

在这里插入图片描述

题目

假设你在分析薪资数据。经理让你使用最近加权平均值来计算平均薪资,并为提供了过去’n’年的数据。

最近加权应确保最近几年的薪资权重大于时间较久几年的薪资。

编写函数实现下面计算功能:输入previous_salaries是最近n年的薪资列表,并且按照时间顺序排序,最近的年份在最后。将结果四舍五入到两位小数。

示例:

#输入
previous_salaries = [64000,66000,75000,88000,90000]

#输出
recency_weighted_salaries(previous_salaries) -> 81533.33

解释:我们有过去5年的5个薪资。我们应该给予第一年薪资权重1,第二年2,以此类推,直到最后给最近一年的薪资权重5

64000 ∗ 1 + 66000 ∗ 2 + 75000 ∗ 3 + 88000 ∗ 4 + 90000 ∗ 5 1 + 2 + 3 + 4 + 5 = 81533.33 \frac{64000 * 1 + 66000 * 2 + 75000 *3 + 88000 *4 +90000 *5} {1+2+3+4+5} = 81533.33 1+2+3+4+5640001+660002+750003+880004+900005=81533.33

答案

解题思路

计算加权平均薪资的关键在于确定每一年的权重,并根据给定的权重计算加权平均值。

答案代码

def recency_weighted_salaries(previous_salaries):
    # 初始化加权和和权重和
    weighted_sum = 0
    weight_sum = 0
    
    # 计算加权和和权重和
    for i, salary in enumerate(previous_salaries, start=1):
        weighted_sum += salary * i
        weight_sum += i
    
    # 计算加权平均薪资并四舍五入到两位小数
    weighted_average = weighted_sum / weight_sum
    return round(weighted_average, 2)


previous_salaries = [64000, 66000, 75000, 88000, 90000]
print(recency_weighted_salaries(previous_salaries))
  • 使用enumerate函数遍历previous_salaries列表,获取索引和薪资。
  • 对于每年薪资,我们将其乘以对应的权重(索引加1),并累加到加权和中。同时,我们还累加权重值到权重和中。
  • 最后,我们将加权和除以权重和,得到加权平均薪资,并使用round函数将其四舍五入到两位小数。

enumerate()

enumerate() 是 Python 中的一个内置函数,用于将一个可迭代对象(如列表、元组、字符串等)组合为一个索引序列,同时列出数据和数据的索引。它的语法结构如下:

enumerate(iterable, start=0)
  • iterable:需要被枚举的可迭代对象,如列表、元组、字符串等。
  • start:可选参数,指定索引的起始值,默认为0。

enumerate() 返回一个迭代器,每次迭代生成一个包含索引和对应元素的元组。举个例子:

my_list = ['apple', 'banana', 'orange']

for index, value in enumerate(my_list):
    print(index, value)

# 返回:
# 0 apple
# 1 banana
# 2 orange

更多详细答案可关注公众号查阅。
在这里插入图片描述

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

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

相关文章

使用Canal实现MySQL主从同步

说明:本文介绍如何使用Canal实现MySQL主从同步的效果,关于Canal入门使用参考:Canal入门使用 启动Canal 首先,设置Canal服务器里,目标节点(即监测的MySQL节点)的配置,启动Canal服务…

心理学上有个概念叫:习惯性反驳(附上解决办法)

在心理学上,有一个词,叫做习惯性反驳。 什么意思呢? 就是不管你说什么,他都要反驳你,最后把你带入负面的情绪黑洞,搞得你非常崩溃。 一个总是习惯性反驳的人,其实是非常可怕的。 习惯性反驳的3个…

通过java代码,将jar或class反编译为java文件的四种方式

目录 目标方式一:cfrpom引用java实现 方式二:jd-corepom引用java实现 方式三:procyon.jarjar下载java实现 方式四:procyonpom引用java实现 目标 在spring boot项目中,通过给定的文件地址,将*.jar或*.class…

通义千问(Qwen)AI大模型-系列_2

算力平台AutoDL pip install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple -i https://pypi.mirrors.ustc.edu.cn/simple 一、通义千问系列模型 1、CodeQwen1.5-7B-Chat CodeQwen1.5是Qwen1.5的代码特定版本。它是一种基于变换器的纯解码器语言模型&…

【Unity学习笔记】第十四 Prefab 概念解惑

目录 1 prefab、prefab变体、prefab覆盖和prefab 嵌套2 connect 与unpack3 prefab到底是什么,它和gameobject又有什么区别?4 为什么要用prefab?5 代码动态加载prefab6 为什么我unity PrefabUtility.InstantiatePrefab() 得到的是null7 Prefab…

【LeetCode刷题记录】简单篇-70-爬楼梯

【题目描述】 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 【测试用例】 示例1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1.1阶 1阶…

EI会议、投稿优惠2024年计算机科学与神经网络国际会议(ICCSNN 2024)开始征稿啦!!

2024 International Conference on Computer Science and Neural Networks 一、大会信息 会议名称:2024年计算机科学与神经网络国际会议会议简称:ICCSNN 2024收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等会议官网:http…

蓦然回首,追忆那些备战OCM的日子

蓦然回首 前段时间偶然在墨天轮群看到一位在墨天轮轮社区非常活跃的老兄发的《那些年,我们一起追过的OCP》的文章,获悉墨天轮在举办【我的备考经验】的有奖征文活动,打开那篇文章,一下子又把我的思绪拉回到了好几年前,…

ruoyi实现大文件上传

前端: 安装依赖 1.在package.json文件中添加"vue-simple-uploader": "^0.7.4","spark-md5": "^3.0.1"到dependencies中;devDependencies中"node-sass": "^4.9.0", "sass-loader&quo…

Redis面试题三(集群)

目录 1.Redis 集群搭建有几种模式 2.Redis 主从复制的实现 全量同步 增量同步 3.Redis 的主从同步策略 1. 全量同步(Full Resynchronization) 2. 增量同步(Incremental Replication) 4.Redis一致性hash 基本原理 节点动态…

BAPI_ACC_DOCUMENT_POST 凭证过账及增强

METHOD document_post.DATA ls_documentheader TYPE bapiache09. "表头DATA ls_accountgl TYPE bapiacgl09.DATA lt_accountgl TYPE STANDARD TABLE OF bapiacgl09. "总账项目DATA ls_accountreceivable TYPE bapiacar09.DATA lt_accountreceivable TYPE STANDARD TA…

LVS/NAT工作模式介绍及配置

1.1 LVS/NAT模式工作原理 LVS(Linux Virtual Server)的网络地址转换(NAT)模式是一种在网络层(第四层)实现负载均衡的方法。在NAT模式中,Director Server(DS)充当所有服务…

[Diffusion Model笔记] DDPM数学推导版 2024.04.23

本文是观看以下视频的笔记: https://www.bilibili.com/video/BV1CU4y1i7jn/?p4&spm_id_frompageDriver 其他参考 https://zhuanlan.zhihu.com/p/614147698 https://zhuanlan.zhihu.com/p/563661713 这个写的非常详细: https://www.zhihu.com/ques…

【新手必读】Airtest测试Android手机常见的设置问题

经常有新手同学在使用Airtest测试Android手机的时候,遇到各式各样的问题,其中很大一部分,都是因为Android手机的设置不当,比如: 因为没有登录华为/荣耀/小米账号,而无法开启USB调试功能 因为没有关闭防止恶…

06_Scala流程控制

文章目录 [toc] 1.流程控制**小结:** **2. Scala中流程控制没有三元运算符****2.1 Scala中如果逻辑代码只有一行可以省略花括号****小结:** **3. 循环控制****3.1 for控制****3.2循环守卫 --> 循环表达式添加逻辑判断****3.3 循环步长 --> 表示循环…

IntelliJ IDEA 如何启用 JDK 预览特性

IntelliJ IDEA 也可以启用 JDK 的预览特性。 针对项目,选择项目结构。 配置是在语言结构上。 单击语言结构上的 SDK 默认,往下拉,就可以看到针对新版本的选项。 同时还可以看到那些版本是支持新特性预览的,那些版本是不支持新特…

Python 使用相对路径读取文件失败

python open一个问及那时使用绝对路径可以,但是使用相对路径时报错,找不到指定文件 解决步骤如下: 添加Python配置 在新增的配置Json文件添加下图红框这一行

Linux——(关于权限常见的3个问题)

文章目录 1.修改文件或者目录的拥有者和所属组1.1chown指令1.2chgrp指令 2.常见的权限三个问题2.1对应一个目录,如果要进入,需要什么权限?2.2为什么我们创建的文件默认权限不是7772.2.1关于Linux下的权限掩码 2.3文件能否被删除取决于什么2.3…

与Apollo共创生态:Apollo7周年大会自动驾驶生态利剑出鞘

前言 4月22日,百度Apollo在北京车展前夕举办了以“破晓•拥抱智变时刻”为主题的智能汽车产品发布会,围绕汽车智能化,发布了智驾、智舱、智图等全新升级的“驾舱图”系列产品。 1、7周年大会 自2013年百度开始布局自动驾驶,201…

吴恩达2022机器学习专项课程(一) 6.2 逻辑回归第三周课后实验:Lab2逻辑回归

问题预览/关键词 逻辑回归预测分类创建逻辑回归算法Sigmoid函数Sigmoid函数的表示sigmoid输出的结果Numpy计算指数的方法实验python实现sigmoid函数打印输入的z值和sigmoid计算的值可视化z值和sigmoid的值添加更多数据,使用逻辑回归可以正常预测分类![在这里插入图片…