워드클라우드
해쉬태그의 빈도수를 워드 클라우드로 표현해 보자.
먼저 크롤링한 데이터에서 해쉬태그만 불러옵니다.
그리고 빈도수를 확인한후 워드 클라우드로 시각화 합니다.
df['해쉬태그']
0 ['#KPGA', '#시티원골프연습장', '#레슨프로', '#부산', '#부산골프레...
1 []
2 ['#부산맛집', '#부산밥집', '#food', '#foodstagram', '#...
3 ['#부산맛집', '#신평맛집', '#영진돼지국밥', '#수육백반', '#돼지국밥']
4 []
...
2413 ['#해리단하우스', '#부산', '#해운대', '#광...
2414 []
2415 []
2416 ['#제주공항맛집', '#월정리맛집', '#서면맛집', '#강남맛집', '#홍대맛집...
2417 ['#휴무N출사', '#뭉게뭉게구름............', '#감서...
Name: 해쉬태그, Length: 2418, dtype: object
df 데이터 프레임에서 해쉬태그 컬럼을 살펴보면 한 게시글의 해쉬태그가 문자열 형태로 저장 돼있는것을 알 수있다.
슬라이싱과 split() 함수를 통해 각 해쉬태그를 추출한뒤, 통합하여 하나의 리스트에 저장하자.
해쉬태그 = []
for 해쉬 in df['해쉬태그']:
ex = 해쉬[2:-2].split("', '")
for 태그 in ex:
해쉬태그.append(태그)
해쉬태그
['#KPGA',
'#시티원골프연습장',
'#레슨프로',
'#부산',
'#부산골프레슨',
'#부산골프연습장',
'#대연동골프레슨',
'#해운대골프레슨',
'#서면골프레슨',
'#필드레슨',
'#개인레슨',
...
'#semas_youthjob',
'#동래시장수제가방',
'#수제가방',
'#수제천가방',
'#에코백',
'#친환경가방',
'#아기자기한',
'#동래소품',
'#동래시장소품',
'#동래시장유명한곳',
'#동래시장맛집',
'#부산',
...]
from collections import Counter
해쉬태그_빈도수 = Counter(해쉬태그)
해쉬태그_빈도수
Counter({'#KPGA': 1,
'#시티원골프연습장': 1,
'#레슨프로': 1,
'#부산': 222,
'#부산골프레슨': 1,
'#부산골프연습장': 1,
'#대연동골프레슨': 1,
'#해운대골프레슨': 1,
'#서면골프레슨': 1,
'#필드레슨': 1,
'#개인레슨': 1,
...
'#울산속눈썹': 1,
'#충장로': 2,
'#유튜버': 1,
'#팔로워이벤트': 2,
'#범계네일': 1,
'#눈썹반영구': 4,
'#자연눈썹': 1,
'#술집홍보': 1,
'#명인밥상송파구': 1,
'#한정식맛집': 1,
'#반찬맛집': 7,
'#돌솥밥맛집': 1,
'#순진남_송파맛집': 1,
...})
# 불필요한 해쉬태그를 제거.
stopwords = ['','#부산데이트','#부산여행','#일상', '#선팔', '#부산','#먹스타그램', '#데이트', '#일상','#좋아요','#럽스타그램','#소통', '#맞팔','#부산맛집','#부산술집','#부산카페','#서울대','#교대','#부산호텔','#부산핫플']
해쉬태그_최종 = []
for tag in 해쉬태그:
if tag not in stopwords:
if len(tag)<10:
해쉬태그_최종.append(tag)
해쉬태그_최종 = Counter(해쉬태그_최종)
해쉬태그_최종.most_common(20)
[('#해운대', 101),
('#서면맛집', 86),
('#부산', 83),
('#해운대맛집', 81),
('#광안리', 72),
('#부산맛집추천', 71),
('#일상', 70),
('#서면', 70),
('#좋반', 62),
('#맛스타그램', 58),
('#좋아요반사', 56),
('#데이트코스', 56),
('#데일리', 55),
('#daily', 55),
('#busan', 53),
('#소통', 47),
('#ootd', 47),
('#좋아요', 47),
('#데이트그램', 47),
('#여행', 46)]
워드 클라우드 그리기
이제 워드 클라우드를 그릴 건데 밑에 갈메기 모양으로 그려서 부산을 대표한다는 의미를 내포 해보자.
#워드클라우드 라이브러리 불러오기
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import platform
font_path = "c:/Windows/Fonts/malgun.ttf"
import numpy as np
from PIL import Image
from wordcloud import STOPWORDS
busan_mask=np.array(Image.open('busan.png'))
busan_mask
array([[[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255],
...,
[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255]],
[[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255],
...,
[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255]],
[[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255],
...,
[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255]],
...,
[[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255],
...,
[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255]],
[[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255],
...,
[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255]],
[[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255],
...,
[255, 255, 255, 255],
[255, 255, 255, 255],
[255, 255, 255, 255]]], dtype=uint8)
wc = WordCloud(font_path=font_path,
background_color="black",
max_words=150,
relative_scaling=1,
mask=busan_mask,
stopwords=stopwords)
wc = wc.generate_from_frequencies(해쉬태그_최종)
plt.figure(figsize=(30,10))
plt.imshow(wc,interpolation='bilinear')
plt.axis=('off')
plt.show()
갈메기 모양이 생각보다 잘 나오지 않아서 아쉬움이 크다. ^^ ;;
배경 색을 흰색으로 해도 이상하다 .
그리고 전처리 과정이 조금 아쉬운거 같다..
아무래도 관련없는 해쉬태그를 많이 다는 사람이 많기 떄문에 발생하는 문제인거 같다.
'데이터 분석 > 토이프로젝트' 카테고리의 다른 글
transformer를 활용한 한-영 번역 모델(pytorch) (2) | 2022.01.21 |
---|---|
토이 프로젝트 - foilum을 이용한 지도 시각화 (0) | 2020.08.27 |
토이프로젝트 - 인스타그램 크롤링 (2) | 2020.08.27 |
토이프로젝트 - 인스타그램 (0) | 2020.08.27 |