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

Python实例题:Python自动化开发-考勤处理

目录

Python实例题

题目

实现思路

代码实现

代码解释

运行思路

注意事项

Python实例题

题目

Python自动化开发-考勤处理

实现思路

  • 读取考勤记录文件:使用 pandas 库读取 CSV 格式的考勤记录文件。
  • 数据预处理:对读取的数据进行清洗和转换,例如将打卡时间转换为合适的时间格式。
  • 考勤规则设定:根据公司的考勤规则,如上班时间、下班时间、迟到判定标准等,判断员工是否迟到、早退等。
  • 统计考勤结果:统计每个员工的出勤天数、迟到次数、早退次数等信息。
  • 生成考勤报表:将统计结果保存为 CSV 文件或其他格式的报表。

代码实现

import pandas as pd
from datetime import datetime# 定义上班时间和下班时间
START_TIME = datetime.strptime('09:00:00', '%H:%M:%S').time()
END_TIME = datetime.strptime('18:00:00', '%H:%M:%S').time()def read_attendance_data(file_path):"""读取考勤记录文件:param file_path: 考勤记录文件的路径:return: 包含考勤记录的 DataFrame"""try:df = pd.read_csv(file_path)return dfexcept FileNotFoundError:print(f"文件 {file_path} 未找到。")return Nonedef preprocess_data(df):"""数据预处理,将打卡时间转换为时间格式:param df: 包含考勤记录的 DataFrame:return: 处理后的 DataFrame"""df['打卡时间'] = pd.to_datetime(df['打卡时间']).dt.timereturn dfdef check_attendance(row):"""检查员工的考勤情况:param row: 包含员工考勤记录的 DataFrame 行:return: 考勤结果(迟到、早退、正常等)"""punch_time = row['打卡时间']if punch_time > START_TIME:return '迟到'elif punch_time < END_TIME:return '早退'return '正常'def process_attendance(df):"""处理考勤数据,统计每个员工的考勤结果:param df: 包含考勤记录的 DataFrame:return: 包含考勤统计结果的 DataFrame"""df['考勤结果'] = df.apply(check_attendance, axis=1)attendance_summary = df.groupby('员工姓名')['考勤结果'].value_counts().unstack(fill_value=0)attendance_summary['出勤天数'] = attendance_summary.sum(axis=1)return attendance_summarydef generate_report(attendance_summary, report_path):"""生成考勤报表并保存为 CSV 文件:param attendance_summary: 包含考勤统计结果的 DataFrame:param report_path: 考勤报表的保存路径"""attendance_summary.to_csv(report_path)print(f"考勤报表已保存到 {report_path}。")if __name__ == "__main__":file_path = 'attendance_records.csv'  # 替换为实际的考勤记录文件路径report_path = 'attendance_report.csv'  # 替换为实际的考勤报表保存路径# 读取考勤记录attendance_data = read_attendance_data(file_path)if attendance_data is not None:# 数据预处理attendance_data = preprocess_data(attendance_data)# 处理考勤数据attendance_summary = process_attendance(attendance_data)# 生成考勤报表generate_report(attendance_summary, report_path)

代码解释

  • 读取考勤记录文件read_attendance_data 函数使用 pandas 的 read_csv 方法读取 CSV 文件,如果文件不存在则输出错误信息。
  • 数据预处理preprocess_data 函数将 打卡时间 列转换为时间格式,方便后续的比较和处理。
  • 考勤规则设定check_attendance 函数根据上班时间和下班时间判断员工的考勤情况,返回 迟到早退 或 正常
  • 统计考勤结果process_attendance 函数使用 apply 方法对每一行数据应用 check_attendance 函数,然后使用 groupby 和 value_counts 方法统计每个员工的考勤结果,最后计算出勤天数。
  • 生成考勤报表generate_report 函数将考勤统计结果保存为 CSV 文件。

运行思路

  • 安装依赖库:确保已经安装了 pandas 库,可以使用 pip install pandas 进行安装。
  • 准备考勤记录文件:将考勤记录保存为 CSV 文件,文件中应包含 员工姓名 和 打卡时间 两列。
  • 运行脚本:将代码中的 file_path 和 report_path 替换为实际的文件路径,然后在终端中运行 python attendance_processing.py
  • 查看考勤报表:脚本运行完成后,会在指定的路径下生成考勤报表文件。

注意事项

  • 文件格式:确保考勤记录文件为 CSV 格式,并且包含 员工姓名 和 打卡时间 两列。
  • 时间格式:代码中假设 打卡时间 列的格式为 HH:MM:SS,如果实际格式不同,需要相应地修改代码。
  • 考勤规则:代码中的上班时间和下班时间是固定的,可以根据实际情况进行调整。同时,考勤规则可以根据公司的具体要求进行扩展,例如考虑午休时间、请假情况等。

相关文章:

  • iptables防火墙
  • 深入浅出 Redis:核心数据结构解析与应用场景Redis 数据结构
  • 简述Apache RocketMQ
  • R语言简介与下载安装
  • 面试题之高频面试题
  • 扩展欧几里得算法【Exgcd】的内容与题目应用
  • MySQL-数据查询(CASE练习)-01
  • Vue 组件化开发
  • netty知识点
  • 51、Spring Boot 详细讲义(八) Spring Boot 与 NoSQL
  • C++栈与堆内存详解:Visual Studio实战指南
  • MyBatisPlus-QueryWrapper的exists方法拼接SQL中的EXISTS子句
  • Nginx | Apache 配置 WebSocket 多层代理基本知识(附疑难杂症)
  • 基于LightRAG进行本地RAG部署(包括单卡多卡本地模型部署、调用阿里云或DeepSeekAPI的部署方法、RAG使用方法)
  • 分布式存储数据恢复—hbase和hive数据库文件被删除如何恢复数据?
  • Layout 路由
  • Trea初体验:使用Trea从零到一创建一个项目,用来演示glog库的使用,一行代码没改完成了整个项目的搭建运行
  • 2843. 统计对称整数的数目
  • 【Pandas】pandas DataFrame xs
  • 全自动驾驶(FSD,Full Self-Driving)自动驾驶热点技术的成熟之处就是能判断道路修复修路,能自动利用类似“人眼”的摄像头进行驾驶!值得学习!
  • 广东一驴友在英德野景点溺亡,家属被爆向21名同伴索赔86万
  • 广东缉捕1名象牙走私潜逃非洲“红通”逃犯
  • 荣盛发展:新增未支付债务11.05亿元
  • 2025年上海科技节开幕,人形机器人首次登上科学红毯
  • AI赋能科学红毯,机器人与科学家在虚实之间叩问“科学精神”
  • 全国林业院校校长论坛举行,聚焦林业教育的创新与突破