[Seaborn] 8. pairplot
사용할 데이터
import numpy as np
import pandas as pd
n = 1000
# 기본 능력치 생성 (학생들의 전반적인 학습 능력)
base_ability = np.random.normal(0, 1, size=n)
physical_ability = np.random.normal(0, 1, size=n) # 체육 능력 추가
# 과목별 점수 생성
국어 = 75 + 10 * (0.7 * base_ability + 0.3 * np.random.normal(0, 1, size=n))
영어 = 72 + 12 * (0.6 * base_ability + 0.4 * np.random.normal(0, 1, size=n))
수학 = 70 + 15 * (0.8 * base_ability + 0.2 * np.random.normal(0, 1, size=n))
# 체육은 수학과 반비례하도록 -base_ability 사용
체육 = 80 + 8 * (-0.6 * base_ability + 0.8 * physical_ability + 0.2 * np.random.normal(0, 1, size=n))
# 점수 범위 조정 및 반올림
data = {
'국어': np.round(np.clip(국어, 50, 100), 1),
'영어': np.round(np.clip(영어, 50, 100), 1),
'수학': np.round(np.clip(수학, 50, 100), 1),
'체육': np.round(np.clip(체육, 50, 100), 1),
'성별': np.random.choice(['남', '여'], size=n),
'반': np.random.choice([f'{i}반' for i in range(1,10)], size=n)
}
df = pd.DataFrame(data)
1. pairplot 기본
sns.pairplot(data=df)
- 기본적으로 각 변수간 scatter plot, 자신의 histogram을 보여준다.
2. 그룹화
sns.pairplot(
# 기본 데이터 설정: 데이터프레임 / 색상구분
data=df, hue='성별',
# 산점도 설정: 크기 / 투명도
plot_kws={'alpha':0.5},
# 대각선 설정: hist or kde
diag_kind='hist',
# 크기 설정
height=2
)
3. hist / kde
sns.pairplot(
# 기본 데이터 설정: 데이터프레임 / 색상구분
data=df, hue='성별',
# 대각선 설정: hist or kde
diag_kind='hist',
)
- 주대각 성분에 KDE 차트를 그릴지, hist를 그릴지 선택
4. 상세 커스터마이징
sns.pairplot(
# 기본 데이터 설정: 데이터프레임 / 색상구분 / 변수선택 / 팔레트
data=df, hue='성별', vars=['국어', '영어', '체육'],
palette='Set2',
# 산점도 설정: 크기 / 투명도 / 마커
plot_kws={'alpha':0.5, 's':30, 'marker':'o'},
# 대각선 설정: hist or kde / 막대투명도 / 구간개수
diag_kind='hist',
diag_kws={'alpha':0.6, 'bins':20, 'edgecolor':'white'},
# 대각선 설정: kde / 채우기 / 선두께 / 커널밀도
diag_kind='kde',
diag_kws={'fill':True, 'alpha':0.6, 'linewidth':2, 'bw_adjust':0.5}, # bw_adjust로 밀도 조절
# 크기 설정: 그래프크기 / 가로세로비율
height=2.5, aspect=1
)
- 데이터 프레임의 특정 컬럼에만 접근할 수 있다. vars에 수치형 컬럼들을 넣으면 될 듯
- 산점도 / 대각행렬에 들어가는 hist kde 설정이 가능하다.
정리
1. hist
sns.pairplot(
# 기본 데이터 설정: 데이터프레임 / 색상구분 / 변수선택 / 팔레트
data=df, hue='col1', vars=column_list, palette='muted',
# 산점도 설정: 투명도 / 크기 / 마커
plot_kws={'alpha':0.5, 's':30, 'marker':'o'},
# 대각선 설정: hist / 막대투명도 / 구간개수
diag_kind='hist',
diag_kws={'alpha':0.6, 'bins':20, 'edgecolor':'white'},
# 크기 설정: 그래프크기 / 가로세로비율
height=2.5, aspect=1
)
2. kde
sns.pairplot(
# 기본 데이터 설정: 데이터프레임 / 색상구분 / 변수선택 / 팔레트
data=df, hue='col1', vars=column_list, palette='muted',
# 산점도 설정: 투명도 / 크기 / 마커
plot_kws={'alpha':0.5, 's':30, 'marker':'o'},
# 대각선 설정: 종류 / 스타일
diag_kind='kde',
diag_kws={'fill':True, 'alpha':0.6, 'linewidth':2, 'bw_adjust':0.5},
# 크기 설정: 그래프크기 / 가로세로비율
height=2.5, aspect=1
)
스니펫
{
"Seaborn Pairplot Histogram Template": {
"prefix": "sns_pairhist",
"body": [
"sns.pairplot(",
" # 기본 데이터 설정: 데이터프레임 / 색상구분 / 변수선택 / 팔레트",
" data=${1:df}, hue='${2:col1}', vars=${3:column_list}, palette='${4:muted}',",
"",
" # 산점도 설정: 투명도 / 크기 / 마커",
" plot_kws={'alpha':${5:0.5}, 's':${6:30}, 'marker':'${7:o}'},",
"",
" # 대각선 설정: 종류 / 막대투명도 / 구간개수",
" diag_kind='hist',",
" diag_kws={'alpha':${8:0.6}, 'bins':${9:20}, 'edgecolor':'white'},",
"",
" # 크기 설정: 그래프크기 / 가로세로비율",
" height=${10:2.5}, aspect=${11:1}",
")"
],
"description": "Create a Seaborn pairplot with histogram diagonal"
},
"Seaborn Pairplot KDE Template": {
"prefix": "sns_pairkde",
"body": [
"sns.pairplot(",
" # 기본 데이터 설정: 데이터프레임 / 색상구분 / 변수선택 / 팔레트",
" data=${1:df}, hue='${2:col1}', vars=${3:column_list}, palette='${4:muted}',",
"",
" # 산점도 설정: 투명도 / 크기 / 마커",
" plot_kws={'alpha':${5:0.5}, 's':${6:30}, 'marker':'${7:o}'},",
"",
" # 대각선 설정: 종류 / 채우기 / 투명도 / 선두께 / 커널밀도",
" diag_kind='kde',",
" diag_kws={'fill':${8:True}, 'alpha':${9:0.6}, 'linewidth':${10:2}, 'bw_adjust':${11:0.5}},",
"",
" # 크기 설정: 그래프크기 / 가로세로비율",
" height=${12:2.5}, aspect=${13:1}",
")"
],
"description": "Create a Seaborn pairplot with KDE diagonal"
}
}
'Data Visualization > Seaborn' 카테고리의 다른 글
[Seaborn] 11. swarmpplot (0) | 2024.11.15 |
---|---|
[Seaborn] 10. stripplot (0) | 2024.11.15 |
[Seaborn] 9. countplot (0) | 2024.11.15 |
[Seaborn] 7. jointplot (0) | 2024.11.15 |
[Seaborn] 6. heatmap (0) | 2024.11.15 |
[Seaborn] 5. barplot (0) | 2024.11.15 |
[Seaborn] 4. violin plot (0) | 2024.11.15 |
댓글