用SQL与Python搭建人才盘点模型,自动化生成九宫格与梯队PPT
简介围绕企业战略落地与人才梯队建设这份61页PPT系统讲解人才盘点的核心方法适合HR管理者、业务负责人及企业战略规划人员。内容从“什么是人才盘点”切入明确数量、质量、结构、成本、地域五大匹配维度并给出企业快速发展、战略转型等适用时机也指出不适合开展盘点的情形。同时拆解人才质量盘点的重点与难点推荐运用大数据统计与关键人群精细盘点梳理出从业务战略规划人才、计算数量差距到业绩能力盘点、潜质评估和培养行动计划的六步流程。后续延伸到人才梯队建设结合案例解析如何将盘点结果转化为储备、培养、晋升方案支撑企业长期发展。资源包共1个pptx文件约2.06MB已有60人学习下载页面以课程大纲层级呈现便于培训、制度设计及内部研讨使用。1. 人才盘点最忌讳的是把61页PPT做成61页表格做人才盘点大部分团队不是死在数据上而是死在“PPT做得像报表”这件事上。既不缺九宫格也不缺继任计划缺的是让高管愿意看、看得懂的呈现方式。所谓“知识基于公司战略的人才盘点与人才梯队建设”核心并不是把每个人打一个分、塞进九个格子里而是把公司未来两年的业务赌注翻译成“哪些岗位会变得更重要、哪些人必须在什么时间之前顶上、顶不上会损失什么”。这件事值得IT从业者认真对待。尤其是HRIS、数据团队和信息化负责人往往被业务方追问“凭什么评定这个人”“你们的工具和算法有多准”。与其绕开管理学模型直接写代码不如先把人才盘点的数据模型和决策逻辑打通再用工程手段把它做成可复用、可解释、能在董事会上讲清楚的东西。这套方案适合招聘负责人、HRBP、组织发展岗位也适合正在搭建内部人才管理系统的工程师。下面按“框架、数据、实现、落地、汇报”五条线展开全部从可复现的角度讲你能直接拷走改。2. 人才盘点前先立框架九宫格模型与数据字段设计2.1 为什么“基于公司战略”不能停留在PPT标题页人才盘点最常见的错误是拿着通用素质模型硬套。一套“沟通能力、抗压能力、团队协作”的评分表放在任何公司都成立换了行业照样成立这不叫盘点叫年度评优。基于公司战略的盘点要求先回答三个问题未来12到18个月公司要打赢哪几场仗每场仗对哪些关键岗位的人才密度要求最高这些岗位上的现任者是否具备应对未来挑战的潜力只有把这三个问题落到岗位和具体人身上九宫格才有解释力。所以我一般会建议先做“战略-岗位-人”的三层拆解而不是直接进入打分环节。用一张表把公司当年的战略主题、对组织能力的诉求、受影响岗位群对应起来再进入人才数据采集。2.2 九宫格、三宫格还是五维模型九宫格是最常见的盘点口径横轴是绩效纵轴是潜力。绩效看过去潜力看未来。相比六宫格或三宫格九宫格在“给高管做决策”时颗粒度更合适能把“高潜但当前绩效一般”的人单独拉出来讨论而不是被平均值吃进去。维度含义数据来源典型周期绩效过去一年对组织目标的实际贡献绩效系统、主管评定年度潜力未来2-3年能否承担更复杂职责360评估、测评中心、高潜评审年度/半年度准备度离目标岗位还差什么任职资格体系、胜任力模型盘点期稳定性留在关键岗位的风险离职意愿访谈、司龄、激励状态半年战略匹配度个人能力方向与战略方向是否一致战略解码会、组织诊断年度字段设计上建议把“评分”和“证据”分开存。评分只是结论高管一定会追问“为什么他是9格里的左上角而不是右上角”。证据字段包括典型业绩案例、测评报告关键结论、主管评语摘要、个人发展计划完成情况这些才是盘点的底层材料。2.3 数据清洗要处理的主观偏差盘点数据的噪声来源主要有三个评审者尺度不一致、集中趋势、光环效应。技术手段能做到的是将偏差暴露出来而不是消除偏差。一个可落地的做法是给每个评委做一个“松紧系数”计算该评委给所有人打分的均值和标准差把原始分映射到统一的5分制分布上。这个换算在Excel里可以用公式实现但人数超过三百人的团队建议直接进数据库或脚本避免人工处理引入二次误差。3. 用SQL和Python把人才数据变成盘点底稿3.1 人才台账的数据表结构设计在做盘点系统时我通常会用四张核心表来支撑员工主表、绩效历史表、潜力评估表、继任关系表。员工主表存基础属性和当前岗位绩效历史表存多周期绩效等级潜力评估表存评委打分和测评结果继任关系表存“接班人矩阵”。CREATE TABLE employee_dim ( emp_id VARCHAR(20) PRIMARY KEY, name VARCHAR(50), dept VARCHAR(100), position VARCHAR(100), critical_flag TINYINT COMMENT 关键岗位标记 1是0否, talent_level CHAR(2) COMMENT 盘点后的人才层级, updated_at DATETIME ); CREATE TABLE perf_history ( emp_id VARCHAR(20), period VARCHAR(10) COMMENT 如2023H1, perf_grade VARCHAR(2) COMMENT A/B/C/D, perf_score DECIMAL(5,2), source VARCHAR(50) COMMENT 绩效系统或主管评分, PRIMARY KEY (emp_id, period) ); CREATE TABLE potential_assessment ( emp_id VARCHAR(20), assessor_id VARCHAR(20) COMMENT 评委工号, potential_score DECIMAL(5,2), readiness_level VARCHAR(20) COMMENT 现在可晋升/1年后/2年后, evidence TEXT, assess_time DATETIME );字段解释potential_score建议用0到10的连续值而不要用高中低三档。原因是在做后继的数值分析时连续值可以求分布、算相关性类别值做不到。readiness_level单独拆出来和九宫格结果并列展示因为“高潜”不代表“现在就能上”很多组织忽略了这个关键差异。3.2 用SQL完成九宫格归档九宫格本质上是一个二维交叉分类。先对绩效和潜力各自确定切分阈值再把人映射到9个格子。WITH score_base AS ( SELECT e.emp_id, e.name, e.dept, AVG(p.perf_score) AS avg_perf, AVG(a.potential_score) AS avg_potential FROM employee_dim e LEFT JOIN perf_history p ON e.emp_id p.emp_id LEFT JOIN potential_assessment a ON e.emp_id a.emp_id WHERE p.period IN (2023H2, 2024H1) GROUP BY e.emp_id, e.name, e.dept ) SELECT emp_id, name, dept, CASE WHEN avg_perf 80 AND avg_potential 80 THEN 1-超预期 WHEN avg_perf 80 AND avg_potential 60 THEN 2-稳定贡献 WHEN avg_perf 60 AND avg_potential 80 THEN 3-潜力黑马 -- 其余组合自行补全 END AS nine_box FROM score_base;阈值不能拍脑袋。常见的做法是取所有参与者绩效分和潜力分的中位数或三分位数而不是用绝对分数。因为不同部门的绩效标准天然不同绝对值会放大部门间的系统性偏差。SQL写法不变把80和60替换成PERCENTILE_CONT计算出来的动态阈值即可。3.3 Python清洗评委打分并输出盘点底稿SQL管取数Python管清洗和证据归集。在线下面谈时评委可能是直接在Excel里打的分文件格式五花八门需要先做标准化。import pandas as pd df pd.read_excel(raw_scores.xlsx, sheet_nameNone) def normalize_score(series, target_mean7.0, target_std1.0): 把评委原始分映射到统一均值和标准差 mean series.mean() std series.std() if std 0: return pd.Series([target_mean] * len(series)) normalized (series - mean) / std * target_std target_mean return normalized.clip(1, 10) for sheet_name, frame in df.items(): score_col 潜力评分 frame[normalized_score] normalize_score(frame[score_col]) frame.to_csv(fnormalized_{sheet_name}.csv, indexFalse, encodingutf-8-sig)这段代码的逻辑是把每个评委的打分分布压缩到统一的均值和标准差上。这样做的原因很直接同一个被盘点人A评委给7分B评委只给5分不代表A比B更有眼光只能说明两人的尺度不同。对处理完的文件建议再自动生成一页“评委偏差报告”显示每个评委的均值、极差、打分人数。这个报告反直觉但非常有用——它把潜规则摆到了台面上减少评委会上的无谓争执。4. 人才梯队建设继任计划、IDP 与组织健康度4.1 从盘点结果到梯队名单的映射规则九宫格完成的只是“分类”梯队建设要求的是“层级”。两套体系需要做一个映射否则盘点结果落不了地。常见做法是这样对应人才层级九宫格位置管理动作高潜人才Top Talent1-超预期、潜力黑马加速发展、关键岗位继任候选中坚力量Core2-稳定贡献、常规贡献保留、激励、岗位轮换待提升Watch绩效或潜力偏低但可辅导IDP、在岗训练风险管控Risk绩效低且潜力低转岗/优化这里有一个容易被忽略的点梯队名单必须是“池子”而不是“名单”。如果直接宣布某人进入高潜池反而容易造成组织博弈。我见过比较稳妥的做法是池子保密仅对本人告知发展方向不对全公司公开分层结果。4.2 继任计划的一页纸输出继任计划不是给每个关键岗位指定一个指定的接班人而是要建立“岗位-候选人”的风险覆盖矩阵。对每个关键岗位算出三个指标后备充足度、后备准备度、在岗风险。succession_data [ {position: 数据平台架构师, incumbent: 张伟, ready_now: 李娜, ready_1yr: 王强, risk: 中}, {position: 安全负责人, incumbent: 刘洋, ready_now: 空缺, ready_1yr: 陈静, risk: 高}, ] for item in succession_data: ready_count 1 if item[ready_now] ! 空缺 else 0 pipeline_count ready_count (1 if item[ready_1yr] ! 空缺 else 0) coverage pipeline_count / 1.0 print(f{item[position]}: 现任在岗风险{item[risk]}, 后备覆盖率{coverage})这个计算的核心价值是暴露“空缺”而不是掩盖空缺。“继任计划不能有空档”是常见误区很多组织直到关键人离职才发现后备队列是空的。覆盖率低于1的岗位应该触发招聘或内部培养的加速动作。4.3 IDP 发展计划要能追踪而不是写作文个人发展计划IDP常见的坑是不了了之。每次盘点后花大力气写完半年后发现没人跟进下次盘点又是重写一遍。技术手段可以把IDP变成可追踪的任务清单。建议把每个IDP拆成三个要素发展目标单位时间内要达成什么能力、发展动作轮岗/项目/课程、验证标准什么产出物或测评结果能证明达标。在系统里落到里程碑后用自动化工具定期提醒# 每月1日早上9点触发IDP进度检查 0 9 1 * * python /opt/hr/idp_check.py --send-reminderidp_check.py内部逻辑不复杂查IDP表对完成率低于60%且距离截止日小于30天的任务向项目负责人的企业微信或钉钉机器人推送提醒。这个自动化能力并不需要高深技术但它保证盘点的结论不是沉没在纸面上。5. 用 python-pptx 把盘点结果落成那61页PPT5.1 模板先行先定页面结构再写代码在写任何自动化生成代码之前先手工搭三张母版页“总分总”封面页、九宫格分布页、人才梯队名单页。不要试图用代码完成视觉设计代码只负责向固定版式里填数据。这61页PPT的内部逻辑也值得设计。通常来说战略篇占6到8页数据与模型篇占10页左右九宫格分部门展示占20到25页继任计划与梯队名单占15页发展计划与行动计划占10页。用 python-pptx 批量生成时只需要做好一个循环按部门或职级切片渲染。5.2 用 python-pptx 生成九宫格分布页from pptx import Presentation from pptx.util import Inches prs Presentation(talent_template.pptx) slide_layout prs.slides.add_slide(prs.slide_layouts[5]) # 空白版式 # 添加标题 title_box slide.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(9), Inches(0.6)) title_box.text f{dept_name} 人才盘点九宫格分布 # 表格展示九宫格每个格子里的人数 rows, cols 3, 3 table_shape slide.shapes.add_table(rows, cols, Inches(1), Inches(1.5), Inches(8), Inches(3.5)) table table_shape.table grid_data [ [潜力高/绩效低, 潜力高/绩效中, 潜力高/绩效高], [潜力中/绩效低, 潜力中/绩效中, 潜力中/绩效高], [潜力低/绩效低, 潜力低/绩效中, 潜力低/绩效高], ] for i in range(rows): for j in range(cols): cell table.cell(i, j) cell.text f{grid_data[i][j]}{count_matrix[i][j]}人 prs.save(foutput/{dept_name}_盘点页.pptx)这里要注意table.text接受的是纯文本不能包含复杂排版。如果需要在一格内展示多个名字建议在名字间用换行符拼接。表格字体大小建议直接指定否则不同环境打开可能出现字体回退。5.3 导出PDF变糊的坑与字体处理建议生成PPT后先做一次PDF导出来预览。在WPS或Office里导出PDF时如果页面上有图片很容易出现“PPT里PNG导出为PDF后变糊”的问题。原因通常是页面设置使用了“默认分辨率”而不是高分辨率导出。在 PowerPoint 里修改注册表或偏好设置并不通用更简单的方案是在 python-pptx 中把图片素材统一使用 PNG 或 EMF 格式不要用 JPG。表格和形状走矢量路径不要截图贴图。导出PDF时在 PowerPoint 中选择“文件—选项—高级—图像大小和质量”勾选“高保真”。另外需要注意嵌入字体。项目交接或跨电脑打开PPT时如果字体丢失版式会完全乱掉。在保存PPT前去“文件—选项—保存—将字体嵌入文件”里勾选“嵌入所有字符”。如果用的是 python-pptx 生成的文件嵌入字体无法在代码里直接设置需要保存后用 Office 或 WPS 再执行一次嵌入操作。本文还有配套的精品资源点击获取
上一篇/下一篇内容由系统自动关联
返回资讯列表 →