본문 바로가기

ServerSide/Python

Python을 이용한 데이터 시각화(with 엑셀)

📊 Python을 이용한 데이터 시각화(with 엑셀)

Python에서는 다양한 라이브러리를 활용하여 데이터를 시각적으로 표현할 수 있습니다.
대표적으로 사용되는 라이브러리는 Matplotlib, openpyxl, Plotly입니다.

(1) 주요 라이브러리

1. Matplotlib

Matplotlib은 Python에서 데이터를 시각화하기 위한 대표적인 2D 시각화 라이브러리로, 2D 차트 및 그래프 생성에 특화되어 있습니다. 다양한 차트를 지원하고 세밀한 커스터마이징이 가능합니다.

주요 특징

  • 📈 다양한 차트 유형: 선 그래프, 막대 그래프, 산점도, 히스토그램, 파이 차트 등
  • 🔲 서브플롯 기능: 여러 차트를 하나의 화면에 배치 가능
  • 🎨 세밀한 커스터마이징: 스타일, 색상, 레이블 등 조정
  • 🌀 동적 차트 지원: 애니메이션 및 실시간 시각화 가능
  • 📤 엑셀 연동: 차트를 이미지로 저장하고 openpyxl을 통해 엑셀에 삽입 가능

2. openpyxl

openpyxl은 Excel 파일을 읽고 수정하는 데 특화된 라이브러리입니다.
Python에서 Excel 파일을 생성하고 수정하며, 셀 서식 및 차트 삽입까지 가능합니다

주요 특징

  • 📂 Excel 파일 작업: 읽기/쓰기, 셀 서식 및 데이터 수정 가능
  • 📊 기본 차트 생성: 엑셀 내에서 차트 생성 가능
  • 📎 Matplotlib 차트 삽입: 이미지로 저장한 차트를 시트에 삽입 가능

3. Plotly

Plotly는 대화형 차트를 생성하는 라이브러리로, 웹 기반 대시보드 환경에서 주로 사용됩니다. 사용자에게 다양한 탐색 및 분석 기능을 제공합니다.

주요 특징

  • 🖱 대화형 차트: 줌, 드래그, 확대/축소 등 다양한 인터랙션
  • 🗺 고급 시각화: 3D 차트, 지도 기반 시각화
  • 🌐 웹 기반 출력: HTML 형태로 대시보드 구성 가능
  • 🖼 엑셀 연동: 직접 저장은 불가, 이미지로 변환해 엑셀에 삽입

📋 Matplotlib vs openpyxl vs Plotly 비교표

기능 Matplotlib openpyxl Plotly
주요 목적 데이터 시각화 (차트 생성) Excel 파일 작업 (차트 포함) 대화형 시각화 (웹 기반)
차트 유형 선, 막대, 파이, 산점도 등 다양 엑셀 기본 차트 (막대, 원형 등) 대화형, 3D, 지도 등
엑셀 연동 이미지로 저장 후 삽입 가능 직접 차트 생성 가능, 셀 스타일링 가능 이미지로 저장 후 삽입 (직접 저장 불가)
DB 연동 pandas, SQLAlchemy 지원 pandas, SQLAlchemy 지원 pandas, SQLAlchemy 지원
대화형 기능 간단한 인터랙션 (애니메이션 등) 없음 웹 브라우저에서 인터랙티브 지원
활용 사례 데이터 시각화 후 이미지 저장 DB 데이터 → Excel 저장 및 차트 생성 웹 대시보드 구성 및 데이터 공유
지원 포맷 PNG, PDF, SVG, EPS 등 .xlsx 파일, 차트 포함 저장 가능 HTML, PNG, JPEG, SVG, PDF 등

4. ✅ Matplotlib 선택 이유

  • openpyxl도 엑셀 차트를 지원하지만, Matplotlib다양한 차트, 세밀한 디자인 조정, 인터랙티브 기능 등을 제공하여 복잡한 시각화에 유리합니다.
  • 차트를 웹 페이지 및 엑셀 다운로드 기능에서 모두 활용해야 하므로 Matplotlib + openpyxl 조합이 가장 적합합니다.

5. 🛠 Matplotlib 엑셀 연동 보완 방식

Matplotlib은 Excel 저장 기능이 없기 때문에, openpyxl 또는 xlsxwriter와 함께 사용해야 합니다.

  • 구현 프로세스 예시
    • 📥 DB에서 데이터 추출
    • 📈 Matplotlib으로 차트 생성 및 이미지로 저장 (.png)
    • 📄 openpyxl을 사용해 Excel 파일 생성
    • 📎 생성한 이미지 차트를 엑셀 시트에 삽입
    • 🌐 웹 애플리케이션 (Flask/Django)에서 엑셀 다운로드 기능 제공

(2) Matplotlib이란?

Matplotlib은 Python에서 가장 널리 사용되는 시각화 라이브러리입니다.

2D/3D 그래프를 생성하여 분석 결과를 시각적으로 표현할 수 있습니다.

1. Matplotlib 사용 방식

  • pyplot 방식
    • MATLAB 스타일 인터페이스
    • import matplotlib.pyplot as plt
    • 간편하고 빠르게 그래프 작성 가능
  • 객체 지향 방식 (OOP 스타일)
    • Figure, Axes 등 객체 기반 구성
    • 복잡한 레이아웃이나 고급 커스터마이징에 적합
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [10, 20, 25])
plt.show()

2. Matplotlib 주요 기능

  • 🧩 서브플롯: 여러 그래프를 한 화면에 배치
  • 🎨 세밀한 커스터마이징: 색상, 스타일, 폰트, 레이블 등
  • 💾 다양한 출력 포맷: PNG, PDF, SVG, EPS 등
  • 🌀 고급 기능: 애니메이션, 인터랙티브 차트

3. 지원 차트 유형

차트 유형 설명
📈 선 그래프 시간에 따른 연속적 데이터 시각화
📊 막대 그래프 범주형 데이터 비교
🧮 히스토그램 데이터 분포 확인
🥧 파이 차트 각 항목의 비율 표현
🔘 산점도 두 변수 간의 상관관계 표현
📦 박스 플롯 중앙값, 이상치, 범위 시각화
🧊 히트맵 색상으로 표현된 2D 데이터
📚 누적 그래프 누적된 값 시각화
🧭 3D 플롯 3D 시각화 (산점도, 표면 그래프 등)

🔗 참고 자료