파이썬으로 데이터 분석하기 (7)

Stella Park·2021년 7월 7일
0

PYTHON

목록 보기
7/14
post-thumbnail

수강데이터, 워드 클라우드 만들기
여러개의 텍스트 파일에서 모든 내용을 특수기호가 없도록 깔끔하게 불러와서 보여주고, 그에 대한 워드 클라우드를 만들어보자

(1) 클라우드 설치 및 필요한 패키지 불러오기

conda install -c conda-forge wordcloud
import numpy as np
from PIL import Image
from wordcloud import WordCloud
import matplotlib.pyplot as plt

(2) 파일에서 txt 를 불러와서 실행시킨 다음, 깔끔하게 정리하기

text = open('./data/Sequence_01.txt',encoding='utf-8-sig')
text = text.read()
text

text = text.replace('\n'," ") #불필요한 /n 을 띄어쓰기로 대체
text

(3) text파일 14개 모두 불러오기

result = ""

for number in range(1,15): #range는 앞의 숫자부터 뒤의 숫자 미만까지의 범위
    index = '{:02}'.format(number) #숫자를 01, 02 형태로 만들기
    filename="Sequence_"+index+".txt" #파일이름형식에 맞게 index 넣어주기
    text=open('./data/'+filename, 'r', encoding='utf-8-sig') #그 파일이름을 사용하여 파일열기
    result += text.read().replace("\n"," ") 
    #파일을 읽을 때, 불필요한 문자열은 띄어쓰기로 바꾸고, 내용이 덮어써지지 않고 계속 추가될수 있도록, 비어있는 result와 for 문을 사용하기.

result

(4) 특수문자 없애기

import re
pattern = '[^\w\s]'
text = re.sub(pattern=pattern, repl='', string=result)
text

(5) 워드 클라우드 만들기

import matplotlib.font_manager as fm

for f in fm.fontManager.ttflist:
    if 'Gothic' in f.name:
        print(f.fname) #적용될 폰트 경로 찾기

font_path = 'C:\Windows\Fonts\malgun.ttf' #한글 표시가능한 폰트
wc = WordCloud(font_path=font_path, background_color='white')
wc.generate(text)

plt.figure(figsize=(50,50)) #그려주기
plt.axis("off")
plt.imshow(wc)
plt.show()

(6) 특정 이미지의 모양을 따서 워드 클라우드 만들어보기

mask = np.array(Image.open('./data/sparta.png')) #원하는 이미지 불러오기
wc = WordCloud(font_path=font_path, background_color="white", mask=mask)
wc.generate(text)

f = plt.figure(figsize=(50,50))
f.add_subplot(1,2, 1) #불러온 이미지 그려주고
plt.imshow(mask, cmap=plt.cm.gray)
plt.title('Original Stencil', size=40)
plt.axis("off")
f.add_subplot(1,2, 2) #이미지에 맞춘 클라우드 그려주기
plt.imshow(wc, interpolation='bilinear')
plt.title('Sparta Cloud', size=40)
plt.axis("off")
plt.show()

(7) 원본이미지를 제외한 워드 클라우드만 보여주고 저장하기

mask = np.array(Image.open('./data/sparta.png'))
wc = WordCloud(font_path=font_path, background_color="white", mask=mask)
wc.generate(text)
f = plt.figure(figsize=(50,50))
plt.imshow(wc, interpolation='bilinear')
plt.title('나만의 워드 클라우드', size=40)
plt.axis("off")
plt.show()
f.savefig('./data/myWordCloud.png') #현재위치에 저장

계속 쓰다보면 익숙해지겠지!! 복습 또 복습

profile
코딩 0살

0개의 댓글

관련 채용 정보