[데이터 엔지니어링 데브코스 2기] TIL-3주차-파트06 파이썬으로 웹 다루기(데이터 시각화)

이재호·2023년 10월 27일
0

1. Seaborn

Seaborn은 Python 라이브러리로 데이터를 시각화할 때 유용하게 사용되는 라이브러리입니다. 그리고 Seaborn은 matplotlib를 기반으로 하고 있어 matplotlib.pyplot과 함께 사용됩니다.

다음은 예시 코드입니다.

# !pip install seaborn

import seaborn as sns # 통용적으로 sns라는 약어로 사용이 됩니다.
import matplotlib.pyplot as plt

# 예시로 y = 2x의 그래프를 그려보겠습니다.
x_values = [0, 1, 2, 3, 4, 5]
y_values = [0, 2, 4, 6, 8, 10]

# 1. 꺾은선 그래프로 출력
sns.lineplot(x = x_values, y = y_values) # 꺾은선 그래프로 그리기
plt.show() # 그린 그래프 출력

# 2. 막대 그래프로 출력
sns.barplot(x = x_values, y = y_values) # 막대 그래프로 그리기
plt.show() # 그린 그래프 출력

# 3. plot의 기타 메서드
plt.figure(figsize = (width, height)) # plot 그래프의 크기를 결정합니다. 다른 plot 메서드보다 가장 먼저 작성해야 합니다.
plt.xlabel("x축의 이름")
plt.ylabel("y축의 이름")
plt.title("그래프의 이름")
plt.xlim({minimum}, {maximum}) # x축의 범위를 결정. min ~ max
plt.ylim({minimum}, {maximum}) # y축의 범위를 결정. min ~ max
예시 이미지 ( y = 2x )

1-1. 주의 사항

  • plt.figure(figsize =()) 코드를 실행할 때, plt의 다른 메서드를 연산하기 전에 가장 먼저 실행을 시켜줘야 합니다. 만약 나중에 작성한다면 빈 그래프 + 타겟 그래프로 총 2개의 그래프가 출력됩니다.

2. WordCloud와 konlpy

WordCloud는 python의 텍스트 클라우드 라이브러리로, 단어들의 빈도 수에 맞춰 해당 단어들의 크기를 조절하여 예쁘게 그려주는 기능을 가지고 있습니다.


예시 이미지 ( WordCloud )

konlpy는 한국어 형태소 분석기 라이브러리입니다. 해당 라이브러리를 이용하면 문장에서 단어들을 추출할 수 있습니다. 예) : "동해물과 백두산이 ~~" -> "동해물", "백두산", ..

다음은 애국가의 가사에서 단어들의 빈도 수를 추출하여 이를 wordcloud로 그려주는 예시 코드입니다.

# !pip install wordcloud
# !pip install konlpy

import matplotlib.pyplot as plt
from wordcloud import WordCloud # WordCloud 객체 import

from collections import Counter # 빈도 수를 카운트하기 위한 Counter 객체 import

from konlpy.tag import Hannanum # 문장에서 명사를 추출하는 형태소 분석기 Hannanum(한나눔) 객체 import

lyrics = """
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
"""

hannanum = Hannanum() # 한나눔 객체 생성
nouns = hannanum.nouns(lyrics) # 문장 lyrics로부터 nouns(명사)들을 추출
words = [noun for noun in nouns if len(noun) > 1] # 단어 길이가 1이 넘는 단어들을 words에 저장한다.

counter = Counter(words) # words에 들어있는 단어들의 빈도 수를 {"단어": 빈도 수}로 카운트한다.

wordcloud = WordCloud(
	font_path = "C:/Windows/Fonts/NGULIM.ttf", # 기본적으로 wordcloud에서 한글은 지원이 되지 않습니다.
    										   # 따라서 개인적으로 폰트 파일을 지정해줘야 합니다.
    background_color = "white",
    width = 1500,
    height = 1500
)

img = wordcloud.generate_from_frequencies(counter) # counter로부터 단어들의 빈도 수에 맞춰서 이미지 객체 생성.
plt.imshow(img) # 해당 이미지 객체 그리기.

이전 예시 이미지가 위 코드로부터 출력된 이미지입니다.

2-1. 주의사항

  • hannanum 관련 코드를 실행할 때, JVM(Java Virtual Machine) 관련 에러가 발생할 수 있습니다. 이 경우, 저는 다음과 같이 해결하였습니다.
    1. Java 설치하기.
    2. 시스템 환경 변수에서 JAVA_HOME 변수의 값을 "C:\Program Files\Java\jdk-21\bin\"으로 변경(설정)하기.
    3. 시스템 환경 변수에서 Path 변수에 "%JAVA_HOME%\bin" 경로 추가하기.
    4. 위 과정을 진행한 후 재부팅하기.
  • wordcloud 관련 코드를 실행할 때, "Only supported for TrueType fonts"라는 에러가 발생할 수 있습니다. 이 경우, 저는 다음과 같이 해결하였습니다.
    1. ! pip install --upgrade pip 실행.
    2. ! pip install --upgrade Pillow 실행.
    3. 재부팅.
profile
천천히, 그리고 꾸준히.

0개의 댓글