본문 바로가기
Data Visualization/Seaborn

[Seaborn] 8. pairplot

by 베짱이28호 2024. 11. 15.

[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

댓글