반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩
- 선형회귀
- Seaborn
- CSS
- sql연습문제
- 영국석사
- 코드잇
- 로지스틱회귀
- 오늘도코드잇
- 데이터분석
- matplotlib
- 런던
- 코딩독학
- 나혼자코딩
- 판다스
- numpy
- HTML
- 코드잇TIL
- 코드잇 TIL
- 머신러닝
- 유학생
- 결정트리
- 코딩공부
- SQL
- 경사하강법
- 파이썬
- 윈도우함수
- 행렬
- 다항회귀
- for반복문
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(데이터분석) seaborn의 pairgrid 함수 이용해서 차트행렬 (Plot Matrices) 작성하기 본문
코딩공부/Data analysis
(데이터분석) seaborn의 pairgrid 함수 이용해서 차트행렬 (Plot Matrices) 작성하기
life-of-nomad 2024. 5. 29. 11:11728x90
반응형
이변량 데이터의 관계를 탐색할 때는 다양한 조합의 이변량 데이터를 살펴볼 수 있습니다.
이때, 서로 다른 조합을 하나씩 살펴볼 수 도 있지만 다변량 차트가 아니라도 다양한 이변량 데이터의 조합을 동시에 살펴 볼 수 있는 기법인 차트 행렬 입니다.
이번 글에서는 차트 행렬에 대해 알아보겠습니다.
1. 차트 행렬 : 차트를 성분으로 갖는 행렬
- 각 subplot이 데이터의 부분 집합에 기반하는 면 분할(Faceting) 차트와는 달리 차트 행렬의 각 subplot은 전체 데이터에 기반 하지만 각 축에 두 개의 서로 다른 변수를 나타냅니다.
- 각 행과 열은 하나의 변수에 대응합니다.
- 차트 행렬을 보면 두 변수 사이에 존재하는 관계를 한눈에 확인할 수 있습니다.
- 이때 각 subplot의 크기는 작은 편이므로 차트 행렬은 흥미로운 관계를 찾기 위한 초기의 탐색 과정에 적합한 도구입니다.
- 차트 행렬을 통해 흥미로운 변수의 조합을 발견했다면 해당 변수들로 구성된 별도의 차트를 작성하는게 좋습니다.
- 또한, 히트맵을 변형해서 두 변수 간의 상관관계를 나타낼 수도 있습니다.
- 차트 행렬과 마찬가지로 이 히트맵에서도 각 행과 열은 하나의 변수에 대응합니다.
- 각 셀의 값과 색상은 그 열과 행에 대응하는 변수들의 상관관계를 나타냅니다.
- 이는 다양한 변수를 탐색할 때 데이터의 관계를 집약적으로 확인할 수 있는 차트입니다.
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
반응형
'코딩공부 > Data analysis' 카테고리의 다른 글
(데이터분석) 이변량 차트를 seaborn의 hue이용해서 다변량 차트 나타내기 (0) | 2024.05.29 |
---|---|
(데이터분석) 다변량 데이터에서 Faceting(면 분할)하기 (0) | 2024.05.29 |
(데이터분석) matplotlib,seaborn에서 마커를 이용하여 다변량 변수 나타내기 (1) | 2024.05.28 |
(데이터분석) matplotlib으로 선도표 나타내기 (0) | 2024.05.28 |
(데이터분석) seaborn으로 히스토그램 faceting(면 분할) 하기 (0) | 2024.05.27 |