본문 바로가기
Programming/Python

[Python] 워드 클라우드 시각화 (WordCloud)

by 코딩하는 금융인 2023. 3. 22.

안녕하세요.

오늘은 파이썬을 활용하여 대표적인 시각화 방법인 워드 클라우드를 생성하는 방법에 대해 알아보겠습니다.

 

 파이썬 워드 클라우드 (WordCloud) 설명 및 예시

▣ 파이썬 WordCloud

중요한 단어나 키워드를 직관적으로 보여주는 시각화 도구를 파이썬에서 사용할 수 있는 패키지

- 워드클라우드를 예쁘게 그리고 싶다면, stylecloud 패키지를 사용하거나 wordcloud 함수에서 색상이나 단어 크기를 조절하면 됨.

 

▣ 워드 클라우드 생성해보기

: 예시 데이터 Naver_Opinions

2022.06.04 - [Programming/Python] - 파이썬 네이버 종목토론방 크롤링

 

파이썬 네이버 종목토론방 크롤링

오늘은 파이썬을 활용하여 네이버 증권의 종목토론방의 글들을 크롤링해보겠습니다. 데이터 탐색 & 크롤링 작업 1. 웹사이트 탐색하기 ▷ 사이트 바로가기 : https://finance.naver.com/item/board.naver?code=

codingspooning.tistory.com

- 네이버 종목토론방의 글들을 리스트화시켜서 워드 클라우드 생성해보기.

## 네이버 종목토론방 크롤링 함수
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")

 

: 워드 클라우드 생성 결과

파이썬 워드 클라우드

 

반응형

댓글