人力资源数据集分析(一)_t-test、卡方检验和描述性统计

news2024/9/20 19:31:45

数据入口:人力资源分析数据集 - Heywhale.com

数据说明

字段说明
EmpID唯一的员工ID
Age年龄
AgeGroup年龄组
Attrition是否离职
BusinessTravel出差:很少、频繁、不出差
DailyRate日薪
Department任职部门:研发部门、销售部门、人力资源部门
DistanceFromHome通勤距离
Education教育等级
EducationField专业领域:生命科学、医学、市场营销、技术、其他
EnvironmentSatisfaction工作环境满意度
Gender性别
HourlyRate时薪
JobInvolvement工作参与度
JobLevel工作级别
JobRole工作角色
JobSatisfaction工作满意度
MaritalStatus婚姻状况
MonthlyIncome月收入
SalarySlab工资单
MonthlyRate月薪
NumCompaniesWorked工作过的公司数量
PercentSalaryHike加薪百分比
PerformanceRating绩效评级
RelationshipSatisfaction关系满意度
StandardHours标准工时
StockOptionLevel股票期权级别
TotalWorkingYears总工作年数
TrainingTimesLastYear去年培训时间
WorkLifeBalance工作生活平衡评价
YearsAtCompany在公司工作年数
YearsInCurrentRole担任现职年数
YearsSinceLastPromotion上次晋升后的年数
YearsWithCurrManager与现任经理共事年数
import pandas as pd
data = 'HR_Analytics.csv'
data = pd.read_csv(file_path)
# 打印每一列的唯一值
for column in data.columns:
    print(f"Unique values in {column}:")
    print(data[column].unique())

通过这段代码可以了解每一列的唯一值。观察到某些列含有缺失值且缺失值的行数较少,可以直接删去。

data_cleaned = data.dropna()

本文将通过t-test、卡方检验和描述性统计来识别与分析员工离职因素。

一:识别员工离职因素

缺失值已成功删除。现在,我们将继续进行探索性数据分析(EDA),以识别与员工离职(Attrition)相关的因素。EDA将包括以下步骤:

  1. 分析目标变量 “Attrition” 的分布。
  2. 使用统计测试和可视化方法来探索其他变量与 “Attrition” 的关系。
  3. 基于分析结果,识别可能导致员工离职的关键因素。

现在,我将开始执行探索性数据分析的第一步,分析目标变量 “Attrition” 的分布。

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(8, 6))
attrition_distribution = sns.countplot(data=data_cleaned, x='Attrition')
attrition_distribution.set_title('Distribution of Attrition')
attrition_distribution.set_xticklabels(['No', 'Yes'])

plt.show()

从 “Attrition” 变量的分布图中,我们可以看到员工离职(Yes)和未离职(No)的数量。接下来,我们将使用统计测试和可视化方法来探索其他变量与 “Attrition” 的关系。

为了识别可能导致员工离职的关键因素,我们将重点关注以下类型的变量:

  1. 数值变量,如 “Age”, “DailyRate”, “DistanceFromHome” 等。
  2. 分类变量,如 “Department”, “EducationField” 等。

我们将通过以下步骤进行分析:

  1. 对于数值变量,我们将使用箱线图来可视化其分布,并使用统计测试(如t-test)来检查它们与 “Attrition” 的关系。
  2. 对于分类变量,我们将使用条形图来可视化其分布,并使用卡方检验来检查它们与 “Attrition” 的关系。

现在,我将开始分析数值变量与 “Attrition” 的关系。为了简化分析,我将选择一些可能对员工离职有较大影响的数值变量进行分析,包括 “Age”, “DailyRate”, “DistanceFromHome”, “EnvironmentSatisfaction”, “JobInvolvement”, “JobSatisfaction”, “RelationshipSatisfaction”, 和 “WorkLifeBalance”。

现在,我将为这些选定的数值变量绘制箱线图。

selected_numerical_columns = ['Age', 'DailyRate', 'DistanceFromHome', 'EnvironmentSatisfaction', 
                              'JobInvolvement', 'JobSatisfaction', 'RelationshipSatisfaction', 'WorkLifeBalance']

plt.figure(figsize=(15, 10))
for i, column in enumerate(selected_numerical_columns, 1):
    plt.subplot(2, 4, i)
    sns.boxplot(data=data_cleaned, x='Attrition', y=column)
    plt.title(column)
    plt.ylabel('')  

