Python 데이터 시각화


Python 데이터 시각화
Matplotlib 기반으로 하는 Seaborn 라이브러리를 이용하여 Python 그래프 그리기 방법 등 데이터 시각화 방법에 대해서 설명드리도록 하겠습니다.

Python 데이터 시각화

데이터 시각화 라이브러리

이 글에서 Python을 이용하여 그래프를 그리거나 데이터를 시각화 하기 위해서 Seaborn 이라는 패키지를 이용할 것입니다. 이 피캐지는 matplotlib 패키지를 기반으로 하고 있으며, pandas 데이터를 이용하여 쉽게 통계학적인 그래프를 그릴 수 있습니다. Seaborn 라이브러리는 다음과 같은 특징이 있습니다.

  • 데이터셋 지향적인 API 제공
  • 다양한 종류의 예제 데이터셋 제공
  • 데이터 패턴등을 분석 하기 위한 편리한 뷰 기능 제공
  • Linear Regression 모델의 시각화 기능 제공
  • color palettes 등의 도구 제공

Python seaborn 설치

seaborn 패키지는 conda 또는 pip 명령어로 다음과 같이 설치 할 수 있습니다.

$ conda install seaborn
$ pip install seaborn

이 글에서 사용된 예제 소스코드는 아래의 명령어로 다운 받으실 수 있습니다.

$ git clone https://hiseon.me/reps/python-seaborn-example.git

Seaborn 데이터셋

Python 데이터 시각화를 위해서는 샘플 데이터가 필요합니다. Seaborn 패키지에는 load_dataset 함수로 샘플 데이터를 읽어올 수 있습니다. 현재 Seaborn 에서 제공되는 데이터셋은 아래의 페이지에서 참고 하실 수 있습니다.

https://github.com/mwaskom/seaborn-data

Python 그래프 그리기

아래는 tips 라는 데이터셋을 시각화 한 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip", col="time",
            hue="smoker", style="smoker", size="size",
            data=tips);
Python 데이터 시각화

위의 예제 소스코드를 설명 드리도록 하겠습니다. 먼저 아래의 내용은 seaborn 패키지를 import 하는 코드입니다.

import seaborn as sns
import matplotlib.pyplot as plt

seaborn 패키지는 그래프를 그리기 위해서 내부적으로는 matplotlib 패키지를 사용합니다. 대부분의 그래프는 직접 seaborn 패키지를 이용하여 그릴 수 있지만, 커스터마이징 등은 matplotlib 패키지의 API를 이용해야 합니다.
다음 코드 seaborn 패키지의 테마와 스케일링, 컬러 팔레트(Color Palette) 등을 기본 설정 값으로 사용한다는 의미입니다.

sns.set()

Python 그래프 그리기 위해서 아래의 함수를 이용하여 tips 라는 예제 데이터를 가져옵니다.

tips = sns.load_dataset("tips")

아래의 코드는 그래프를 그리는 내용입니다.

sns.relplot(x="total_bill", y="tip", col="time",
            hue="smoker", style="smoker", size="size",
            data=tips)

다음 코드는 그래프를 출력하는 내용입니다.

plt.show()

다음 코드는 직접 데이터셋을 생성하여 그래프를 그리는 예제를 나타냅니다.

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame(dict(time=np.arange(500),
                       value=np.random.randn(500).cumsum()))
g = sns.relplot(x="time", y="value", kind="line", data=df)

plt.show()

회귀 데이터 시각화

아래의 예제 소스코드는 회귀(Regression) 데이터셋을 시각화 하는 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="ticks")

# Load the example dataset for Anscombe's quartet
df = sns.load_dataset("anscombe")

# Show the results of a linear regression within each dataset
sns.lmplot(x="x", y="y", col="dataset", hue="dataset", data=df,
           col_wrap=2, ci=None, palette="muted", height=4,
           scatter_kws={"s": 50, "alpha": 1})

plt.show();

원본 데이터 셋는 각각의 x, y 값만 주어졌지만, 데이터셋으로 부터 선형 회귀 그래프가 그려진 것을 확인 할 수 있습니다.

다양한 포인트 크기와 색상의 산점도

아래의 예제코드는 mpg 데이터 셋을 이용하여 산점도(Scatterplot)를 그리는 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="white")

# Load the example mpg dataset
mpg = sns.load_dataset("mpg")

# Plot miles per gallon against horsepower with other semantics
sns.relplot(x="horsepower", y="mpg", hue="origin", size="weight",
            sizes=(40, 400), alpha=.5, palette="muted",
            height=6, data=mpg)

plt.show()

각각의 카테고리의 값에 따라서 색상과 크기를 한꺼번에 산점도에 나타낸 것을 확인 할 수 있습니다.

에러 범위와 함께 시계열 데이터 시각화

아래의 예제 코드는 시계열 데이터로 라인 그래프를 그리면서 에러범위를 함께 나타낸 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="darkgrid")

# Load an example dataset with long-form data
fmri = sns.load_dataset("fmri")

# Plot the responses for different events and regions
sns.lineplot(x="timepoint", y="signal",
             hue="region", style="event",
             data=fmri)

plt.show();

예제를 실행한 화면은 다음과 같습니다.

산점도와 등고선 시각화

아래의 예제는 주어진 데이터셋에서 Paired density 와 산점도를 Matrix 그래프로 출력한 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="white")

df = sns.load_dataset("iris")

g = sns.PairGrid(df, diag_sharey=False)
g.map_lower(sns.kdeplot)
g.map_upper(sns.scatterplot)
g.map_diag(sns.kdeplot, lw=3)

plt.show();

위의 그래프는 데이터의 패턴등을 분석하는데 유용하게 사용 될 수 있을 것입니다.

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)