Post

[AI] 05. 데이터 시각화

[AI] 05. 데이터 시각화

데이터 시각화

데이터를 시각화하여 데이터의 분포나 특성 확인

Matplolib

  • 기본적이고 단순한 시각적 개체
  • 구문이 복잡하고 길지만 여러개의 시각화를 한번에 열 수 있다
  • Numpy와 Panda만으로도 가능
  • 강력하고 유연하며 사용자 기능 정의가 쉽다.

Seaborn

  • 시각적인 요소가 추가되고 통계 그래프 위주
  • 메모리 부족 문제로 다중 시각화하는데 실패할 수 있다.
  • Matplolib도 사용 필수
  • 덜 유연하고 사용자 기능 정의가 어렵다.

Matplotlib 라이브러리

파이썬에서 데이터를 차트나 플롯으로 그려주는 데이터 시각화 패키지

%matplotlib inline
import matplotlib.pyplot as plt
  • 라인 Plot
  • 바 차트
  • 파이 차트
  • 히스토그램
  • Box Plot
  • Scatter Plot

차트 그리기

  1. plt.figure(figsize=x, y)
    시각화 그림을 표시할 영역 지정 default (6,4)
  2. plt.plot()
    시각화 차트 및 값 지정
    dataframe.plot() 사용 가능
    plt.plot(kind=’bar’, stacked=True) bar 그래프, 누적그래프(True)
  3. plt.show()
    시각화 출력

  • 선 그래프 그리기
    plt.plot(data): 시간에 따른 데이터의 변화 추세
  • 산점도 그리기
    plt.scatter(x, y): X와, Y값 지정해서 두 값의 관계(양의 상관관계, 음의 상관관계) 등 파악
  • 히스토램 그리기
    plt.hist(x): 수치형 데이터의 분포를 나타내며 주로 빈도, 빈도밀도, 확률 등으로 나눈다. (bins default:10)
  • 박스 그래프 그리기
    • plt.boxplot(x): 수치적 자료를 표현하는 그래프로 최소값, 제1사분위값~제3분위값, 최대값 총 5가지 요약수치로 나타냄
    • plt.boxplot(by, column, figsize): by Group화할 값(column), column 박스 그래프로 나타낼 값
  • 막대 그래프 그리기 plt.bar(x, height): 범주형 데이터의 수치를 요약해서 보여준다. 가로, 세로, 누적, 그룹화된 막대 그래프 등 사용

pandas.pivot_table(data, index=’column’) 등으로 수치에 대한 정보(mean, sum, max등)를 구한다.


차트 꾸미기

  • plt.xlabel(‘x축 이름’)
  • plt.ylabel(‘y축 이름’)
  • plt.title(‘그래프 이름’)
  • plt.legend([‘범례1’, ‘범례2’ …])
  • plt.plot(x, y1,’r–’, x, y2, ‘bs’, x, y3, ‘g^:’) 색상(rgb) 마커(-^) 선종류(-:) 순서로 작성
  • plt.subplot(행열순서) 행/열/순서로 배치순서 둔다 (ex. 212, 2번째 행 1번째 열의 2번째 영역)
import matplotlib.font_manager as fm
fm.findSystemFonts(fontpaths=None, fontext='ttf')

"""
#['/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf',
 '/usr/share/fonts/truetype/nanum/NanumGothicCoding.ttf',
 '/usr/share/fonts/truetype/nanum/NanumGothicCoding-Bold.ttf',
 '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',
 '/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf',
 '/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf',
 '/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf',
 '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf']
"""

#찾은 폰트를 기본 폰트로 설정하기
plt.rc('font', family='NanumGothicCoding')
plt.rc('axes', unicode_minus=False)

Seaborn

Matpolib 기반으로 다양한 색상 테마와 통계용 차트 등의 기능을 추가한 시각화 패키지

%pip install seaborn
%matplotlib inline
import seaborn as sns
import matplotlib.pyplot as plt

  • Scatter Plot
    sns.scatterplot(x, y, data): x와 y 두 값이 어떤 관계에 있는지 분포를 확인할 수 있다.
  • Cat Plot
    • sns.catplot(x,y,col or row): 색상과 열&행 등을 동시에 사용하여 3개 이상의 카테고리 값에 의한 분포 변화를 보여준다.
    • col=”column”, col_wrap=2 : 2개의 열로 보여준다는 뜻
  • Lm Plot
    • sns.lmplot(x,y): 산점도에 회귀선을 그려주어 하나의 값에 따라 다른 값이 어떻게 변하는지를 예측한다.
    • sns.lmplot(x, y, data, line_kws={‘color’: ‘red’}) 색상 설정
  • Count Plot
    sns.Countplot(x): 항목 별 갯수를 확인할 때 사용한다.
    히스토그램은 연속형 범주만 가능, CountPlot은 범주형 변수에서도 적용 가능
  • Box Plot
    sns.boxplot(x, y): 수치적 자료로부터 얻어낸 5가지 요약 수치를 가지고 그래프를 만든다.
  • Violin Plot
    sns.violinplot(x, y): boxplot과 모양이 비슷하며 밀집도를 함께 확인할 수 있다.
  • Joint Plot
    • sns.jointplot(x, y): 산점도와 countplot을 한번에 보여줘 데이터의 분포와 상관관계 확인이 가능하다. 데이터 탐색에 유리
    • sns.jointplot(x, y, kind): kind로 통해 산점도 영역의 그래프를 변경할 수 있다.
  • Heat Map
    • sns.heatmap(data): 데이터의 배열을 색상으로 표현하는 그래프로 두 개의 카테고리 값에 대한 값 변화를 확인할 수 있다. 두값 또는 각 Feature 간의 상관관계를 나타낼 때 주로 사용한다.
    • data.corr() 수치형 데이터임을 확인해야 한다.
    • plt.rc(‘axes’, unicode_minus=False) 축 레이블에 표시되는 마이너스 기호를 유니코드가 아닌 일반적인 ASCII 기호로 표시하도록 설정

  • multiple=’dodge’: 여러 개의 데이터를 동시에 플로팅하고 구분하기 위해 히스토그램을 겹치지 않도록 한다.
  • shrink=0.8: 막대의 너비를 0.8로 축소한다.
  • palette=’spring’: spring 팔레트로 색상을 설정한다.
This post is licensed under CC BY 4.0 by the author.