이직 데이터

이예나·5일 전

import os
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
\
plt.rcParams['font.family'] = 'AppleGothic'
plt.rcParams['axes.unicode_minus'] = False

컬럼뜻분석 관점
OverTime야근 여부야근자가 더 많이 이직하는가
MonthlyIncome월 소득저소득자가 더 많이 이직하는가
YearsSinceLastPromotion마지막 승진 후 경과 연수승진 정체가 이직과 관련 있는가
WorkLifeBalance워라밸 만족도, 1~4점워라밸이 나쁠수록 이직하는가
Age, DistanceFromHome나이, 출퇴근 거리수치형 배경 변수
JobRole, Department직무, 부서조직·직무별 이직 차이 확인 가능
JobSatisfaction, EnvironmentSatisfaction직무·환경 만족도만족도와 이직의 관계 확인 가능

.describe()
: 수치형 변수의 기초 통계량을 보여줌
\
count: 값이 있는 데이터 개수
mean: 평균
std: 표준편차, 값들이 평균에서 얼마나 퍼져 있는지
min: 최소값
25%, 50%, 75%: 사분위수
max: 최대값

overtime_attrition = (pd.crosstab(hr_df["OverTime"],hr_df["Attrition"], normalize="index") * 100)
{야근 여부별 이직·잔류 인원수 : pd.crosstab(hr_df["OverTime"], hr_df["Attrition"])}
pd.crosstab()에서 각 행(row)을 기준으로 비율을 계산하라는 뜻

overtime_rate = hr_df.groupby("OverTime")["Attrition"].apply(lambda x: (x == "Yes").mean() * 100)
1. groupby("OverTime"): 야근 여부 Yes와 No로 직원을 나눔
2. ["Attrition"]: 각 그룹의 이직 여부만 선택
3. (x == "Yes"): 이직자면 True, 잔류자면 False
4. .mean(): True를 1, False를 0으로 계산해 평균을 구함
5. \* 100: 백분율로 변환

누적 막대그래프

  • stacked=False (일반 막대 그래프)

  • stacked=True (누적 막대 그래프)

  • kind="barh": 가로 막대 그래프

  • kind="line": 선 그래프

  • kind="pie": 파이 그래프

  • kind="box": 상자 그림

  • Attrition: 범주형

  • MonthlyIncome: 수치형

.agg(), .aggregate(): 데이터프레임이나 그룹화된 데이터에 여러 개의 집계 함수(평균, 합계, 최댓값 등)를 한 번에 적용할 수 있는 판다스 메서드

hr_df.info()
hr_df.describe() : 숫자형 열을 대상으로 다음 통계치를 보여줌

정규화
normalize="index"    # 행 기준
normalize="columns"  # 열 기준
normalize="all"      # 전체 기준

0개의 댓글