conda에 wordcloud 설치하기
아나콘다 프롬프트를 켜고 다음의 명령어를 입력합니다.
- conda install -c conda-forge wordcloud
데이터 가공하기
DevType은 앞서 파악했듯 두개 이상의 값을 선택 할 수 있는 질문이었습니다. 복수 개의 값의 구분자는 세미콜론(;)입니다. 세미콜론을 공백으로, 또 콤마(,)도 공백으로 변경합니다. 즉 전체 문자열 내에 단어를 공백으로 구분하는 단 하나의 문자열을 만드려고 하고 있습니다.
temp_words = survey_raw_df['DevType'].dropna()
temp_words = temp_words.str.replace(';',' ').str.replace(',', ' ')
문자열 값을 갖는 Series 내의 값을 단 하나의 문자열로 만들기 위해서 join() 메서드를 활용했습니다.
결과적으로 words라는 변수에 Series에 있는 모든 단어를 공백이란 구분자를 통해 단 하나의 문자열로 합쳤습니다.
words = ' '.join(temp_words)
아래의 코드를 통해 word cloud를 만들어봅니다.
from wordcloud import WordCloud
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 불러오기
survey_raw_df = pd.read_csv('C:/python/data/survey_results_public.csv', index_col = 'ResponseId')
# 데이터 가공
temp_words = survey_raw_df['DevType'].dropna()
temp_words = temp_words.str.replace(';',' ').str.replace(',', ' ')
words = ' '.join(temp_words)
# 한글이 포함되었다면 한글 폰트를 지정해야한다.
# font_path = ['폰트 경로']
# max_font_size = 60 --> 최대 글자 크기를 지정한다
wc = WordCloud(collocation_threshold= int(1e6),
width = 800, height = 400,
background_color = 'lightgrey').generate(words)
plt.figure(figsize = (16,8))
# x, y축을 그리지 않습니다.
plt.axis("off")
# grid lines를 그리지 않습니다.
plt.grid(False)
plt.imshow(wc)
plt.show()
word cloud 그림 저장하기
아래의 명령어를 통해 저장 가능합니다. 다른 이미지 확장자(jpg, gjf)도 사용가능합니다.
wc.to_file('DevType.png')