当前位置: 首页 > article >正文

Python自动化处理奖金分摊:基于连续空值的智能分配算法升级

Python自动化处理奖金分摊:基于连续空值的智能分配算法升级

原创 IT小本本 IT小本本 2025年04月04日 02:00 北京

引言

在企业薪酬管理中,团队奖金分配常涉及复杂的分摊规则。传统手工分摊不仅效率低下,还容易因人为疏漏导致分配不公。

本文在算法基础上进行升级,通过增强的空值处理逻辑和性能优化,实现更健壮的奖金分摊自动化方案。

需求:

图片

最终奖金分摊:

图片

源代码:

import pandas as pd
import numpy as npexcel_file = 'bonus_data.xlsx'# 读取Excel文件
df = pd.read_excel(excel_file)# 创建新列用于存储平分后的奖金
df['平分'] = None# 处理数据,查找连续的空值区域并进行分摊
i = 0
while i < len(df):# 如果当前行有奖金值if pd.notna(df.loc[i, '奖金']):current_bonus = df.loc[i, '奖金']start_idx = i# 查找连续的空值区域next_idx = i + 1while next_idx < len(df) and pd.isna(df.loc[next_idx, '奖金']):next_idx += 1# 计算需要分摊的人数num_people = next_idx - start_idx# 如果只有一个人有奖金(没有需要分摊的人)if num_people == 1:df.loc[i, '平分'] = current_bonuselse:# 计算平均奖金avg_bonus = current_bonus / num_people# 为这组人分配平均奖金for j in range(start_idx, next_idx):df.loc[j, '平分'] = avg_bonus# 移动到下一个非空奖金的位置i = next_idxelse:# 如果当前行没有奖金值,跳到下一行i += 1# 处理那些仍然为空的"平分"单元格(处理单独的空值行)
for i in range(len(df)):if pd.isna(df.loc[i, '平分']):# 检查前后是否有非空的"平分"值if i > 0and pd.notna(df.loc[i-1, '平分']):df.loc[i, '平分'] = df.loc[i-1, '平分']elif i < len(df)-1and pd.notna(df.loc[i+1, '平分']):df.loc[i, '平分'] = df.loc[i+1, '平分']# 格式化平分列,去掉小数点后不必要的零
df['平分'] = df['平分'].apply(lambda x: int(x) if pd.notna(x) and x == int(x) else x)# 输出处理后的数据
print(df)

算法核心点

1. 多列空值联合检测

# 支持多列条件的连续空值检测
while next_idx < len(df) and (pd.isna(df.loc[next_idx, '奖金']) |pd.isna(df.loc[next_idx, '部门'])
):next_idx += 1

2. 动态权重分配

# 按业绩系数动态分配
weight_col = df.loc[start_idx:next_idx-1, '业绩系数']
df['平分'] = current_bonus * weight_col / weight_col.sum()

3. 智能空值修复链

# 三级修复策略
df['平分'] = df['平分'].fillna(method='ffill'
).fillna(method='bfill'
).mask(df['奖金'].isna() & df['平分'].eq(df['平分'].shift()),np.nan
)

4. 数据状态标记

# 异常数据自动标记
df['数据状态'] = np.where((df['奖金'] > 1e6) | (df['平分'] < 0),'异常','正常'
)

相关文章:

Python自动化处理奖金分摊:基于连续空值的智能分配算法升级

Python自动化处理奖金分摊&#xff1a;基于连续空值的智能分配算法升级 原创 IT小本本 IT小本本 2025年04月04日 02:00 北京 引言 在企业薪酬管理中&#xff0c;团队奖金分配常涉及复杂的分摊规则。传统手工分摊不仅效率低下&#xff0c;还容易因人为疏漏导致分配不公。 本文…...

AI工具箱源码+成品网站源码+springboot+vue

大家好&#xff0c;今天给大家分享一个靠AI广告赚钱的项目&#xff1a;AI工具箱成品网站源码&#xff0c;源码支持二开&#xff0c;但不允许转售&#xff01;&#xff01; 本人专门为小型企业和个人提供的解决方案。 不懂技术的也可以直接部署工具箱网站&#xff0c;成为站长&…...

centos7停服yum更新kernel失败解决办法

yum更新kernel均失败 由于centos停服&#xff0c;使用yum源安装内核失败 # rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org# yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm Loaded plugins: fastestmirror elrepo-release…...

如何下载免费地图数据?

按照以下步骤下载免费地图数据。 1、安装GIS地图下载器 从GeoSaaS&#xff08;.COM&#xff09;官网下载“GIS地图下载器”软件&#xff1a;&#xff0c;安装完成后桌面上出现”GIS地图下载器“图标。 双击桌面图标打开”GIS地图下载器“ 2、下载地图数据 点击主界面底部的“…...

IO 口作为外部中断输入

外部中断 1. NVIC2. EXTI 1. NVIC NVIC即嵌套向量中断控制器&#xff0c;它是内核的器件&#xff0c;M3/M4/M7 内核都是支持 256 个中断&#xff0c;其中包含了 16 个系统中断和 240 个外部中断&#xff0c;并且具有 256 级的可编程中断设置。然而芯片厂商一般不会把内核的这些…...

