目标不是做考勤硬件也不是做人脸打卡而是用数据分析方法把“散漫问题”量化、可视化、可追溯化。一、实际应用场景描述场景一家中型公司约 300–500 人实行弹性上班制各部门自行管理考勤。HR 每月从打卡系统导出 Excel / CSV 原始数据人工统计迟到、早退情况再反馈给部门负责人。典型数据字段- 员工ID- 姓名- 部门- 日期- 上班打卡时间- 下班打卡时间二、引入痛点BI 视角痛点 业务映射人工统计效率低 数据量大、规则多标准不统一 部门对“迟到”定义不一致无法定位重点人员 只看总数不看高频个体整改无数据支撑 口头提醒缺乏量化依据商务智能切入点- 用聚合分析看部门差异- 用阈值规则识别高频异常- 用自动化报表替代手工 Excel三、核心逻辑讲解设计思想1️⃣ 数据层ETL 思维- 读取原始打卡数据CSV / Excel- 清洗缺失值、异常时间- 统一时间格式2️⃣ 规则层KPI 定义统一规则示例- 上班晚于 09:30 → 迟到- 下班早于 18:00 → 早退- 单月迟到 ≥ 3 次 → 重点关注3️⃣ 分析层OLAP 思维- 按 部门 聚合- 按 员工 聚合- 计算- 迟到次数- 早退次数- 异常率4️⃣ 输出层报表自动化- 生成- 部门考勤汇总表- 高频异常人员清单- 整改建议报表文本四、代码模块化结构attendance_bi/│├── etl.py # 数据读取与清洗├── rules.py # 考勤规则定义├── analytics.py # 统计与聚合├── reporter.py # 报表生成├── main.py # 主入口└── README.md五、核心代码示例简化版1️⃣ 数据读取与清洗etl.pyimport pandas as pddef load_attendance_data(file_path: str) - pd.DataFrame:读取原始考勤数据df pd.read_csv(file_path)# 转换时间字段df[check_in] pd.to_datetime(df[check_in], errorscoerce)df[check_out] pd.to_datetime(df[check_out], errorscoerce)# 去除关键字段缺失的数据df.dropna(subset[employee_id, department, date], inplaceTrue)return df2️⃣ 考勤规则定义rules.pyfrom datetime import timeLATE_THRESHOLD time(9, 30)EARLY_LEAVE_THRESHOLD time(18, 0)def is_late(check_in):return check_in.time() LATE_THRESHOLD if pd.notna(check_in) else Falsedef is_early_leave(check_out):return check_out.time() EARLY_LEAVE_THRESHOLD if pd.notna(check_out) else False3️⃣ 统计分析analytics.pyimport pandas as pddef department_summary(df: pd.DataFrame) - pd.DataFrame:按部门统计迟到、早退次数summary (df.groupby(department).agg(late_count(is_late, sum),early_leave_count(is_early_leave, sum),employee_count(employee_id, nunique)).reset_index())summary[late_rate] summary[late_count] / summary[employee_count]return summary4️⃣ 高频人员筛选与报表reporter.pydef find_high_risk_employees(df: pd.DataFrame, threshold3):筛选单月迟到 threshold 的人员risk_df (df.groupby([employee_id, name, department]).agg(late_times(is_late, sum)).reset_index())return risk_df[risk_df[late_times] threshold]5️⃣ 主程序main.pyfrom etl import load_attendance_datafrom rules import is_late, is_early_leavefrom analytics import department_summaryfrom reporter import find_high_risk_employeesdf load_attendance_data(attendance.csv)df[is_late] df[check_in].apply(is_late)df[is_early_leave] df[check_out].apply(is_early_leave)dept_report department_summary(df)risk_employees find_high_risk_employees(df)dept_report.to_csv(department_attendance_report.csv, indexFalse)risk_employees.to_csv(high_risk_employees.csv, indexFalse)print(考勤报表生成完成)六、README 文件精简版# 企业考勤数据分析系统Demo## 功能- 月度考勤数据清洗- 部门级迟到 / 早退统计- 高频异常人员识别- 自动生成整改报表## 使用方法bashpip install pandaspython main.py## 输入数据- attendance.csv- employee_id- name- department- date- check_in- check_out七、使用说明中立化1. 本系统不涉及生物识别数据2. 仅基于已有打卡记录进行分析3. 适用于- 企业 HR 数据分析- BI 课程案例- 管理改进试点项目4. 规则可根据企业制度灵活调整八、核心知识点卡片去营销化模块 知识点ETL 数据抽取、清洗、转换规则建模 KPI 定义、阈值判断OLAP 多维聚合分析数据治理 缺失值处理、标准化BI 思维 从数据到管理决策九、总结工程师 BI 视角这个项目的意义在于- ✅ 把“散漫”这种主观感受变成可量化的指标- ✅ 让管理层看到- 哪个部门问题最突出- 哪些人是重点对象- ✅ 为制度优化、绩效挂钩、文化建设提供数据基础它不是监控工具而是一个管理诊断系统。利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