plt.tight_layout()
plt.show()

我们已经为选定的数值变量绘制了箱线图,这些图显示了员工离职(Yes)和未离职(No)的分布情况。从箱线图中,我们可以观察到一些变量在离职和未离职的员工之间有显著差异,例如年龄、日薪、环境满意度、工作投入度、工作满意度和工作生活平衡。

接下来,我们将分析分类变量与 “Attrition” 的关系。我们将使用条形图来可视化分类变量的分布,并使用卡方检验来检查它们与 “Attrition” 的关系。

为了简化分析,我将选择一些可能对员工离职有较大影响的分类变量进行分析,包括 “Department”, “EducationField”, “JobRole”, 和 “MaritalStatus”。

现在,我将为这些选定的分类变量绘制条形图。

我们已经为选定的分类变量绘制了条形图,这些图显示了不同分类变量在不同离职状态(Yes/No)下的分布情况。从条形图中,我们可以观察到一些分类变量在离职和未离职的员工之间有显著差异,例如部门、教育领域、工作角色和婚姻状况。

基于这些可视化结果,我们可以进行更深入的分析,例如使用统计测试(如t-test或卡方检验)来确认这些差异是否具有统计学意义。然后,我们可以根据这些分析结果总结可能导致员工离职的关键因素。

现在,我将进行统计测试来确认这些差异是否具有统计学意义。我们将对数值变量进行t-test,对分类变量进行卡方检验。

from scipy import stats

t_test_results = {}
for column in selected_numerical_columns:
    t_stat, p_value = stats.ttest_ind(data_cleaned[data_cleaned['Attrition'] == 'No'][column],
                                      data_cleaned[data_cleaned['Attrition'] == 'Yes'][column],
                                      equal_var=False)
    t_test_results[column] = (t_stat, p_value)

chi_square_test_results = {}
for column in selected_categorical_columns:
    contingency_table = pd.crosstab(data_cleaned[column], data_cleaned['Attrition'])
    chi2, p, dof, expected = stats.chi2_contingency(contingency_table)
    chi_square_test_results[column] = (chi2, p)

t_test_results, chi_square_test_results

我们已经完成了统计测试,并得到了以下结果:

数值变量的t-test结果:

  • “Age”, “DailyRate”, “EnvironmentSatisfaction”, “JobInvolvement”, “JobSatisfaction”, 和 “WorkLifeBalance” 的 p 值小于0.05,表明这些变量在离职和未离职的员工之间存在显著差异。
  • “DistanceFromHome” 和 “RelationshipSatisfaction” 的 p 值大于0.05,表明这些变量在离职和未离职的员工之间没有显著差异。

分类变量的卡方检验结果:

  • 所有选定的分类变量(“Department”, “EducationField”, “JobRole”, “MaritalStatus”)的 p 值都小于0.05,表明这些变量在离职和未离职的员工之间存在显著差异。

基于这些结果,我们可以总结可能导致员工离职的关键因素,包括:

  1. 数值变量:员工的年龄、日薪、环境满意度、工作投入度、工作满意度和工作生活平衡。
  2. 分类变量:部门、教育领域、工作角色和婚姻状况。

二:影响因素具体分析

为了更好地分析AgeGroup、MaritalStatus、TotalWorkingYears和Attrition之间的关系。,我们将进行以下分析:

  1. 描述性统计:了解这些字段的分布情况。
  2. 交叉分析:分析这些字段之间的关系,特别是Attrition与其他字段的关系。

让我们首先进行描述性统计分析。

descriptive_stats = data[['AgeGroup', 'MaritalStatus', 'TotalWorkingYears', 'Attrition']].describe(include='all')

descriptive_stats

以下是关于AgeGroup、MaritalStatus、TotalWorkingYears和Attrition字段的描述性统计信息:

  • AgeGroup:
    • 共有5个不同的年龄组。
    • 最常见的年龄组是26-35岁,共有611人。
  • MaritalStatus:
    • 共有3种婚姻状况。
    • 最常见的婚姻状况是已婚,共有679人。
  • TotalWorkingYears:
    • 平均工作年限为11.28年。
    • 工作年限的范围从0年到40年。
    • 中位数为10年。
  • Attrition:
    • 有两种离职情况:是和否。
    • 大多数员工没有离职,共有1242人。

