⚠️ 함정: 같은 데이터도 축을 어떻게 잡느냐에 따라 정반대 인상을 준다. 막대그래프의 y축을 0이 아닌 값에서 시작하면 미미한 차이가 극적으로 보이고, 서로 다른 단위를 이중 축에 겹쳐 그리면 없는 상관이 있는 것처럼 보인다. 차트를 읽을 때도 만들 때도 축 범위를 먼저 확인해야 한다.
앤스컴의 사중주(Anscombe's quartet)는 요약 통계(평균, 분산, 상관)가 동일한데도 모양은 전혀 다른 데이터셋들을 보여 준다. 네 데이터셋은 평균·분산·상관·회귀선이 거의 같지만, 산점도로 보면 하나는 선형, 하나는 곡선, 하나는 이상치 하나가 전체를 끌고 간다. 교훈은 "요약 통계만 믿지 말고 항상 시각화하라"이며, 이것이 EDA에 시각화가 반드시 필요한 이유다.
import seaborn as snsimport matplotlib.pyplot as pltfig, axes = plt.subplots(1, 3, figsize=(15, 4))sns.histplot(df["income"], kde=True, ax=axes[0]) # 모양 + 밀도sns.boxplot(x=df["income"], ax=axes[1]) # 사분위, 이상치sns.violinplot(x=df["region"], y=df["income"], ax=axes[2]) # 범주별 분포
히스토그램/KDE: 분포 모양(치우침, 봉우리 수)을 본다
박스플롯: 중앙값·사분위와 IQR 기준 이상치를 빠르게 잡아낸다
바이올린: 박스플롯 + 밀도. 범주 간 분포 비교에 강하다
치우친 분포는 로그 변환 후 다시 그려 정규성에 가까워지는지 확인한다.
정규(대칭) 우편향(오른쪽 꼬리) 이봉(bimodal) 이상치 존재
▁▃▅█▅▃▁ ▂█▆▄▃▂▁▁▁▁ ▃█▄▁▁▄█▃ ▂▅█▅▂ · ·
평균 ≈ 중앙값 평균 > 중앙값 봉우리 2개 꼬리에 극단값
→ 그대로 사용 → log(1+x) 변환 → 숨은 세그먼트 → IQR·도메인 확인
# 상관 히트맵: 선형 관계를 한눈에corr = df.select_dtypes("number").corr()sns.heatmap(corr, annot=True, cmap="coolwarm", center=0)# 페어플롯: 변수 쌍 관계 + 대각선 분포sns.pairplot(df, hue="target", vars=["age", "income", "score"])
피어슨 상관은 선형 관계만 포착한다. 완벽한 곡선 관계(예: y = x²)도 피어슨 r이 0에 가깝게 나올 수 있다. 단조지만 비선형인 관계는 스피어만 순위 상관이, 일반적 의존성은 상호정보량이 더 잘 잡는다. 그러니 "상관이 낮다 = 관계가 없다"라고 단정하지 말고 산점도로 모양을 확인해야 한다.
상관 히트맵에서 |r|이 크다고 곧바로 인과를 말할 수 없다. 두 변수가 함께 움직이는 것은 제3의 공통 원인이나 시간 추세 때문일 수 있다. 시각화는 가설을 만드는 도구이지 인과를 증명하는 도구가 아니다.
QuickSight는 대시보드와 시각화를 만들고 공유하는 AWS의 서버리스 BI 서비스다.
기능
설명
SPICE
빠른 집계·시각화를 위한 인메모리 연산 엔진
데이터 소스
S3, Athena, Redshift, RDS, Aurora 등에 직접 연결
ML Insights
이상 탐지, 예측, 자동 내러티브
Q
자연어 질의("지난달 지역별 매출")로 시각화 생성
서버리스
인프라 관리 불필요, 사용한 만큼 과금
QuickSight는 운영 대시보드와 비즈니스 리포팅에 적합하다. 학습 전 EDA 탐색에는 노트북(matplotlib/seaborn)이나 SageMaker Data Wrangler가 작업 흐름에 더 가깝다.
QuickSight의 ML Insights는 내장 ML로 시계열의 이상을 자동 탐지하고, Random Cut Forest 기반 예측을 제공하며, 변화를 자연어로 설명한다. 분석가가 모델을 직접 작성하지 않아도 BI 대시보드 안에서 ML 인사이트를 얻는다. 시험에서 "코드를 작성하지 않는 비즈니스 사용자가 이상 탐지·예측 대시보드를 원한다"는 지문은 QuickSight ML Insights를 가리킨다.
[학습셋 확보 — 시각화도 학습셋으로만 한다]
│
① 변수 하나씩: 히스토그램 / 박스플롯
└→ 치우침 · 이상치 · 상수 컬럼 발견
│
② 타깃 분포: 클래스 막대 또는 히스토그램
└→ 불균형 여부 확인 (Day 4로 연결)
│
③ 변수 ↔ 타깃: 범주별 바이올린 / 산점도
└→ 좋은 특성 후보 발견
│
④ 변수 ↔ 변수: 상관 히트맵 / 페어플롯
└→ 다중공선성 후보 발견 (Day 2로 연결)
│
⑤ 시간축이 있으면: 선 그래프
└→ 추세 · 계절성 · 급변 지점 확인
│
⑥ 발견을 전처리 결정으로 옮긴다 (변환 · 제거 · 특성 추가)
시각화도 데이터를 들여다보는 행위다. 테스트셋까지 포함해 그림을 보고 전처리를 결정하면 사람이 매개한 누수가 된다. 분포 확인·이상치 판정·상관 점검은 학습셋에서만 하고, 테스트셋은 마지막 평가까지 열어 보지 않는 것이 원칙이다.