본문 바로가기
데이터 분석/시각화

산점도 행렬 그려보기 with Python

by 부자 꽁냥이 2020. 9. 25.

안녕하세요~ 꽁냥이에요. 

 

산점도 행렬은 여러 개 연속형 변수들 간의 상관관계를 시각적으로 확인하고 싶을 때 사용합니다. 이번 포스팅에서는 산점도 행렬을 그려보는 2가지 방법에 대해서 소개합니다.


1. Seaborn을 이용하여 산점도 그리기

2. Pandas를 이용하여 산점도 그리기



   1. Seaborn을 이용하여 산점도 그리기

먼저 Seaborn 모듈을 이용하여 산점도 행렬을 그려보겠습니다.

 

이번 포스팅에서 사용할 데이터를 다운 받아주세요.

 

surgical_unit.csv
0.00MB

 

데이터 설명

 

칼럼 설명
Blood_Clotting_Score 혈액 응고 테스트 점수
Prognostic_Index 예측 지수
Enzyme_Test 효소 기능 테스트 점수
Liver_Test 간 기능 테스트 점수
Age 연령
Gender 성별 0 = 남자, 1=여자
Alc 알콜 사용 이력
없음 : Alc_Mod = 0, Alc_Heavy = 0
적당 : Alc_Mod = 1, Alc_Heavy = 0
심각 : Alc_Mod = 0, Alc_Heavy = 1
Survival_Time 생존 시간
Log_ST 로그 생존 시간

 

다음으로 여기서 필요한 모듈을 임포트하고 데이터를 불러옵니다.

 

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

df = pd.read_csv('./surgical_unit.csv') ## 데이터 준비

 

 

이제 산점도 행렬을 그려보겠습니다. 아래 코드를 살펴볼게요.

 

sns.set(font_scale=1.1) ## 폰트사이즈 조절
sns.set_style('ticks') ## 축 눈금 표시
data = df[['Blood_Clotting_Score', 'Prognostic_Index', 'Enzyme_Test', 'Liver_Test']]
sns.pairplot(data,
             diag_kind=None)
plt.show()

 

line 3

산점도 행렬을 그리고 싶은 연속형 변수만 모았습니다.

seaborn에서 산점도 행렬은 데이터 칼럼의 문자열이 포함되어 있으면 범주형으로 간주하여 제외시킵니다. 하지만 0과 1로 코드화 되어 있는 데이터는 포함시켜 산점도 행렬을 그리기 때문에 이는 제외시켜주어야 합니다.

 

line 4~5

seaborn 모듈의 pairplot 함수를 이용하여 산점도 행렬을 그립니다. 첫 번째 인자에는 데이터를 넣어주고 diag_kind 옵션으로 대각 원소에는 어떤 그림을 넣어줄지 정할 수 있습니다. diag_kind 옵션에 대한 설명은 여기를 참고하세요.

 

이제 위 코드를 실행해볼까요?

 

 

산점도 행렬이 잘 그려진 것을 확인할 수 있어요.

반응형

   2. Pandas를 이용하여 산점도 행렬 그리기

Pandas를 이용하여 산점도를 그리기 위하여 아래의 scatter_matrix 모듈을 추가로 임포트 해야 합니다.

 

from pandas.plotting import scatter_matrix

 

이제 산점도 행렬을 그려보겠습니다. 

 

scatter_matrix(data,
               alpha=1, ## 데이터 포인트의 투명도 1 = 가장진함, 0 = 완전투명
               figsize=(10,10), ## 캔버스 사이즈 조절
               diagonal=None) ## 대각 원소에는 아무것도 그리지 않는다.
plt.show()

 

line 1~4

scatter_matrix 함수에는 데이터를 넣어줘야 하고요. alpha 값을 이용하여 데이터 포인트를 더 선명하게 해 줬습니다. 그리고 seaborn과 다르게 캔버스 사이즈를 적절하게 정해야 합니다. 그리고 대각 원소는 아무것도 그리지 않기 위해 diagonal 인자에 None값을 주었습니다. scatter_matrix에 대한 더 자세한 설명은 여기를 참고하세요.

 

위 코드를 실행해볼까요?

 

 

산점도 행렬이 잘 그려진 것을 확인할 수 있어요.


이번 포스팅에서는 산점도 행렬을 그리는 두 가지 방법에 대해서 알아보았는데요. 아마도 다음과 같은 질문을 할 수 있을 거예요.

 

둘 중 어떤 걸 써야 할까요?

 

꽁냥이는 개인적으로 seaborn을 이용하여 산점도 행렬을 그리는 것을 추천합니다. seaborn의 사용법이 어렵지 않고 seaborn은 pandas의 scatter_matrix와는 달리 알아서 캔버스의 사이즈를 조절해주고 각 데이터 포인트가 선명하게 나오기 때문이지요.

 

이번 포스팅은 여기까지고요. 지금까지 꽁냥이의 글 읽어주셔서 감사합니다. 안녕히 계세요~~


댓글


맨 위로