구민제안 데이터 시각화 (워드클라우드)

IngCoding·2022년 3월 16일
1

파이썬 #3 프로젝트

목록 보기
10/20

1. 강서구 구민제안 데이터 시각화

강서구청 구민제안 게시판의 올라온 제안제목 데이터를 
워드클라우드로 시각화해서 구민들에게 중요한 이슈가 
무엇인지 분석해보았습니다. (이전 포스팅 CSV 파일 필요)

2. 워드클라우드 코드

import pandas as pd
from konlpy.tag import Okt # 형태소분석기 : Openkoreatext
from collections import Counter # 빈도 수 세기
from wordcloud import WordCloud, STOPWORDS # wordcloud 만들기
import matplotlib.pyplot as plt # 시각화
import matplotlib as mp

df = pd.read_csv('gangseo.csv')
script = df['title']
script.head(2)
0    화곡동 1041-4호 막다른골목~일방로, 동양하우징 건물 우측 전봇대에 후사 보조경...
1                                    곰달래로35길 보행로 설치 제안
Name: title, dtype: object
script.to_csv('word.txt', encoding='utf-8-sig')
text = open('word.txt', encoding='utf-8-sig').read()
spwords=set(STOPWORDS)
# 형태소 분석기를 통해 명사만 추출하는 함수
def token_konlpy(text):
    okt=Okt()
    return [word for word in okt.nouns(text) if len(word)>1] # 1글자 명사는 제외
# 명사추출
noun = token_konlpy(text)
len(noun)
4854
# 중복명사 단일화
noun_set = set(noun)
len(noun_set)
1648
# 빈도수 상위 20개 까지 딕셔너리 형태로 자료 변환 {'noun':'key'}
word = dict(count.most_common(20))
# 추출된 명사들의 빈도수 카운트
# 단순 중복 단어 제외
count = Counter(noun)
count.pop('강서구')
count.pop('강서')
count.pop('구청')
count.pop('센터')
count.pop('개선')
count.pop('요청')
count.pop('처리')
count.pop('제안')
count.pop('이용')
count.pop('활용')
count.pop('시설')
count.pop('방안')
count.pop('운영')
count.pop('지역') 
count.pop('관련') 
count.pop('대한') 
count.pop('건의') 
count.pop('민원')
count.pop('서비스')
count.pop('변경')
count.pop('관리') 
count.pop('주민') 
count.pop('대하')
count.pop('실시')
count.pop('구민') 
count.pop('문제') 
14
#wordcloud 만들기
wc = WordCloud(max_font_size=200,
	font_path = 'C:\Windows\Fonts\malgun.ttf',
	stopwords=spwords, background_color="white",
    width=2000, height=500).generate_from_frequencies(word) 
    # font 경로 개별적으로 설정해야함

plt.figure(figsize = (40,40))
plt.imshow(wc)
plt.tight_layout(pad=0)
plt.axis('off')
plt.show()

profile
Data & PM

0개의 댓글