Coding Diary.

(데이터분석) seaborn의 pairgrid 함수 이용해서 차트행렬 (Plot Matrices) 작성하기 본문

Coding/Data analysis

(데이터분석) seaborn의 pairgrid 함수 이용해서 차트행렬 (Plot Matrices) 작성하기

life-of-nomad 2024. 5. 29. 11:11
728x90
반응형
이변량 데이터의 관계를 탐색할 때는 다양한 조합의 이변량 데이터를 살펴볼 수 있습니다. 
이때, 서로 다른 조합을 하나씩 살펴볼 수 도 있지만 다변량 차트가 아니라도 다양한 이변량 데이터의 조합을 동시에 살펴 볼 수 있는 기법인 차트 행렬 입니다. 
이번 글에서는 차트 행렬에 대해 알아보겠습니다. 

1. 차트 행렬 : 차트를 성분으로 갖는 행렬

  • 각 subplot이 데이터의 부분 집합에 기반하는 면 분할(Faceting) 차트와는 달리 차트 행렬의 각 subplot은 전체 데이터에 기반 하지만 각 축에 두 개의 서로 다른 변수를 나타냅니다. 
  • 각 행과 열은 하나의 변수에 대응합니다. 
  • 차트 행렬을 보면 두 변수 사이에 존재하는 관계를 한눈에 확인할 수 있습니다. 
  • 이때 각 subplot의 크기는 작은 편이므로 차트 행렬은 흥미로운 관계를 찾기 위한 초기의 탐색 과정에 적합한 도구입니다.
  • 차트 행렬을 통해 흥미로운 변수의 조합을 발견했다면 해당 변수들로 구성된 별도의 차트를 작성하는게 좋습니다. 

출처 ❘ Udacity

  • 또한, 히트맵을 변형해서 두 변수 간의 상관관계를 나타낼 수도 있습니다.

출처 ❘ Udacity

  • 차트 행렬과 마찬가지로 이 히트맵에서도 각 행과 열은 하나의 변수에 대응합니다. 
  • 각 셀의 값과 색상은 그 열과 행에 대응하는 변수들의 상관관계를 나타냅니다.
  • 이는 다양한 변수를 탐색할 때 데이터의 관계를 집약적으로 확인할 수 있는 차트입니다. 

2. 연비 통계 행렬

  • 먼저 필요한 라이브러리를 불러옵니다.
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns
  • 연비 데이터세트를 가져오겠습니다.
# load dataset
df = pd.read_csv('../data/fuel-econ/csv')

# create transmission type column
df['trans_type'] = df['trans'].apply(lambda x:x.split()[0])
  • 차트 행렬을 작성할 때는 seaborn의 pairgrid 함수를 사용하면 됩니다.
  • 여기서는 고속도로 연비, 도심 연비, 배기량, co2 배출량을 나타내는 네 개의 변수로만 다루겠습니다. 
  • 만약, 변수를 의미하는 매개변수인 vars를 지정하지 않는다면 모든 숫자 변수에 대한 차트 행렬이 작성됩니다.
  • 대각선(diagonal) 상의 성분과 대각선 밖의 성분을 따로 지정합니다.
stats = ['highway', 'city', 'displ', 'co2']
g = sns.PairGrid(data=df, vars=stats);
g.map_offdiag(plt.scatter);
g.map_diag(plt.hist);

  • 대각선 밖의 성분에는 산점도를 그리고, 대각선 상의 성분에는 히스토그램을 나타내게 했습니다. 
  • 1행 1열의 차트는 고속도로 연비를 나타내고 있습니다. 고속도로 연비의 히스토그램입니다.
  • 1행 2열을 보면 highway가 y축이고 city가 x축 입니다. 
  • 또한 대각선을 기준으로 x,y쌍이 대칭을 이룹니다. 

 

3. 통계의 상관계수 히트맵 행렬

  • 한편, 데이터를 분석할 때는 흔히 상관관계 행렬을 작성하기도 합니다.
  • 이를 위해서는 DataFrame에서 상관관계를 찾아내고 그 값을 이용해 히트맵을 작성하면 됩니다. 
# 상관계수 히트맵
sns.heatmap(df[stats].corr(), cmap='rocket_r', annot=True, 
	fmf='.2f', vmin=-1, square=True);

  • 도심 연비와 고속도로 연비의 상관관계가 매우 강한 것을 알 수 있습니다.
  • 또한, 엔진 배기량과 배기 가스도 상관관계가 강합니다.
  • 연비와 엔진 크기 및 co2 배출량 사이에는 강한 음의 상관관계가 존재합니다. 
  • 여기서 수직 최솟값을 뜻하는 vmin을 -1로 설정했습니다. 이 값은 색상 막대와 seaborn의 최솟값을 결정합니다.
  • 또한, 상관관계 행렬은 대칭적이기 때문에 가급적 square=True로 설정하여 정사각형으로 만드는 것이 좋습니다.
728x90
반응형