接下来,我们将进行交叉分析,以了解Attrition与其他字段之间的关系。我们将计算每个AgeGroup、MaritalStatus和TotalWorkingYears的离职率。

attrition_by_age = data.groupby('AgeGroup')['Attrition'].value_counts(normalize=True).unstack().fillna(0)

attrition_by_marital = data.groupby('MaritalStatus')['Attrition'].value_counts(normalize=True).unstack().fillna(0)

attrition_by_years = data.groupby('TotalWorkingYears')['Attrition'].value_counts(normalize=True).unstack().fillna(0)

attrition_by_age, attrition_by_marital, attrition_by_years.head()  

以下是按AgeGroup、MaritalStatus和TotalWorkingYears分组的离职率分析结果:

  • 按AgeGroup分组的离职率:

    • 18-25岁年龄组的离职率为35.77%
    • 26-35岁年龄组的离职率为18.99%
    • 36-45岁年龄组的离职率为9.13%
    • 46-55岁年龄组的离职率为11.84%
    • 55岁以上的年龄组的离职率为17.02%
  • 按MaritalStatus分组的离职率:

    • 离婚员工的离职率为10.37%
    • 已婚员工的离职率为12.37%
    • 单身员工的离职率为25.37%
  • 按TotalWorkingYears分组的离职率:

    • 工作年限为0年的员工的离职率为45.45%
    • 工作年限为1年的员工的离职率为49.38%
    • 工作年限为2年的员工的离职率为29.03%
    • 工作年限为3年的员工的离职率为21.43%
    • 工作年限为4年的员工的离职率为19.05%

从这些数据中,我们可以观察到以下趋势:

  • 年龄较大的员工离职率较低。
  • 单身员工的离职率高于已婚和离婚员工。
  • 工作年限较短的员工离职率较高。

附录:每日股票行情数据
 

想要探索多元化的数据分析视角,可以关注之前发布的相关内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2149842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件防泄密软件哪个好?6款被夸爆的文件防泄密软件推荐!

滴水不漏,方显器量;信息无泄,乃见安防。 文件防泄密软件作为保护企业数据安全的重要工具,受到了越来越多企业的关注。 本文将为您推荐六款备受好评的文件防泄密软件,它们各具特色,功能强大,能…

C语言 结构体和共用体——枚举类型

目录 枚举数据类型 三问枚举数据类型 枚举数据类型 三问枚举数据类型

Ubuntu与Windows之间实现复制粘贴

1.卸载已有的工具 sudo apt-get autoremove open-vm-tools 2.安装工具open-vm-tools sudo apt-get install open-vm-tools 3.安装open-vm-tools-desktop sudo apt-get install open-vm-tools-desktop

Virtuoso服务在centos中自动停止的原因分析及解决方案

目录 前言1. 问题背景2. 原因分析2.1 终端关闭导致信号12.2 nohup命令的局限性 3. 解决方案3.1 使用 screen 命令保持会话3.2 使用 tmux 作为替代方案3.3 使用系统服务(systemd) 4. 其他注意事项4.1 网络配置4.2 日志监控 结语 前言 在使用Virtuoso作为…

Jenkins怎么设置每日自动执行构建任务?

在 Jenkins 中设置每日自动执行构建任务可以按照以下步骤进行: 一、安装必要插件 确保安装了 “Timestamper” 插件,这个插件可以为构建添加时间戳,方便查看构建的执行时间。 二、配置任务 打开需要设置每日自动执行的 Jenkins 任务。在 …

《线性代数》常用公式定理总结

文章目录 1 行列式1.1 克拉默法则1.2 基本性质1.3 余子式 M i j M_{ij} Mij​1.4 代数余子式 A i j ( − 1 ) i j ⋅ M i j A_{ij} (-1)^{ij} \cdot M_{ij} Aij​(−1)ij⋅Mij​1.5 具体型行列式计算(化为基本型)1.5.1 主对角线行列式:主…

C++ | 二叉搜索树

前言 本篇博客讲解c中的继承 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 🎉欢迎大家点赞&…

【大模型】初识大模型(非常详细)零基础入门到精通,收藏这一篇就够了_大模型入门

