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

在这里插入图片描述

题目

假设你在分析薪资数据。经理让你使用最近加权平均值来计算平均薪资,并为提供了过去’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

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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 19:24:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 19:24:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 19:24:03       82 阅读
  4. Python语言-面向对象

    2024-04-28 19:24:03       91 阅读

热门阅读

  1. AHB介绍

    AHB介绍

    2024-04-28 19:24:03      31 阅读
  2. C++左值引用与右值引用

    2024-04-28 19:24:03       30 阅读
  3. sqlyog下载相关

    2024-04-28 19:24:03       31 阅读
  4. Linux系统管理常用命令

    2024-04-28 19:24:03       31 阅读
  5. 学生管理系统代码

    2024-04-28 19:24:03       22 阅读
  6. 每日一练 | 华为认证真题练习Day223

    2024-04-28 19:24:03       28 阅读
  7. 机器学习之ML非常规考点

    2024-04-28 19:24:03       29 阅读
  8. windows创建自启服务

    2024-04-28 19:24:03       29 阅读
  9. windows远程访问树莓派ubuntu22.04 桌面 - NoMachine

    2024-04-28 19:24:03       26 阅读
  10. 微信小程序详解

    2024-04-28 19:24:03       27 阅读