Data Science/Kaggle 작업

[데이터 시각화] Job placement dataset (피벗, 차트)

lko9911_ 2025. 11. 19. 15:40
 

Job placement dataset

US Bachelor's Graduates: Placement Trends

www.kaggle.com

 

데이터 라이센스 정보

더보기

 

 본 데이터 셋은 Apache License 2.0로 배포되고 있으며 본 게시물에서는 해당 라이선스 준수 하에 작업했습니다.
급여는 각 요서별 평균을 의미하게 표현합니다.

 

- 문제가 있으면 비공개

 

라이브러리 및 데이터 불러오기

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

file_name = 'C:/kaggle_T/job_placement.csv'
data = pd.read_csv(file_name)

 

 

years_of_experience 칼럼에 결측치가 1개 이기 때문에 하나의 행만 지워주고, salary의 패턴 분석에 필요 없을 것 같은 id와 name은 지워줍니다.

 

데이터 전처리 작업

 

데이터를 파악할 때 계획했던 부분을 작업합니다.

 

data_pre = data.dropna() # 결측치 행 제거
data_pre = data_pre[data_pre['placement_status'] == 'Placed'] # Placed 상태만 가져가기
data_pre = data_pre.drop(['name','id','degree'],axis=1) # 필요없는 칼럼 제거

 

 

칼럼의 타입은 변경할 필요가 없기 때문에 그대로 둡니다. 만약 날짜데이터가 존재한다면 Datetime으로, 숫자형 데이터가 object가 되어있다면 형변환을 해줘야 하지만 이에 해당하지 않은 데이터입니다.

 

 

피벗 테이블과 차트

 

 

종속변수(salary)와 독립변수(나머지 칼럼)를 분리한 후 피벗테이블을 만들고, 이 피벗테이블을 바그래프로 표현하겠습니다.

 

# 칼럼 분리
cols = data_pre.columns

for col in cols:
    globals()[col] = data_pre[col]
    
cols.drop('salary')

 

급여의 "평균"으로 표현하는 게 데이터 분석상 의미가 크다고 판단되므로 피벗테이블의 mean을 사용해 표현합니다.

 

pivot_gender = pd.pivot_table(data_pre, index='gender', values='salary',aggfunc='mean')
round(pivot_gender,2)

 

 

 

차트로 표현하면 아래와 같습니다.

 

하지만 바그래프는 두 칼럼의 "비교"를 목적으로 표현했지만, 차이가 크지 않아 그래프를 보면 누가 더 큰지 모르는 문제가 발생합니다.

 

프로젝트의 목적에 부합하지 않기 때문에 값의 비교를 위해 표준화를 시켜줍니다. (임의의 표준화지 정규화 같은 과정은 아닙니다.)

 

 

위와 같이 차트를 표현하는 데 주의점이 있습니다. "대소비교"를 위한 차트지 통계적인 시각화에는 최악의 그래프라고 볼 수 있습니다. 

 

 

예를 들어 실제 두 칼럼의 값은 유의미한 차이라고 볼 수 없지만 대소비교를 위해 스케일링을 해준 것인데 위 자료를 보고 여성이 남성보다 급여가 많이 차이 나게 높다고 오인할 여지가 있는 차트입니다.

 

 

나머지 칼럼도 같은 작업을 반복해 줍니다.

 

나이별 급여 차트

 

 

전공별 급여 그래프

 

 

 

 

대학 이름별 급여 차트

 

 

학점별 급여 차트

 

 

경력별 급여 차트

 

 

 

분석

 

 

gpa(학점), 경력이 높을수록 급여도 높아질 거라고 생각했는데, 예상대로의 결과가 나왔고, 24살 때 급여평균이 가장 높았습니다.

 

또한 Georgetown University 학교에서 가장 높은 salary를 보이고, Northwestern University 학교에서 가장 낮은 salary를 가집니다.

 

max_name = pivot_college_name.idxmax().iloc[0]
max_salary = pivot_college_name.max().max()
min_name = pivot_college_name.idxmin().iloc[0]
min_salary = pivot_college_name.min().min()

print("Top (college_name) :",max_name)
print("Top_salay (college_name) :",max_salary)
print("Bottom (college_name) :",min_name)
print("Bottom_salay (college_name) :",min_salary)

 

전공도 위와 같이 분석할 수 있습니다.

 


정리

 

각 요소의 급여별 경향성 분석을 위한 데이터 시각화를 해보았습니다. 패턴, 경향성을 분석하기 위한 자료이기 때문에 각 값들을 보기 좋게 변환시켰습니다. 

 

하지만 각 자료의 통계적인 의미로 차트를 분석하면 오해석 할 여지가 발생하므로 이때는 바그래프 보다는 boxplot으로 하는 게 더 좋습니다.

 

 

캐글 : https://www.kaggle.com/datasets/mahad049/job-placement-dataset/code

 

Job placement dataset

US Bachelor's Graduates: Placement Trends

www.kaggle.com

 

깃허브 : https://github.com/lko9911/Kaggle/blob/master/EDA/EDA-of-job-placement-pivot-chart.ipynb

 

구글 이메일 : lko991111@gmail.com