데이터

제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 03-3

Leah (리아) 2025. 9. 30. 16:11
반응형

Chapter 03. 데이터 시각화를 위한 matplotlib과 seaborn

 

Pandas에서 그래프 그리기

1. plot 함수란?

  • 시리즈: 인덱스를 x축, 값을 y축으로 사용
  • 데이터프레임: 각 컬럼이 개별 선 또는 막대 그래프로 표현
  • Matplotlib을 내부적으로 사용하기 때문에, plot을 통해 간단히 시각화 가능
series.plot()
df.plot()

 


2. 주요 매개 변수

Pandas의 plot 메서드는 다양한 인자를 지원합니다.

  • kind: 그래프 종류 지정 (기본 'line')
    • 가능 값: 'line', 'bar', 'barh', 'hist', 'box', 'kde', 'scatter', 'pie'
  • x, y: x축과 y축에 사용할 열 지정
  • title: 그래프 제목
  • xlabel, ylabel: 축 이름
  • figsize: 그래프 크기 지정
  • color: 색상
  • grid: 격자 표시 여부
  • legend: 범례 표시 여부 (기본값 True)
  • style: 선 스타일 지정
  • ax: 특정 Axes 객체 위에 그래프 그리기

👉 plot 하나만으로 다양한 형태의 시각화를 구현할 수 있습니다.


3. groupby와 피벗 테이블 시각화

  • groupby나 pivot_table은 행·열 인덱스를 동시에 가지기 때문에 Matplotlib에서 바로 다루기 어렵지만, Pandas의 plot을 사용하면 간단하게 시각화 가능
  • 필요 시 .T (transpose, 전치 메서드)를 사용해 행과 열을 전환 후 시각화

 

Seaborn 기초

1. Seaborn이란?

  • Matplotlib 기반으로 만들어진 고급 시각화 라이브러리
  • 특징:
    • 통계적 데이터 시각화 지원 → 분포, 상관관계, 패턴 파악에 유용
    • 세련된 스타일 → 색상 팔레트, 격자, 선 굵기 등을 자동 적용
    • Pandas DataFrame과 호환성 높음 → hue, size, style 등으로 범주형 변수 구분 가능
  • 단점: 유연성은 Matplotlib보다 부족해서 매우 복잡한 그래프엔 적합하지 않을 수 있음

2. 자주 사용되는 그래프

  • scatterplot (산점도)
    • sns.scatterplot(x, y, data, hue, size)
    • 색상(hue)과 크기(size)로 그룹을 직관적으로 구분 가능
  • heatmap (히트맵)
    • 2차원 데이터를 색상으로 표현
    • 주요 인자:
      • cmap: 색상 팔레트
      • annot=True: 셀에 값 표시
      • fmt: 표시 형식 지정 (예: 소수점 둘째 자리 '.2f')
      • linewidths, linecolor: 셀 경계선 설정
  • kdeplot (커널 밀도 추정)
    • 데이터의 분포를 부드러운 곡선으로 표현
    • 연속형 데이터 집중 구간 파악에 유용
    • hue로 그룹별 밀도 곡선 표현 가능
  • histplot (히스토그램)
    • sns.histplot(data, x, hue, bins, kde, stat)
    • kde=True 설정 시 KDE 곡선과 함께 출력
    • stat: 'count', 'density', 'probability', 'frequency' 옵션 지원
  • pairplot (다변수 관계 시각화)
    • 데이터프레임 변수들 간의 쌍별 관계를 한눈에 확인 가능
    • hue 인자로 범주형 변수별 색상 구분
    • vars로 특정 변수만 선택 가능

 

 

* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.


 

💡 생각 정리

이번 강의에서는 Matplotlib을 직접 다루지 않고도 Pandas와 Seaborn을 활용해 간단하고 직관적으로 그래프를 그릴 수 있다는 점이 핵심이었다. 실제 데이터 분석 과정에서 대부분의 작업은 데이터프레임 단위로 이루어지므로, Pandas의 plot 메서드를 통해 바로 시각화를 할 수 있다는 것은 큰 장점이라고 느꼈다.

 

특히 kind 매개 변수를 이용해 단 몇 줄의 코드만으로 막대 그래프에서 히스토그램, 박스 플롯으로 손쉽게 전환할 수 있다는 점은 데이터 탐색 과정에서 매우 유용했다. 또한 groupby와 피벗 테이블 결과를 시각화할 수 있다는 부분은 실무에서도 곧바로 활용 가능한 팁이라서, 복잡한 인덱스를 가진 데이터도 손쉽게 시각화할 수 있다는 점이 인상 깊었다.

 

더 나아가 Seaborn은 Matplotlib보다 한층 더 세련되고 직관적인 고급 시각화 기능을 제공한다는 점에서 큰 강점이 있었다. 특히 hue 옵션을 통해 범주형 변수를 색상으로 쉽게 구분할 수 있어 분석 결과를 직관적으로 전달할 수 있고, heatmap과 pairplot은 단순 분포 확인을 넘어서 변수 간 상관관계와 패턴을 탐색하는 데 강력한 도구라는 것을 배웠다.

 

다만, 매우 복잡한 맞춤형 그래프가 필요할 때는 결국 Matplotlib을 병행해야 하므로, Pandas, Seaborn, Matplotlib을 적절히 조합하는 능력이 데이터 분석 시각화의 핵심 역량이라는 점을 다시금 깨달았다.


🚀 적용점

  •  
  • 실제 데이터셋을 불러와 df.plot(kind='line'), df.plot(kind='bar'), df.plot(kind='box') 등 다양한 그래프를 시도하며 표현 방식을 비교한다.
  • groupby 결과를 plot으로 시각화하여 집계 결과를 빠르게 확인하고, 피벗 테이블 결과를 .T로 전치하여 레이아웃을 바꿔가며 가독성을 비교한다.
  • Matplotlib의 커스터마이징 옵션과 Pandas의 plot 매개 변수를 조합해 가독성이 높은 그래프를 설계해본다.
  • Seaborn을 활용해 더 직관적인 시각화를 실습한다.
    • scatterplot: 고객 데이터를 불러와 연령대별 구매 금액을 산점도로 표현하고, 성별(hue)로 색상을 구분한다.
    • heatmap: 상관계수 행렬을 히트맵으로 시각화해 변수 간 상관관계를 탐색한다.
    • kdeplot: 나이, 소득 등 연속형 변수의 분포를 KDE 곡선으로 확인해 데이터 집중 구간을 파악한다.
    • histplot: 히스토그램에서 bins 값을 달리하고 kde=True 옵션을 함께 적용해 분포를 비교한다.
    • pairplot: Iris 같은 다변수 데이터셋을 시각화해 변수 간 패턴을 한눈에 파악한다.

👉 Pandas의 plot은 분석과 시각화를 연결하는 중요한 다리 역할을 하고, Seaborn은 데이터 분석 초기 단계에서 패턴 탐색과 직관적 시각화에 매우 효과적이다. 따라서 다양한 데이터셋에 Pandas와 Seaborn을 모두 적용하며 반복 연습하는 것이 중요하다.

반응형