시각화 후 조금 더 분석해보았다.
1. 데이터 크기
# 이 부분은 앞에서 사용한 그대로 가져온다.
!pip install krwordrank
import pandas as pd
import matplotlib.pyplot as plt
from krwordrank.word import KRWordRank
import numpy as np
df.info()
데이터 크기는 388개이다.
결측치는 없다.
사용할 수 있는 정보는, 주요업무, 지원자격, 우대사항, 연차 정보가 있다.
숫자데이터가 직관적으로 파악 및 구분하기 편하기 때문에 연차 정보부터 사용한다.
2. 최소 연차
# 최소연차인 annual_from 데이터를 살펴보면,
plt.bar(df.annual_from.value_counts().index, df.annual_from.value_counts().values)
# x축 눈금 모두 표시
list_x = [0,1,2,3,4,5,6,7,8,9,10]
plt.xticks(list_x)
# 축 설명
plt.xlabel('annual_from', )
plt.ylabel('company count')
plt.show()
주니어 레벨(0~3년)이 많은 것을 알 수 있다.
df_under_3year = df[df.annual_from <= 3]
under_3year_percent = df_under_3year.shape[0] / df.shape[0] * 100
print('최소 연차 3년 이하 비율 :', round(under_3year_percent, 2), '%')
df_over_3year = df[df.annual_from > 3]
over_3year_percent = df_over_3year.shape[0] / df.shape[0] * 100
print('최소 연차 3년 초과 비율 :', round(over_3year_percent, 2), '%')
ratio = [under_3year_percent, over_3year_percent]
labels = ['Junior', 'Senior']
explode = [0.05, 0.05] # 중심에서 offset 정도
colors = ['pink', 'skyblue'] # 색상 지정
plt.pie(ratio, labels = labels, explode = explode, colors = colors, autopct='%.2f%%')
plt.show()
비율로는 대략 이정도.
3. 주니어, 시니어 별 시각화
def MakeWordcloud(df, col):
list_df_col = df[col].values.tolist() # 시각화 하기 위해 respons.. column의 값(values)들을 리스트 형태로(tolist) 만든다.
wordrank_extractor = KRWordRank(min_count =3 , # 단어 최소 빈도수
max_length = 15, # 단어 캐릭터 길이의 최댓값
verbose = True)
beta = 0.85 # PageRank의 decaying factor beta
max_iter = 10
keywords, rank, graph = wordrank_extractor.extract(list_df_col, beta, max_iter) # 단어 추출 함수, 빈도 rank, 그래프를 output한다.
if col == 'responsibilities':
stopwords = {'대한','분이면', '있습니다.','분석','데이터', '위한', '이를','and', '통해', '통한','있는','the','to','in','for','of'} # 제외할 단어를 stopwords 변수로 지정한다.
elif col == 'requirements':
stopwords = {'대한','분이면', '있습니다.','분석','데이터', '위한', '이를','and', '통해', '통한','있는','the','to','in','for','of', '이상', '등)', '있으신'} # 적절히 바꿔서 필터링하면 된다.
elif col == 'preference':
stopwords = {'대한','분이면', '있습니다.','분석','데이터', '위한', '이를','and', '통해', '통한','있는','the','to','in','for','of', '이상', '등)', '있으신'}
else:
stopwords = {}
passwords = {word:score for word, score in sorted(
keywords.items(), key=lambda x:-x[1])[:100] if not (word in stopwords)} #stopwords는 제외한 keywords 탑 100개만 본다.
wc = WordCloud(font_path = fontpath, width = 1000, height = 1000, scale = 3, max_font_size = 250, background_color = 'white')
gen = wc.generate_from_frequencies(passwords)
plt.figure()
plt.imshow(gen)
함수로 만들어준다.
3-1. 주요업무
MakeWordcloud(df_under_3year, 'responsibilities')
MakeWordcloud(df_over_3year, 'responsibilities')
주요업무에서는,
주니어 레벨에서 인사이트, 기반이라는 단어가 보인다.
시니어 레벨에서 도출, 의사결정, KPI 등의 성과중심 단어가 더 보인다.
3-2. 자격요건
MakeWordcloud(df_under_3year, 'requirements')
MakeWordcloud(df_over_3year, 'requirements')
자격요건은 공통적으로 SQL, 경험을 요구한다.
3-3. 우대사항
MakeWordcloud(df_under_3year, 'preference')
MakeWordcloud(df_over_3year, 'preference')
우대사항에는 공통적으로 Tableau, 시각화 단어가 돋보인다.
주니어 레벨에서는 활용 경험을 보는 것 같다.
시니어 레벨에서는 구축, Fit이 보이는데 실제 구현 능력과 회사와 잘 맞는지를 보는 것 같다.
이렇게 간단한 시각화를 해보았다.
'클래스 리뷰 > 23.03 프리온보딩 데이터 챌린지' 카테고리의 다른 글
A/B 테스트 (0) | 2023.07.15 |
---|---|
프로덕트 개발 사이클, 그로스해킹, AARRR (0) | 2023.03.30 |
코랩에서 Word Cloud 시각화 (0) | 2023.03.17 |
빅쿼리 쿼리 생성, 코랩 연동 (0) | 2023.03.12 |
빅쿼리 시작하기 (0) | 2023.03.11 |
댓글