[판다스 24화] Pandas Plot과 Matplotlib로 데이터 시각화 시작하기 | Python Pandas | 빅분기, 빅데이터분석기사 실기

파이썬(Python) 판다스(Pandas) 라이브러리를 활용해 데이터를 수집하고, 결측치를 처리하며, 정렬 및 구조 변환까지 마쳤다면 그다음 마주하는 중요한 단계는 데이터 시각화(Data Visualization)입니다. 수치와 문자로만 구성된 표 형태의 데이터프레임에서 데이터의 전반적인 분포, 변수 간의 상관관계, 혹은 시계열적 추세와 이상치(Outlier)를 직관적으로 파악하기란 쉽지 않습니다.

이때 판다스 내장 시각화 기능인 plot() 메서드와 파이썬 대표 시각화 라이브러리인 맷플롯립(Matplotlib)을 결합하면 몇 줄의 코드만으로 데이터를 직관적인 그래프로 전환할 수 있습니다. 시각화는 탐색적 데이터 분석(EDA)의 핵심 도이며, 빅데이터분석기사(빅분기) 실기 시험 작업형 전처리 단계에서도 데이터의 형상을 눈으로 검증하는 유용한 도구입니다. 이번 글에서는 두 도구를 활용한 기본 시각화 방법과 실무 필수 그래프 작성법을 체계적으로 정리해 보겠습니다.

1. 파이썬 시각화의 두 기둥: Pandas Plot과 Matplotlib의 관계

파이썬 시각화 생태계를 이해할 때 Pandas Plot과 Matplotlib의 관계를 파악하는 것이 우선입니다.

  • Matplotlib: 파이썬 시각화의 뼈대를 이루는 가장 기초적이고 방대한 하위 레벨(Low-level) 라이브러리입니다. 그래프의 축, 레이블, 범례, 색상 등 모든 요소를 세부적으로 제어할 수 있는 기능을 제공합니다.
  • Pandas Plot: Matplotlib의 복잡한 제어 방식을 간소화하여, 데이터프레임(DataFrame)이나 시리즈(Series) 객체에서 바로 .plot() 메서드를 호출해 그래프를 그릴 수 있도록 돕는 상위 레벨(High-level) 인터페이스입니다. 판다스의 plot() 메서드는 내부적으로 Matplotlib을 백엔드로 사용하므로, 두 도구를 혼용하면 빠르게 그래프를 생성하고 세부 디자인을 조율하는 효율적인 작업이 가능해집니다.

2. 실무 필수 그래프 4가지 및 비즈니스 예시

실무 분석과 데이터 검증에서 가장 빈번하게 사용되는 4가지 핵심 그래프의 작성법을 가상의 가전제품 매장 매출 데이터를 활용해 알아보겠습니다.

import pandas as pd
import matplotlib.pyplot as plt

# 시각화를 위한 가상 매장 데이터 생성
store_df = pd.DataFrame({
    '월': ['1월', '2월', '3월', '4월', '5월'],
    'TV판매량': [120, 150, 80, 200, 140],
    '냉장고판매량': [90, 110, 140, 130, 170],
    '고객만족도': [85, 88, 92, 79, 95]
})

2.1. 시간에 따른 추세를 보는 선 그래프 (Line Plot)

선 그래프는 주로 연속적인 시간 흐름에 따른 데이터의 변동 추이를 파악할 때 활용합니다. kind='line' 옵션을 지정하거나 .plot.line() 구조를 사용합니다.

# 월별 TV 및 냉장고 판매량 추이 시각화
store_df.plot(x='월', y=['TV판매량', '냉장고판매량'], kind='line')
plt.title('Monthly Sales Trend')
plt.ylabel('Units Sold')
plt.show()

2.2. 항목 간 크기를 비교하는 막대 그래프 (Bar Plot)

범주형 변수 간의 수치적 크기를 비교할 때는 막대 그래프가 유용합니다. 가로형 막대는 kind='barh', 세로형 막대는 kind='bar'를 사용합니다.

# 월별 TV 판매량 비교
store_df.plot(x='월', y='TV판매량', kind='bar', color='skyblue')
plt.title('TV Sales by Month')
plt.show()

2.3. 수치 데이터의 분포를 파악하는 히스토그램 (Histogram)

히스토그램은 연속형 변수의 데이터가 어느 구간에 얼마나 밀집해 있는지 빈도 분포를 파악하여 데이터의 편향이나 형태를 확인할 때 사용됩니다.

# TV 판매량의 구간별 빈도 분포 확인 (bins로 구간 개수 조율)
store_df['TV판매량'].plot(kind='hist', bins=4, rwidth=0.9)
plt.title('TV Sales Distribution')
plt.show()

2.4. 두 변수 간의 상관관계를 보여주는 산점도 (Scatter Plot)