Go 语言实现的简单 CMS Web

Go 语言实现的简单 CMS Web 以下是一个使用 Go 语言实现的简单 CMS Web 演示代码示例&#xff0c; 包含基本的内容管理功能&#xff1a; 项目结构 ### 项目结构 cms-demo/ ├── main.go ├── handlers/ ├── models/ ├── views/ │ ├── home.html │ ├─…...

《MySQL基础:了解MySQL周边概念》

1.登录选项的认识 -h&#xff1a;指明登录部署了mysql服务的主机&#xff0c;默认为127.0.0.1-P&#xff1a;指明要访问的端口号&#xff0c;默认为3306-u&#xff1a;指明登录用户-p&#xff1a;指明登录密码 2.什么是数据库 2.1认识数据库 第一点理解。 mysql是数据库的客户…...

Spring boot 知识整理

一、SpringBoot 背景内容梳理 SpringBoot是一个基于Spring框架的开源框架&#xff0c;用于简化Spring应用程序的初始搭建和开发过程。它通过提供约定优于配置的方式&#xff0c;尽可能减少开发者的工作量&#xff0c;使得开发Spring应用变得更加快速、便捷和高效。 SpringBoot…...

transformer 规范化层

目标 了解规范化层的作用掌握规范化层的实现过程 作用 所有的深层网络模型都需要标准网络层, 因为随着网络层数量的增加, 通过多层的计算后参数可能出现过大或者过小的情况, 这样可能导致在学习过程出现异常, 模型可能收敛比较慢,因此都会在一定的层数后接规范化层进行数值的…...

RCL谐振电压增益曲线

谐振电路如何通过调频实现稳压&#xff1f; 为什么要做谐振&#xff1f; 在谐振状态实现ZVS导通&#xff0c;小电流关断 电压增益GVo/Vin&#xff0c;相当于产出投入比 当ff0时&#xff0c;G1时&#xff0c;输出电压输入电压 当G<1时&#xff0c;输出电压<输入电压 …...

JavaScript:表单及正则表达式验证

今天我要介绍的是在JavaScript中关于表单验证内容的知识点介绍&#xff1a; 关于表单验证&#xff0c;我接下来则直接将内容以及效果显示出来并作注解&#xff0c;这样可以清晰看见这个表达验证的妙用&#xff1a; <form id"ff" action"https://www.baidu.…...

一、Appium环境安装

找了一圈操作手机的工具或软件&#xff0c;踩了好多坑&#xff0c;最后决定用这个工具(影刀RPA手机用的也是这个)&#xff0c;目前最新的版本是v2.17.1&#xff0c;是基于nodejs环境的&#xff0c;有两种方式&#xff0c;我只试了第一种方式&#xff0c;第二种方式应该是比较简…...

精益数据分析(3/126):用数据驱动企业发展的深度解析

精益数据分析&#xff08;3/126&#xff09;&#xff1a;用数据驱动企业发展的深度解析 大家好&#xff01;一直以来&#xff0c;我都坚信在当今竞争激烈的商业环境中&#xff0c;数据是企业获得竞争优势的关键。最近深入研究《精益数据分析》这本书&#xff0c;收获颇丰&…...

暂存一下等会写

#include<easyx.h> IMAGE SNOW 图形变量 struct MOVE生存结构体 {int x0;int y0; bool livefalse;}; initgraph(800, 800);初始化图形界面 MOVE snowflake[5000];目标数量 loadimage(&SNOW, "snow.png");加载图片 BeginBatchDraw(); 开始批量绘图。…...

【c++深入系列】:new和delete运算符详解

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; “生活不会向你许诺什么&#xff0c;尤其不会向你许诺成功。它只会给你挣扎、痛苦和煎熬的过程。但只要你坚持下去&#xff0c;终有一天&…...

正弦波有效值和平均值(学习笔记)

一个周期的正弦波在坐标轴上围的面积有多大&#xff1f; 一般正弦波以 y Asin(wx)表示&#xff0c;其中A为振幅&#xff0c;W为角速度。周期T 2π/w; 确定积分区间是x 0&#xff0c;到x 2π。 计算绝对值积分&#xff1a; 变量代还&#xff1a;wx θ&#xff0c;dx dθ…...

《分布式软总线架构下,设备虚拟化技术的深度剖析与优化策略》

设备之间的互联互通和协同工作已成为一种趋势。分布式软总线架构作为实现这一目标的关键技术&#xff0c;为不同设备之间的通信和协作提供了基础。而设备虚拟化技术则是在分布式软总线架构下&#xff0c;进一步提升设备资源利用效率的重要手段。本文将深入探讨在分布式软总线架…...

首次打蓝桥杯总结(c/c++B组)

目录 一、对每个题进行总结 1.填空题 2.第一个大题---可分解的正整数&#xff08;10--3&#xff09; 3.第二道大题---产值调整&#xff08;10--3&#xff09; 4.第三道大题---画展部署&#xff08;15--7&#xff09; 5.第四道大题---水质检测&#xff08;15--3&#x…...

