텍스트 기반 워드클라우드(WordCloud) & 가로 막대 차트 생성하기 (Windows 버전)
📌 텍스트 기반 워드클라우드 & 가로 막대 차트 생성하기 (Windows 버전)
데이터 분석을 하다 보면 텍스트 데이터를 효과적으로 시각화할 방법이 필요할 때가 많습니다. 특히, 워드클라우드(WordCloud)와 가로 막대 차트(Horizontal Bar Chart) 는 텍스트에서 중요한 키워드를 강조하는 데 유용합니다. 이번 글에서는 Python을 활용하여 워드클라우드와 가로 막대 차트를 생성하는 방법을 설명하겠습니다.
[연습용 데이터]
1️⃣ 라이브러리 준비
우선 필요한 라이브러리를 설치하고 가져옵니다.
import pandas as pdnfrom konlpy.tag import Oktnfrom collections import Counternfrom wordcloud import WordCloudnimport matplotlib.pyplot as pltnimport seaborn as sns🔹 pandas → CSV 데이터를 다루기 위해 필요
🔹 konlpy.tag.Okt → 한글 형태소 분석을 위한 라이브러리
🔹 collections.Counter → 단어 빈도를 계산하는 데 사용
🔹 wordcloud.WordCloud → 워드클라우드 생성을 위한 라이브러리
🔹 matplotlib.pyplot → 데이터 시각화 도구
🔹 seaborn → 가로 막대 차트를 더 보기 좋게 꾸미기 위해 사용
2️⃣ 불용어 처리 및 데이터 불러오기
워드클라우드를 만들 때 불필요한 단어(불용어, stopwords) 를 제거하는 것이 중요합니다. 보통 자주 등장하지만 의미가 없는 단어(예: “그리고”, “하지만”)를 제외하면 더 의미 있는 결과를 얻을 수 있습니다.
| # 불용어 리스트 파일 경로 설정 stopwords_file_path = ‘stopwords-ko.txt’ # 불용어 리스트 로드 with open(stopwords_file_path, ‘r’, encoding=’utf-8′) as file: stopwords = file.read().splitlines() |
이제 우리가 분석할 CSV 데이터를 불러옵니다.
df = pd.read_csv("WordCloud.csv")CSV 파일에는 주로 텍스트 데이터(예: 댓글, 리뷰, 피드백 등) 가 포함되어 있어야 합니다.
3️⃣ 텍스트 전처리 및 명사 추출
한글 텍스트를 분석하기 위해서는 형태소 분석기(Okt) 를 사용하여 명사만 추출하는 것이 일반적입니다.
| # 형태소 분석기 객체 생성 okt = Okt() # 명사 추출 및 불용어 제거 nouns = [noun for comment in df[‘Comments’] if pd.notnull(comment) for noun in okt.nouns(comment) if noun not in stopwords] # 단어 빈도수 계산 word_counts = Counter(nouns) |
이제 우리가 분석한 텍스트에서 가장 많이 등장한 단어들을 쉽게 확인할 수 있습니다.
4️⃣ 워드클라우드 생성
이제 본격적으로 워드클라우드 를 생성해봅니다.
# 한글 폰트 경로 설정 (Windows 사용자의 경우)
font_path = 'C:/Windows/Fonts/malgun.ttf'
# 워드클라우드 생성 및 시각화
wordcloud = WordCloud(font_path=font_path, background_color='white',
colormap='Pastel1', width=800, height=800,
max_words=200).generate_from_frequencies(word_counts)
plt.figure(figsize=(10, 6))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()📌 font_path는 한글 폰트 경로를 설정해야 합니다. Windows에서는 malgun.ttf (맑은 고딕)가 일반적이며, Mac 사용자는 AppleGothic.ttf 등을 사용할 수 있습니다.

5️⃣ 가로 막대 차트 생성
워드클라우드만으로는 단어별 빈도를 정확히 파악하기 어려울 수 있기 때문에, 수치적으로 비교할 수 있는 가로 막대 차트도 함께 만들겠습니다.
# 상위 20개 단어 추출
top_words = word_counts.most_common(20)
words, counts = zip(*top_words)
# 가로 막대 차트 그리기
plt.figure(figsize=(12, 6))
sns.barplot(x=counts, y=words, palette="coolwarm")
plt.xlabel("단어 빈도수")
plt.ylabel("단어")
plt.title("가장 많이 등장한 단어 Top 20")
plt.show()📌 most_common(20)을 사용하여 상위 20개 단어만 추출하여 차트로 표현했습니다.

🔥 최종 결과
위의 코드들을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
1️⃣ 워드클라우드 – 텍스트에서 중요한 단어들을 한눈에 볼 수 있음
2️⃣ 가로 막대 차트 – 단어 빈도를 숫자로 비교 가능
이제 여러분의 데이터에 적용해서 텍스트 데이터 분석을 효과적으로 시각화해보세요! 😊