본문 바로가기
클래스 리뷰/23.03 프리온보딩 데이터 챌린지

코랩에서 Word Cloud 시각화

by 직_장인 2023. 3. 17.

23년 3월 6일

총 4회 교육 중 1번째 시간으로 아래 세가지 주제로 진행되었다.

1. 빅쿼리 시작하기

2. 쿼리생성, 코랩 연동

3. Word Cloud 시각화

 

하나씩 정리해보자.

 

1. 패키지 설치

이전에 코랩(Colab)으로 데이터를 불러오는 것 까지 해봤다.

이제 코랩에서 패키지를 설치한다.

!pip install krwordrank

라이브러리를 입력한다.

import pandas as pd
import matplotlib.pyplot as plt
from krwordrank.word import KRWordRank
import numpy as np

준비는 끝났다.

 

2. 전처리

시각화를 하기에 앞서, 데이터가 문제는 없는지 확인하고 처리하는 단계이다.

실습자료이기 때문에 확인과정은 생략하고 약간의 처리만 한다.

df = results.copy() # 빅쿼리(BigQuery)에서 불러온 데이터가 result 변수로 되어있는데, 이를 df변수로 복사
df['responsibilities'].replace(np.nan, '없음', inplace=True) # df.fillna('없음', inplace=True) 이렇게 수정하는 것도 가능
df['requirements'].replace(np.nan, '없음', inplace=True)
df['preference'].replace(np.nan, '없음', inplace=True)
df.head()

출력 결과

 

주요업무(responsibilities)를 시각화 하려고 한다.

texts = df['responsibilities'].values.tolist() # 시각화 하기 위해 respons.. column의 값(values)들을 리스트 형태로(tolist) 만든다.
print(texts)

출력결과

 

KRWordRank를 이용하여 keyword, rank를 추출한다.

KRWordRank는 비지도학습 기반으로 단어나 키워드를 추출하는 라이브러리이다.

이를 이용하여 자주 등장하는 단어를 뽑아본다.

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(texts, beta, max_iter) # 단어 추출 함수, 빈도 rank, 그래프를 output한다.

for word, r in sorted(keywords.items(), key = lambda x:x[1], reverse = True)[:30]: #자주 반복되는 단어 top 30를 출력한다.
    print((word, r))

출력 결과

데이터, 분석과 같은 단어는 이미 너무나 당연하게 중요한걸 알고있기 때문에 제외한다.

and, to와 같은 단어는 의미가 없기 때문에 제외한다.

 

이런식으로 불필요한 데이터를 제외하고 다시 추출한다.

stopwords = {'대한','분이면', '있습니다.','분석','데이터', '위한', '이를','and', '통해', '통한','있는','the','to','in','for','of'}  # 제외할 단어를 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개만 본다.

for word, r in sorted(passwords.items(), key = lambda x:x[1], reverse = True)[:30]: 
    print((word, r))

출력 결과

3. 시각화

시각화를 하려면 한글폰트를 적용해야 한다.

코랩에서 한글폰트를 사용하려면 아래와 같이 셋팅해야 한다.

(출처는 넬티아님 블로그로, 아래에 링크를 걸어두었다.)

import matplotlib as mpl
import matplotlib.pyplot as plt
 
%config InlineBackend.figure_format = 'retina'
 
!apt -qq -y install fonts-nanum
 
import matplotlib.font_manager as fm
fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=9)
plt.rc('font', family='NanumBarunGothic')

 

이제 Word Cloud시각화를 해본다.

참고로, Word Cloud는 태그(Tag)들을 분석하여 중요도에 따라 시각적으로 표시한 것이다. 중요할수록 크게 표시된다.

from wordcloud import WordCloud, ImageColorGenerator

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)

출력 결과

이렇게 데이터 분석 채용공고의 주요업무를 시각화 해보았다.

서비스, 비즈니스, 다양한 등의 단어가 보인다.

서비스와 비즈니스 관점에서 데이터 분석을 하는 것이 중요해보인다.

 

 

 

 

+) 한글폰트 셋팅 출처

https://blog.naver.com/PostView.nhn?blogId=dsz08082&logNo=222021179448&redirect=Dlog&widgetTypeCall=true&directAccess=false

댓글