Daino's Archiving
article thumbnail
반응형

 

썸네일

 

Remind

 

이전 글에서 HR 도메인 지식을 정리하고 모델링 구축을 계획했다.

모델링에 앞서 데이터를 이해하고 문제 해결을 위한 가설을 형성하기 위해 EDA 작업이 필요하다.

 

데이터 사이언스 [Data Science] - HR - 비즈니스 사례 이해 및 모델 구축 계획

Introduction 기업에서 직원 고용 및 유지는 자본, 시간 그리고 전문 기술이 요구된다.이는 기업의 성과와 안정성에 직결되는 중요한 과제로, 효율적인 관리가 필수적입니다.최근 데이터 기반 접근

daino.tistory.com

 

 

데이터의 기본 구조 이해

 

데이터의 크기, 칼럼(변수) 이름과 데이터 타입 확인

  • info 매서드로 데이터의 타입 확인
  • 35개의 컬럼
  • 1470개의 행
  • int64(26)와 object(9) 타입으로 이루어져 있음
employee_df.info()

 

info 매서드

 

데이터 샘플 확인

  • head 매서드를 사용해 앞부분 5개의 행 출력

 

head 매서드 사용
()안의 값을 통해 출력되는 행의 개수 조절 가능

 

기술 통계량 확인

 

  • decribe 매서드를 사용하여 평균(mean), 중앙값(median), 표준편차(std), 최솟값(min), 최댓값(max) 등 기술 통계량 확인
  • number 타입만 기술 통계량을 구할 수 있기에 object 타입을 가진 9개의 칼럼을 제외한 26개의 컬럼 출력
employee_df.describe()

 

기술 통계량 확인

 

시각화

 

bool 타입 정수로 대체

  • Attrition, OverTime, Over18 -> 1과 0으로 대체
employee_df['Attrition'] = employee_df['Attrition'].apply(lambda x:1 if x == 'Yes' else 0)
employee_df['OverTime'] = employee_df['OverTime'].apply(lambda x:1 if x == 'Yes' else 0)
employee_df['Over18'] = employee_df['Over18'].apply(lambda x:1 if x == 'Y' else 0)

 

bool 타입 정수로 대체

 

결측치 시각화

  • heatmap을 사용하여 결측치 시각화
sns.heatmap(employee_df.isnull(), yticklabels= False, cbar = False, cmap = 'Blues')

 

결측치가 없는것을 알 수 있음

 

각 변수별 분포도 확인

  • 변수별 분포도를 histogram 그래프로 시각화
employee_df.hist(bins = 30 , figsize = (20, 20), color = 'r')

 

변수별 히스토그램

 

필요 없는 변수 제거

  • 하나의 변수의 값만 갖고 있는 변수(EmployeeCount, StandardHours, Over18)는 모델에 포함시킬 필요가 없기에 drop을 사용해 제거
  • 아무런 정보를 담고 있지 않은 인덱스 변수(EmployeeNumber)도 제거
employee_df.drop(['EmployeeCount', 'StandardHours', 'Over18', 'EmployeeNumber', ], axis = 1, inplace = True)

 

두 변수간 비교

  • countplot 매서드를 통해 빈도수 시각화
  • hue의 설정한 값에 따라 분류
sns.countplot(x = 'Age', hue = 'Attrition', data = employee_df)

 

나이별 이직 빈도
나이별 퇴사 빈도

 

plt.subplot(411)
sns.countplot(x = 'JobRole', hue = 'Attrition', data = employee_df)

plt.subplot(412)
sns.countplot(x = 'MaritalStatus', hue = 'Attrition', data = employee_df)

plt.subplot(413)
sns.countplot(x = 'JobInvolvement', hue = 'Attrition', data = employee_df)

plt.subplot(414)
sns.countplot(x = 'JobLevel', hue = 'Attrition', data = employee_df)

 

직군, 결혼 여부, 직무 참여도, 직무 레벨별 퇴사자 확인
직군, 결혼 여부, 직무 참여도, 직무 레벨별 퇴사자 확인

 

변수간 상관관계 분석

 

상관계수 분석

  • 각각의 변수 간의 선형 관계의 강도와 방향을 측정한다.
  • 두 변수 간의 연관관계를 수치로 쉽게 알 수 있다.
# int값만 선택
numeric_df = employee_df.select_dtypes(include=['number'])

# 상관관계 분석
correlations = numeric_df.corr()
f, ax = plt.subplots(figsize = (20, 20))
sns.heatmap(correlations, annot = True)

 

상관관계 분석
밝을수록 높은 양의 상관관계를 가진다.

 

범주형 변수와 연속형 변수의 관계 분석

  • 특정 그룹(범주)이 연속적인 특성(값)에 어떤 영향을 미치는지 파악한다.
sns.boxplot(x = 'MonthlyIncome', y = 'Gender', data = employee_df)

 

성별에 따른 월 수입 비교
성별에 따른 월 수입 비교

 

sns.boxplot(x = 'MonthlyIncome', y = 'JobRole', data = employee_df)

 

직업에 따른 월수입 비교
직군에 따른 월수입 비교

 

반응형
profile

Daino's Archiving

@Daino

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!