산점도는 두 연속형 변수 간의 관계와 데이터 포인트를 격자 위에 점으로 표현하여 동향을 읽어내는 도구입니다.

# TV판매량과 고객만족도 간의 상관관계 시각화
store_df.plot(x='TV판매량', y='고객만족도', kind='scatter', color='red')
plt.title('TV Sales vs Customer Satisfaction')
plt.show()

3. 시각화 완성도를 높이는 Matplotlib 필수 옵션 제어

판다스의 .plot() 메서드로 기본 형태를 그린 후, Matplotlib의 단독 함수들을 결합하면 폰트, 타이틀, 범례 등의 세부 디자인 서식을 지정할 수 있어 보고서나 분석 결과 자료의 시각적 완성도가 향상됩니다.

# 판다스 플롯 객체를 변수에 할당하여 제어 연계
ax = store_df.plot(x='월', y='TV판매량', kind='line', marker='o')

# Matplotlib 함수를 이용한 커스텀 세부 속성 지정
plt.title('Executive Sales Report 2026', fontsize=14, fontweight='bold') # 제목 설정
plt.xlabel('Month of Year', fontsize=12)                                  # X축 레이블
plt.ylabel('Volume (Units)', fontsize=12)                                 # Y축 레이블
plt.grid(True, linestyle='--')                                            # 격자선 추가
plt.legend(['Television'])                                                # 범례 명칭 변경
plt.tight_layout()                                                        # 여백 최적화
plt.show()

한글 깨짐 현상 사전 방지 안내: 영문 텍스트와 달리 한글을 타이틀이나 축 레이블에 사용하면 그래프 내 글자가 네모 모양()으로 깨지는 현상이 빈번하게 일어납니다. 이는 맷플롯립의 기본 폰트가 한글을 지원하지 않기 때문이며, 시스템에 설치된 ‘NanumGothic’ 또는 Windows의 ‘Malgun Gothic’ 등으로 폰트 설정을 상단에 명시해 주는 설정 코드가 필요합니다. (예: plt.rc('font', family='Malgun Gothic'))

4. 빅데이터분석기사 실기 시험 환경에서의 실전 활용 포인트

빅데이터분석기사 실기 시험은 기본적으로 텍스트 기반의 단일 웹 IDE 채점 서버 환경에서 진행되므로, 코드를 실행해도 주피터 노트북처럼 브라우저 상에 시각적인 그래프 이미지가 즉시 렌더링되지 않습니다.

4.1. 시험 환경에서의 시각화 대안 전략

실기 시험장 화면에서 plt.show()를 실행하면 이미지가 출력되지 않거나 그래프가 출력되지 않을 수 있습니다. 따라서 시험 환경에서 변수의 분포나 이상치 유무를 파악하고 싶다면, 이미지 시각화에 의존하기보다 이전 10화에서 다룬 df.describe(), df.skew(), 혹은 df.corr() 등의 기술통계량 산출 함수를 텍스트 형태로 콘솔 창에 프린트하여 간접적으로 왜곡 정도를 진단하는 방식이 안정적입니다.

4.2. EDA 단계에서 시각화 연습의 가치

그럼에도 불구하고 평소 기출문제를 분석하고 연습하는 과정에서 주피터 노트북 환경을 통해 시각화를 수행해야 하는 이유는 분명합니다. 머신러닝 알고리즘에 데이터를 주입하기 전, 이상치 제거 기준을 사분위수 범위(IQR)로 잡을지 혹은 로그 변환(Log Transformation)을 적용해 데이터 분포를 정규분포 형태로 다듬을지 결정하는 직관적인 피드백을 제공하기 때문입니다. 시각화 도구를 다루는 숙련도는 복잡하게 얽힌 다차원 변수들의 특성을 주도적으로 해석하는 훌륭한 밑바탕이 됩니다.

5. 요약 및 다음 화 안내

  • df.plot(kind='...' ): 판다스 객체에서 바로 호출하여 선, 막대, 히스토그램, 산점도 등 분석용 기본 그래프를 신속하게 구현합니다.
  • Matplotlib 결합: plt.title(), plt.grid() 등 세부 옵션 제어 함수들을 결합하여 그래프 서식의 시각적 명확성을 보완합니다.
  • 한글 폰트 설정: 한글 글꼴 유실에 따른 깨짐 현상 방지를 위해 폰트 설정을 사전에 고려해야 합니다.

다음 [판다스 25화]부터는 지금까지 다진 전처리 기술들을 입체적으로 융합하는 실전 분석 프로젝트 단계로 진입하여, 매출 데이터 분석 실습: 월별 매출과 성장률 분석하기에 대해 상세하게 학습해 보겠습니다. 비즈니스 매출 성과 지표를 직접 정제하고 가공하는 과정을 함께 시작해 봅시다.

댓글 남기기