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

数据入口:人力资源分析数据集 - 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 snsplt.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 statst_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.xdnf.cn/news/145960.html

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

相关文章

【VUE3.0】如何得到一张像素风格的图片?

目录 引言网络途径获取代码转换已有的图片0. 先看效果1. 上传图片,这个没什么好说的,前端上传图片基本操作。2. 通过滑动条提供一个1-10的数字,用于放缩图片画质。3. 函数拿到图片资源后先对图片进行缩小100倍尺寸处理,此时画质已…

服务器非法关闭后MySQL服务启动失败

在写这篇文章前,我弄好了,写完之后把成功安装的几个MySQL都删除了,只留了最后测试成功的服务“mysql-test” ,然后点击运行,发现又出现上图的错误。心态炸了。 本以为定位到问题了,但是这个错误让我迷茫了。我只能临时…

为什么你的广告规模无法扩大

许多跑facebook的广告主可能都遇到过这样的情况,小额测试广告的时候效果不错,一旦加预算想扩大规模广告往往就会崩掉,始终无法把广告提升一个level,如果你尝试了很多投放策略调整都无法挽救的话,可能问题是出在广告素材上。 对于一…

多重指针变量(n重指针变量)实例分析

0 前言 指针之于C语言,就像子弹于枪械。没了子弹的枪械虽然可以用来肉搏,却失去了迅速解决、优雅解决战斗的能力。但上了膛的枪械也非常危险,时刻要注意是否上了保险,使用C语言的指针也是如此,要万分小心,…

杀死端口占用的进程

1、查看端口的进程,以9023为例 (1)方法1 netstat -tunpl|grep 9023 (2)方法2 ss -tulpan |grep 9023 (3)方法3 netstat -ntlp |grep 9023 (4)方法4 lsof -i:9023 …

A Simple Encoder-Decoder for Open-Vocabulary Semantic Segmentation

FAM: Feature Aggregation Module,Circle with R represents removing feature maps of non-selected categories 辅助信息 权重有1.3G,不建议复现

变压器空载时是否有必要做无功补偿

在电力系统中,变压器作为关键设备之一,其运行状态对整个系统的功率质量和效率具有重要影响。关于“变压器空载时是否有必要做无功补偿”这一问题,答案取决于具体的应用场景、系统需求以及经济性考虑。以下将从变压器空载特性、无功补偿的原理…

360手机黑科技“位置穿越”功能修复 360位置穿越使用

​ 360手机刷机 360手机黑科技 360手机位置穿越 360手机位置修复 360手机站:360os.top 资源免费下载: os.360os.top 备用资源站:360手机-360手机刷机RootTwrp 360手机位置穿越 360手机位置穿越‌,是一款虚拟定位软件,无需进行r…

毕业设计选题:基于springboot+vue+uniapp的驾校报名小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

块匹配算法简介(上)

图像中的运动估计方法大致分为两类:光流法和块匹配算法(BMA,Block Matching Algorithm)。本文将介绍BMA的相关内容,包括基本原理、相似度计算准则与常见的几种搜索方法,如三步法、四步法、钻石搜索法等。 1. 背景 视频中相邻帧往往存在大量的相似内容,即只有局部的一些…

算法课习题汇总(2)

整数划分问题 将正整数n表示成一系列正整数之和&#xff0c;nn1n2…nk(n1>n2>…>nk,k>1)。正整数n的这种表示称为正整数n的划分。 思路&#xff1a; n表示待划分数&#xff0c;m表示最大减数。 #include<iostream> using namespace std;int q(int n, int…

JIT(即时编译)技术

介绍一下JIT优化技术&#xff1f; 想要把高级语言转变成计算机认识的机器语言有两种方式&#xff0c;分别是编译和解释&#xff0c;虽然Java转成机器语言的过程中有一个步骤是要编译成字节码&#xff0c;但是&#xff0c;这里的字节码并不能在机器上直接执行。 JVM中内置了 解释…

记软件开发者画图(UML),使用WPS应用制图

目录 前言 一、什么是UML 二、使用什么画图工具 三、示例 ​四、IntelliJ IDEA 2021快速生成UML图 前言 做软件开发的从写第一个示例程序到最后写项目程序避不开的需要设计画图&#xff0c;所以今天我们就来梳理一下‌UML&#xff08;统一建模语言&#xff09;图形需要画…

LINUX网络编程:TCP(1)

目录 1.认识Tcp的报头 2.确认应答机制&#xff08;ACK&#xff09; 序号与确认序号 捎带应答 3.超时重传机制 4.Tcp连接管理 三次握手 为什是三次握手 四次挥手 理解TIMEWAIT 1.认识Tcp的报头 源端口和目的端口号没什么说的 32位的序号和确认序号&#xff0c;之后会介…

T9-猫狗识别2(暂时版qaq)

T9周&#xff1a;猫狗识别2 **一、前期工作**1.设置GPU,导入库2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型****四、编译模型****五、训练模型****六、模型评估****七、预测**八、总结&#xff08;暂时&#xff09; &…

倒排索引(反向索引)

倒排索引&#xff08;Inverted Index&#xff09;是搜索引擎和数据库管理系统中常用的一种数据结构&#xff0c;用于快速检索文档集合中的文档。在全文搜索场景中&#xff0c;倒排索引是一种非常高效的手段&#xff0c;因为它能够快速定位到包含特定关键词的所有文档。 1、基本…

【Python技术】使用akshare、pyecharts绘制K线图

下班回到家&#xff0c;回家途中瞄了下股票&#xff0c;大盘又是3000多只股票待涨&#xff0c; 盘中上证指数一度跌破2700。 估计不少人心里不爽&#xff0c;那就聊聊相关技术学习下。 之前写过【python技术】使用akshare、pandas、mplfinance绘制红绿色K线图简单示例 &#x…

Android Retrofit源码分析(一):Retrofit是什么?和OkHttp的区别是什么?为什么需要他?

目录 一、Retrofit是什么? Retrofit是一个基于OKHttp的RESTful网络请求框架,由Square公司开源,专为Android和Java提供类型安全的HTTP客户端。它可以理解为OKHttp的加强版,底层封装了OKHttp,主要负责网络请求接口的封装,使得网络请求工作更加简洁高效。 简单来说,Retro…

GNN-RAG:用于大模型推理的图神经检索

GNN-RAG&#xff1a;用于大模型推理的图神经检索 秒懂大纲提出背景解法拆解全流程优化创意总结 论文&#xff1a;GNN-RAG: Graph Neural Retrieval for Large Language Model Reasoning 代码&#xff1a;https://github.com/cmavro/GNN-RAG 秒懂大纲 ├── GNN-RAG【主题】…

医疗领域患者监控中的手势识别:一种深度卷积神经网络方法

这篇论文的标题是《Hand Gesture Recognition for Patient Monitoring in the Medical Field: A Deep Convolution Neural Networks Approach》&#xff0c;作者们来自印度的Chaitanya Bharathi Institute of Technology电子与通信工程系。论文主要探讨了在医疗领域&#xff0c…