안녕하세요.
오늘은 파이썬을 활용하여 대표적인 시각화 방법인 워드 클라우드를 생성하는 방법에 대해 알아보겠습니다.
파이썬 워드 클라우드 (WordCloud) 설명 및 예시
▣ 파이썬 WordCloud
중요한 단어나 키워드를 직관적으로 보여주는 시각화 도구를 파이썬에서 사용할 수 있는 패키지
- 워드클라우드를 예쁘게 그리고 싶다면, stylecloud 패키지를 사용하거나 wordcloud 함수에서 색상이나 단어 크기를 조절하면 됨.
▣ 워드 클라우드 생성해보기
: 예시 데이터 Naver_Opinions
2022.06.04 - [Programming/Python] - 파이썬 네이버 종목토론방 크롤링
- 네이버 종목토론방의 글들을 리스트화시켜서 워드 클라우드 생성해보기.
## 네이버 종목토론방 크롤링 함수
import requests
import pandas as pd
from bs4 import BeautifulSoup
def NS_users_crawler(codes, page):
# User-Agent 설정
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'}
result_df = pd.DataFrame([])
n_ = 0
for page in range(1, page):
n_ += 1
if (n_ % 10 == 0):
print('================== Page ' + str(page) + ' is done ==================')
url = "https://finance.naver.com/item/board.naver?code=%s&page=%s" % (codes, str(page))
# html → parsing
html = requests.get(url, headers=headers).content
# 한글 깨짐 방지 decode
soup = BeautifulSoup(html.decode('euc-kr', 'replace'), 'html.parser')
table = soup.find('table', {'class': 'type2'})
tb = table.select('tbody > tr')
for i in range(2, len(tb)):
if len(tb[i].select('td > span')) > 0:
date = tb[i].select('td > span')[0].text
title = tb[i].select('td.title > a')[0]['title']
views = tb[i].select('td > span')[1].text
pos = tb[i].select('td > strong')[0].text
neg = tb[i].select('td > strong')[1].text
table = pd.DataFrame({'날짜': [date], '제목': [title], '조회': [views], '공감': [pos], '비공감': [neg]})
result_df = result_df.append(table)
return result_df
- 최근 핫한 종목인 에코프로(A086520)의 종목토론방 글들을 크롤링하고 하나의 텍스트로 처리함.
## 데이터 뽑아보기
# 종목명: 에코프로, 페이지수: 30
data = NS_users_crawler("086520", 30)
text = ' '.join(data['제목'].tolist())
- WordCloud 함수를 활용하여 뽑아낸 텍스트를 바탕으로 워드 클라우드 생성하고 matplotlib의 plt로 이미지 활성화하기.
## 워드 클라우드 생성
import matplotlib.pyplot as plt
from wordcloud import WordCloud
wc = WordCloud(font_path='malgun',
background_color = 'white',
width=400, height=400, scale=2.0, max_font_size=250)
wc.generate(text)
# 이미지 생성
plt.imshow(wc, interpolation = 'bilinear')
plt.axis("off")
: 워드 클라우드 생성 결과
반응형
'Programming > Python' 카테고리의 다른 글
[Python] 클립보드 Pyperclip (복사/붙여넣기) (2) | 2023.03.26 |
---|---|
[Python] 지수와 제곱 표현하기 (7) | 2023.03.25 |
[Python] GPT & 구글 검색으로 보고서 쓰기 (2) | 2023.02.25 |
[Python] 구글 검색 API 활용하기 (4) | 2023.02.12 |
[Python] 파일명 일괄 변경하기 (2) | 2022.12.25 |
댓글