📊 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 시각화 (산점도, 표면 그래프 등) |