大模型的定义 大模型是指具有数千万甚至数亿参数的深度学习模型。近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果,如自然语言处理,图片生成,工业数字化等。为了提高模型的性能&#xf…

MeterSphere的一次越权审计

1 MeterSphere简介 MeterSphere是一个一站式开源持续测试平台,它提供了测试跟踪、接口测试、UI测试和性能测试等功能。它全面兼容JMeter、Selenium等主流开源标准,助力开发和测试团队实现自动化测试,加速软件的高质量交付。MeterSphere 的特点…

Java 微服务框架 HP-SOA v1.1.4

HP-SOA 功能完备,简单易用,高度可扩展的Java微服务框架。 项目主页 : https://www.oschina.net/p/hp-soa下载地址 : https://github.com/ldcsaa/hp-soa开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.mdQQ Group: 44636872, 66390394…

解决selenium爬虫被浏览器检测问题

文章目录 专栏导读1.问题解析2.代码解析(Edge/Chrome通用)2.1 设置Edge浏览器选项:2.2 尝试启用后台模式2.3 排除启用自动化模式的标志2.4 禁用自动化扩展2.5 设置用户代理2.6 实例化浏览器驱动对象并应用配置2.7 在页面加载时执行JavaScript代码 3.完整代码(可直接…

[ IDE ] SEGGER Embedded Studio for RISC-V

一、FILE 二、Edit 三、View 四、Search 五、Navigate 六、Project 七、Build 7.1 编译 先选择一个目标类型,再选择编译。 八、Debug 九、Target 十、Tools 10.1 自定义快捷键 点击菜单项,通过Tools –> Options –> Keyboard,实现自…

初识Linux · 环境变量

目录 前言: 命令行参数 环境变量 直接看现象 更多的环境变量 尝试理解环境变量 前言: 今天介绍的是一个较为陌生的名词,环境变量,在学习环境变量之前,我们需要一定的预备知识,这个预备知识是命令行参…

HarmonyOS学习(十三)——数据管理(二) 关系型数据库

文章目录 1、基本概念2、运行机制3、默认配置与限制4、接口说明5、实战:开发“账本”5.1、创建RdbStore5.2、创建数据库5.3、增加数据5.4、删除数据5.5、修改数据5.6、查询数据5.7、备份数据库5.8、恢复数据库5.9、删除数据库 官方文档地址: 通过关系型…

堆的向下调整算法和TOPK问题

目录 1.什么是堆? 1.1 向下调整建堆的时间复杂度计算 1.2 堆的结构体设计 2.堆的功能实现: 2.1 堆的插入: 2.2 堆的删除: 2.3 堆排序: 2.4 向下调整建堆: 2.5 TOPK问题: 2.6 向上调整算…

对接金蝶云星空调用即时库存信息查询API(附JAVA实现)

文章目录 前言准备工作获取第三方授权权限与授权配置信息集成金蝶云SDK调用实现备注前言 对于有自己商品信息管理后台并且使用金蝶ERP系统管理物料的商家来说,将金蝶上物料的库存信息同步到管理后台就可以不用去金蝶上确认库存了,可以大大简化管理后台的库存变更工作,这篇文…

Call OpenAI API with Python requests is missing a model parameter

题意:使用 Python requests 调用 OpenAI API 时缺少 model 参数。 问题背景: Im trying to call OpenAI API from Python. I know they have their own openai package, but I want to use a generic solution. I chose the requests package for its f…

通义千问重磅开源Qwen2.5,性能超越Llama

Qwen2.5 新闻 9月19日云栖大会,阿里云CTO周靖人发布通义千问新一代开源模型Qwen2.5,旗舰模型Qwen2.5-72B性能超越Llama 405B,再登全球开源大模型王座。Qwen2.5全系列涵盖多个尺寸的大语言模型、多模态模型、数学模型和代码模型,每…

TransUNet: 通过Transformer的视角重新思考U-Net架构在医学图像分割中的设计|文献速递-Transformer架构在医学影像分析中的应用

Title 题目 TransUNet: Rethinking the U-Net architecture design for medical imagesegmentation through the lens of transformers TransUNet: 通过Transformer的视角重新思考U-Net架构在医学图像分割中的设计 01 文献速递介绍 卷积神经网络(CNNs&#xff…

计算机毕业设计之:教学平台微信小程序(

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…