[5편] 데이터 시각화로 AI 데이터 통찰 얻기 (Matplotlib & Seaborn)
Pandas와 NumPy를 활용해 데이터를 깨끗하게 가공하고 정리하는 법을 익혔다면, 이제는 그 데이터 안에 숨겨진 패턴과 통찰을 한눈에 파악할 차례입니다.
수천, 수만 행에 달하는 수치 데이터를 단지 표 형태로만 바라보면, 데이터의 전체적인 분포가 어떠한지, 변수 간에 어떤 관계가 있는지 한눈에 알아채기 어렵습니다. AI 모델을 구축하기 직전, 데이터의 특징을 다각도로 시각화하여 관찰하는 과정을 탐색적 데이터 분석(EDA, Exploratory Data Analysis)이라고 부릅니다.
나 역시 처음 데이터 분석 프로젝트를 진행했을 때, 시각화 과정을 귀찮은 부속 작업으로 여겨 생략하고 곧바로 AI 모델에 데이터를 밀어 넣었던 적이 있습니다. 결과는 참담했습니다. 데이터 내부에 존재하던 극단적인 이상치(Outlier)와 치우친 데이터 분포 때문에 모델의 예측 정확도가 턱없이 낮게 나왔던 것입니다. 결국 차트를 그려보지 않고서는 데이터의 문제점을 파악할 수 없다는 사실을 깨달았습니다. 오늘 5편에서는 파이썬의 대표적인 두 데이터 시각화 라이브러리인 Matplotlib(매트플롯립)과 Seaborn(씨본)을 활용해 데이터의 통찰을 얻는 실무 테크닉을 다룹니다.
1. 파이썬 시각화의 뼈대와 기둥: Matplotlib
Matplotlib은 파이썬 시각화 생태계의 가장 기본이 되는 모듈입니다. 마치 도화지 위에 선을 그리고 점을 찍듯, 차트의 아주 세밀한 요소 하나까지 직접 코드로 제어할 수 있는 강력한 자유도를 제공합니다.
(1) Matplotlib의 장점과 특징
높은 자유도: 축 범위, 범례(Legend), 눈금, 제목, 그래프 색상 등 차트의 모든 구성 요소를 원하는 대로 세세하게 설정할 수 있습니다.
모든 시각화의 기반: 추후 배우게 될 Seaborn이나 Pandas의 내장 그래프 기능들도 내부적으로는 모두 Matplotlib 엔진을 기반으로 구동됩니다.
(2) 자주 쓰이는 기본 차트 유형
꺾은선 그래프 (
plt.plot()): 시간에 따른 데이터의 흐름이나 변화 추이를 확인할 때 (예: 주가 흐름, 월별 매출 변화)산점도 (
plt.scatter()): 두 연속형 변수 간의 상관관계나 흩어진 정도를 확인할 때 (예: 키와 몸무게의 관계)막대 그래프 (
plt.bar()): 범주형 데이터 간의 크기를 비교할 때 (예: 지역별 판매량)히스토그램 (
plt.hist()): 단일 수치형 변수의 구간별 빈도수와 분포 형태를 파악할 때
2. 한 줄로 완성하는 세련된 통계 차트: Seaborn
Matplotlib이 모든 것을 세밀하게 조작할 수 있는 도화지라면, Seaborn은 완성도 높은 스타일링과 복잡한 통계 차트를 단 한 줄의 코드로 그려내는 세련된 시각화 도구입니다.
(1) Seaborn을 함께 쓰는 이유
Matplotlib만으로 복잡한 통계형 차트를 그리려면 수십 줄의 코드가 필요하지만, Seaborn을 사용하면 Pandas 데이터프레임을 직접 전달하여 매우 간결한 코드로 아름다운 시각화를 완성할 수 있습니다. 기본 색상 패키지와 디자인 스타일이 현대적이고 깔끔하여 별도의 커스텀 없이도 높은 수준의 그래프가 출력됩니다.
(2) AI 데이터 전처리에 특화된 Seaborn 핵심 기능
히트맵 (
sns.heatmap()): 데이터프레임 내 변수들 간의 상관계수(Correlation)를 색상의 짙고 옅음으로 표현합니다. AI 입력 변수를 선정할 때 서로 강한 연관성이 있는 변수를 빠르게 찾아내는 데 필수적입니다.박스 플롯 (
sns.boxplot()): 데이터의 중앙값, 4분위수, 그리고 정상 범위를 벗어난 '이상치(Outlier)'를 시각적으로 보여줍니다. 데이터 정제 과정에서 제거해야 할 극단값을 발견하는 데 매우 유용합니다.서로 다른 변수 간의 산점도 행렬 (
sns.pairplot()): 데이터셋 내 여러 변수 쌍의 관계를 한눈에 격자 형태로 그려주어 전체적인 상관관계를 한 번에 파악할 수 있습니다.
3. 실무 탐색적 데이터 분석(EDA) 진행 흐름
실제 AI 프로젝트에서 시각화 도구를 다룰 때는 아래와 같은 3단계 프로세스로 진행합니다.
[단일 변수 탐색] 데이터의 형상 확인:
sns.histplot()이나sns.boxplot()을 그려서 개별 입력 변수가 정규분포를 이루고 있는지, 특정 방향으로 데이터가 쏠려 있지는 않은지 확인합니다. 데이터가 심하게 한쪽으로 쏠려 있다면 로그 변환(Log Transformation) 등을 고려합니다.[다변수 탐색] 변수 간의 관계 분석:
sns.scatterplot()과sns.heatmap()을 통해 내가 예측하려는 정답(타깃 변수)과 가장 연관성이 높은 특성(Feature)이 무엇인지 시각적으로 탐색합니다.[이상치 검출 및 정제]:
박스 플롯에 찍히는 이상치 점들을 확인하고, 이 이상치가 단순 데이터 입력 오류인지 혹은 의미 있는 특이 데이터인지 판단하여 제거하거나 변환합니다.
4. 시각화 과정에서 입문자가 자주 범하는 실수 2가지
한글 폰트 깨짐 현상 방치:
Matplotlib과 Seaborn은 기본적으로 영문 폰트 기반으로 작동합니다. 따라서 차트 제목이나 축 레이블에 한글을 넣으면 네모 상자(
ㅁㅁㅁ)로 글자가 깨져 나옵니다. 코딩 시작 부분에서 운영체제에 맞는 한글 폰트(Windows: Malgun Gothic, Mac: AppleGothic)를 전역 설정해 주어야 합니다.시각화 자체에만 집착하기:
화려하고 알록달록한 차트를 그리는 것에 몰두한 나머지, "이 그래프가 데이터에 대해 어떤 통찰(Insight)을 주는가?"에 대한 해석을 놓치는 경우가 많습니다. 시각화의 본질은 그림을 그리는 것이 아니라 데이터의 패턴과 문제를 발견하는 것입니다.
핵심 요약
Matplotlib은 파이썬 시각화의 기본 뼈대로, 차트의 모든 세부 요소를 직접 제어하는 자유도를 제공합니다.
Seaborn은 통계형 시각화에 특화된 라이브러리로, 단 한 줄의 코드로 고급스러운 차트와 이상치/상관계수 분석을 가능하게 합니다.
데이터 시각화는 단순히 결과를 보여주는 것을 넘어, AI 모델 학습 전 데이터의 문제점과 이상치를 발견하는 탐색적 데이터 분석(EDA)의 핵심 과정입니다.
댓글
댓글 쓰기