第八天 开始Unity Shader的学习之Blinn-Phong光照模型

Unity Shader的学习笔记 第八天 开始Unity Shader的学习之Blinn-Phong光照模型 文章目录 Unity Shader的学习笔记前言一、Blinn-Phong光照模型①计算高光反射部分效果展示 二、召唤神龙:使用Unity内置的函数总结 前言 今天我们编写另一种高光反射的实现方法 – Blinn光照模型…...

游戏NPC对话AI生成的管理调用系统设计

系统概述 游戏与故事人物对话模拟系统 此系统旨在模拟游戏或故事场景里人物的对话。它具备创建游戏与人物信息的功能&#xff0c;并且能借助输入游戏、人物、时间、地点、场景等信息&#xff0c;调用 OpenAI 格式的接口(通过One Api支持DeepSeek之类的其他AI)得到人物的对话内容…...

Go:使用共享变量实现并发

竞态 在串行程序中&#xff0c;步骤执行顺序由程序逻辑决定&#xff1b;而在有多个 goroutine 的并发程序中&#xff0c;不同 goroutine 的事件先后顺序不确定&#xff0c;若无法确定两个事件先后&#xff0c;它们就是并发的。若一个函数在并发调用时能正确工作&#xff0c;称…...

豆瓣图书数据采集与可视化分析

文章目录 一、适用题目二、豆瓣图书数据采集1. 图书分类采集2. 爬取不同分类的图书数据3. 各个分类数据整合 三、豆瓣图书数据清洗四、数据分析五、数据可视化1. 数据可视化大屏展示 源码获取看下方名片 一、适用题目 基于Python的豆瓣图书数据采集与分析基于Python的豆瓣图书…...

常见的爬虫算法

1.base64加密 base64是什么 Base64编码&#xff0c;是由64个字符组成编码集&#xff1a;26个大写字母AZ&#xff0c;26个小写字母az&#xff0c;10个数字0~9&#xff0c;符号“”与符号“/”。Base64编码的基本思路是将原始数据的三个字节拆分转化为四个字节&#xff0c;然后…...

Numpy常用库方法总结

numpy的底层是ndarray&#xff0c;也就是矩阵结构 对于ndarray结构来说&#xff0c;里面所有的元素必须是同一类型的 如果不是的话&#xff0c;会自动的向下进行转换 list [1,2,3,4,5] array np.array(list) array输出&#xff1a;array([1, 2, 3, 4, 5]) 1.1 ndarray基本…...

YOLOV8 OBB 海思3516训练流程

YOLOV8 OBB 海思3516训练流程 目录 1、 下载带GPU版本的torch(可选) 1 2、 安装 ultralytics 2 3、 下载pycharm 社区版 2 4、安装pycharm 3 5、新建pycharm 工程 3 6、 添加conda 环境 4 7、 训练代码 5 9、配置Ymal 文件 6 10、修改网络结构 9 11、运行train.py 开始训练模…...

[MySQL] 事务管理(二) 事务的隔离性底层

事务的隔离性底层 1.数据库并发的场景2.读-写2.1MVCC三个变量2.1.1 3个记录隐藏列字段2.1.2 undo日志 模拟MVCCselect 的读取2.1.3 Read View&#xff08;读视图&#xff09; 3.RR与RC的区别 1.数据库并发的场景 读-读&#xff1a;不存在问题&#xff0c;也不需要并发控制读-写…...

20、.NET SDK概述

.NET SDK&#xff08;Software Development Kit&#xff09; 是微软提供的一套开发工具包&#xff0c;用于构建、运行和管理基于 .NET 平台的应用程序。它包含了一组丰富的工具、库和运行时环境&#xff0c;支持开发者在多种操作系统&#xff08;如 Windows、Linux 和 macOS&am…...

Go:包和 go 工具

引言 通过对关联特性分类&#xff0c;组成便于理解和修改的单元&#xff0c;使包与程序其他包保持独立&#xff0c;助力大型程序的设计与维护 。模块化让包可在不同项目共享、复用、发布及全球范围使用。 每个包定义不同命名空间作为标识符&#xff0c;关联具体包&#xff0c…...

18-21源码剖析——Mybatis整体架构设计、核心组件调用关系、源码环境搭建

学习视频资料来源&#xff1a;https://www.bilibili.com/video/BV1R14y1W7yS 文章目录 1. 架构设计2. 核心组件及调用关系3. 源码环境搭建3.1 测试类3.2 实体类3.3 核心配置文件3.4 映射配置文件3.5 遇到的问题 1. 架构设计 Mybatis整体架构分为4层&#xff1a; 接口层&#…...

冒泡排序、插入排序、快速排序、堆排序、希尔排序、归并排序

目录 冒泡排序插入排序快速排序(未优化版本)快速排序(优化版本)堆排序希尔排序归并排序各排序时间消耗对比 冒泡排序 冒泡排序核心逻辑就是对数组从第一个位置开始进行遍历&#xff0c;如果发现该元素比下一个元素大&#xff0c;则交换位置&#xff0c;如果不大&#xff0c;就…...