삶의 공유

[Python기초] Seaborn을 이용한 데이터 시각화 본문

Data Scientist/Python

[Python기초] Seaborn을 이용한 데이터 시각화

dkrehd 2022. 1. 17. 20:40
728x90
반응형

안녕하세요

 

오늘은 Python의 Seaborn 라이브러리를 활용해서 데이터시각화를 한번 해보고자 합니다. 

Seaborn라이브러리는 matplot 보다 더 나은 기능을 제공합니다. 

관련해서 seaborn 라이브러리 문서를 보고싶으시다면 하기 링크를 클릭 해주시면 됩니다.

 

https://seaborn.pydata.org/examples/index.html

 

Example gallery — seaborn 0.11.2 documentation

 

seaborn.pydata.org

 

자 이제 예제로 들어가보겠습니다. 먼저 seaborn 라이브러리를 포함하여 데이터 시각화를 위해 필요한

여러 라이브러리를 호출해보겠습니다.

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

위 문장에서 "import seaborn as sns" 이 문장이 seaborn 라이브러리를 호출하는 문장입니다.

 

이번 예제에서는 데이터셋을 무료로 제공하는 sklearn에서 가져 올 것 입니다. 어떻게 가져오는건지 같이 한번 살펴보겠습니다.

먼저 코드는 다음과 같습니다.

 

여러 데이터셋이 있지만 이번에는 그중에서 load_breast_cancer이라는 데이터셋을 가져와보았습니다. 참 직관적으로 잘 되어 있지 않나요? sklearn은 정말 잘되어있는 것 같습니다. 나중에 머신러닝에서도 많이 다룰 것 입니다.

from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
cancer

이렇게 load한 데이터 구조가 어떻게 되어있는지 살펴보면, 아래와 같이 딕셔너리 구조로 되어 있는 것을 볼 수 있습니다.

그럼 이 딕셔너리 구조의 데이터를 데이터프레임으로 만들어 보겠습니다. 코드는 다음과 같습니다.

df_cancer = pd.DataFrame(np.c_[cancer['data'], cancer['target']], columns=np.append(cancer['feature_names'],['target']))
df_cancer

여기서 다른건 크게 어렵지 않지만 "np.c_" 가 어떤 의미인지 생소 하셨을텐데 이거에 대해서 간략히 설명하면 아래 내용과 같이 2개의 1차원 배열을 좌에서 우로 한줄씩 붙여 넣는 개념으로 생각하시면 됩니다. 아래 내용을 보시면서 상상을 해보시면 좋을 것 같습니다.

그럼 이와 같은 데이터 프레임을 얻을 수 있습니다.

자 이제 본격적으로 데이터 시각화를 해보겠습니다.

 

SCATTER PLOT

  • x = 의 의미는 x축으로 사용할  데이터 프레임 내 컬럼
  • y = 의 의미는 y축으로 사용할 데이터 프레임 내 컬럼
  • hue = 의 의미는 legend 입니다(즉 색을 구분하기 위한 구분자 역할)
  • data = 의 의미는 원본 데이터 프레임 입니다. 
sns.scatterplot(x='mean area' ,y='mean smoothness', hue='target', data = df_cancer)

두 데이터 컬럼의 관계를 알 수 있습니다.

 

 

COUNTER PLOT

sns.countplot이라고 쓰면 되고 괄호 안에는 원하는 데이터셋을 넣으면 됩니다.

sns.countplot(df_cancer['target'])

아래와같이 target 컬럼은  은 1, 0의 데이터들로 이루어져 있는데 각 0, 1의 항목 개수들이 시각화 되는 것을 볼 수 있습니다.

 

반응형

 

PAIR PLOT

데어터들의 관계를 한번에 알아볼 수 있게 시각화 하는 방법입니다. 시각화를 통한 강력한 데이터 분석 방법 입니다. 

  • df_cancer 는 데이터셋인 데이터 프레임 입니다.
  • hue는 앞서 말씀드린데로 Legend 역할 입니다
  • vars는 비교할 데이터 컬럼 리스트 입니다. 데이터 컬럼명을 문자열로 리스트화하여 작성 하면 됩니다.
sns.pairplot(df_cancer, hue='target', vars=['mean radius','mean texture', 'mean area', 'mean perimeter', 'mean smoothness'])

이렇게 데이터 변수들 간의 관계를 시각화하여 한번에 표현하기 때문에 상대적으로 쉽게 데이터들간의 관계를 찾아낼수 있습니다.

 

HEAT MAP

Pair plot에 이어 데이터들간의 관계를 한번에 알아볼 수 있는 시각화 분석툴로 heat map 또한 많은 사람들이 사용하고 있는 방법 중에 하나 입니다.

  • df_cancer.corr() 은 각 컬럼들끼리 데이터를 비교하여 상관계수를 뽑아 내는 함수 입니다.(1이면 상관계수가 높다, -1이면 낮다)
  • annot=True는 아래 이미지에서 corr()함수의 값을 표현 하겠다 라는 의미 입니다. ※default는 False입니다.
plt.figure(figsize=(20,10))
sns.heatmap(df_cancer.corr(), annot=True)

heatmap함수를 사용해서 pairplot함수보다 더 쉽게 데이터 변수들간의 상관계수를 수치로 나타냄으로써 좀 더 직관적으로 확인 할 수 있습니다.

 

 

이상으로 matplot 라이브러리의 확장판이라고 볼 수 있는 seaborn에 대해서 같이 공부를 해보았습니다. 많은 분들에게 도움이 되었으면 좋겠습니다. 감사합니다.

 

 

반응형