데이터 시각화

안재영·2024년 4월 5일

데이터 시각화

파이썬의 시각화 라이브러리

  • matpoltlib
  • seaborn

seaborn

파이써의 데이터시각화 라이브러리

다양한 그래프를 고수준(high-level)으로 쉽게 그릴수있다

seaborn을 사용하기위해선 install을 해야됩니다

pip install seaborn

Seaborn Essentials

seaborn은 다양한 그래프를 그릴수 있습니다 대표적인 그래프를 두개 살펴봅시다

꺾은선 그래프(Line Plot)

import seaborn as sns

sns.line(x=[1,3,2,4], y=[4,3,2,1])

x와 y가 점의 좌표를 나타냅니다

막대 그래프(Bar plot)

sns.barplot(x=[1,2,3,4], y=[0.7,0.2,0.1,0.05])

x는 범주, y는 값을 나타냅니다.

그래프를 생성했으니 각각의 그래프의 이름 또는 x와 y가 뜻하는 의미 같이 그래프의 이해를 돕는 방법들을 살펴봅시다

plot

seaborn은 matplotlib.pyplot의 속성을 변경해서 다양한 요소를 변경 추가가 가능합니다

import matplotlib.pyplot import plt

사용을 위해 import시켜줍니다

그래프 제목 : .title()

sns.barplot(x=[1,2,3,4],y=[0.7,0.2,0.1,0.05])
plt.title("Bar plot")

그래프 축의 설명 : plt._lable

sns.barplot(x=[1,2,3,4],y=[0.7,0.2,0.1,0.05])
plt.xlabel("x")
plt.ylabel("y")

그래프의 범위 : plt._lim()

sns.lineplot(x=[1, 3, 2, 4], y=[4, 3, 2, 1])
plt.xlim(0,10)
plt.ylim(2,3)

그래프의 크기 : plt.figure(figsize=(x,y))

plt.figure(figsize=(20,10))
sns.lineplot(x=[1, 3, 2, 4], y=[4, 3, 2, 1])

다른속성과 다르게 figure는 그래프를 생성하기 전에 수정해줘야합니다

wordCloud

  • wordCloud wordCloud는 파이썬의 텍스트 클라우드 라이브러리입니다. 이를 기반으로 텍스트 구름을 그릴 수 있습니다.
  • konlpy 한국어 형태소 분석기 라이브러리로, 주어진 문장에서 명사 등을 뽑아 내는 데에 사용할 수 있습니다.

wordCloud를 만들어 보기 위해선 위 두 가지가 필요합니다

install해줍시다

pip install wordcloud
pip install konlpy

WordCloud를 만드는 방법은 다음과 같습니다.

  1. KoNLPy 라이브러리로 한국어 문장을 전처리
  2. Counter를 이용해 빈도수 측정
  3. WordCloud를 이용해 시각화
# 시각화에 쓰이는 라이브러리
import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 횟수를 기반으로 딕셔너리 생성
from collections import Counter

# 문장에서 명사를 추출하는 형태소 분석 라이브러리
from konlpy.tag import Hannanum

테스트 케이스로 애국가 가사를 사용하겠습니다

national_anthem = """
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
남산 위에 저 소나무 철갑을 두른 듯
바람 서리 불변함은 우리 기상일세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
가을 하늘 공활한데 높고 구름 없이
밝은 달은 우리 가슴 일편단심일세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
이 기상과 이 맘으로 충성을 다하여
괴로우나 즐거우나 나라 사랑하세
무궁화 삼천리 화려 강산
대한 사람 대한으로 길이 보전하세
"""

테스트 문자열에서 Hannanum의 .nouns()를 사용하여 명사를 추출합니다

hannanum = Hannanum()
nouns = hannanum.nouns(national_anthem)
words = [noun for noun in nouns if len(noun) > 1]

카운터를 사용해서 갯수를 새줍니다

counter = Counter(words)

이제 워드클라우드를 이용해서 완성합니다

wordcloud = WordCloud(
    font_path="폰트 path",
    background_color="white"
)

img = wordcloud.generate_from_frequencies(counter)
plt.imshow(img)

wordcloud.generate_from_frequencies(dict)를 사용하면 dict의 key가 value의 값에 따라서 워드 클라우드로 생성이 됩니다

주의 할 점으론 워드 클라우드에서 한국어 폰트가 지원 되지 않아서 font_path를 설정해주지 않으면 모든 한글이 깨져서 나옵니다

font_path에 폰트의 path를 적어 지정해주면 해결 할 수 있습니다

0개의 댓글