안녕하세요~ 꽁냥이에요.
산점도 행렬은 여러 개 연속형 변수들 간의 상관관계를 시각적으로 확인하고 싶을 때 사용합니다. 이번 포스팅에서는 산점도 행렬을 그려보는 2가지 방법에 대해서 소개합니다.
1. Seaborn을 이용하여 산점도 그리기
먼저 Seaborn 모듈을 이용하여 산점도 행렬을 그려보겠습니다.
이번 포스팅에서 사용할 데이터를 다운 받아주세요.
데이터 설명
칼럼 | 설명 |
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와는 달리 알아서 캔버스의 사이즈를 조절해주고 각 데이터 포인트가 선명하게 나오기 때문이지요.
이번 포스팅은 여기까지고요. 지금까지 꽁냥이의 글 읽어주셔서 감사합니다. 안녕히 계세요~~
'데이터 분석 > 시각화' 카테고리의 다른 글
[상자 수염 그림(Box and Whisker Plot)] 1. Matplotlib을 이용하여 상자 수염 그림 그리기 (0) | 2020.12.03 |
---|---|
Matplotlib을 이용하여 레이더 차트(Radar chart) 그리기! (15) | 2020.09.28 |
[도넛 차트(Donut chart)] 2. Matplotlib을 이용하여 하위 그룹을 포함하는 도넛 차트(Nested donut chart) 그리기 (2) | 2020.09.12 |
[도넛 차트(Donut chart)] 1. Matplotlib을 이용한 도넛 차트 그리기 (0) | 2020.09.06 |
[파이 차트(Pie chart)] 8. Matplotlib을 이용하여 파이 차트 꾸미기 - 라벨/텍스트 겹치지 않게 만들기 (12) | 2020.08.08 |
댓글