
데이터 분석 결과를 웹에서 실시간으로 보여주고 싶은데, 복잡한 HTML, JS 없이 만들 수는 없을까?
R을 쓴 사람이라면 한 번쯤 들어봤을 Shiny, 이제는 Python에서도 사용할 수 있습니다!
이번 글에서는 Shiny for Python 공식문서 예제를 바탕으로, 펭귄 데이터를 활용한 간단한 웹 대시보드를 만들어보겠습니다.
✅ 공식 문서 참고: https://shiny.posit.co/py/
Shiny는 R 또는 Python 코드만으로 인터랙티브 웹 앱을 만들 수 있는 프레임워크입니다.
quarto 문서 기반 실행 or shiny run으로 앱 실행.아래 패키지를 설치해 주세요:
pip install shiny matplotlib seaborn
Shiny for Python은 .qmd 문서를 통해 실행할 수 있어요. 먼저 문서 상단의 메타데이터(YAML)를 정의합니다:
---
title: "Penguin Bills"
format: dashboard
server: shiny
---
그리고 seaborn으로 데이터를 불러옵니다:
import seaborn as sns
penguins = sns.load_dataset("penguins")
from shiny.express import render, ui
ui.input_select("x", "Variable:", choices=["bill_length_mm", "bill_depth_mm"])
ui.input_select("dist", "Distribution:", choices=["hist", "kde"])
ui.input_checkbox("rug", "Show rug marks", value=False)
input_select: 드롭다운 메뉴input_checkbox: 체크박스input.변수명() 형태로 접근할 수 있어요@render.plot
def displot():
sns.displot(
data=penguins,
hue="species",
multiple="stack",
x=input.x(),
rug=input.rug(),
kind=input.dist()
)
사용자가 선택한 변수(x)와 시각화 유형(hist, kde)에 따라 실시간으로 그래프가 바뀝니다.
아래 코드는 공식 문서의 penguins 예제를 응용한 것입니다. 주요 기능은 다음과 같아요:
전체 코드는 GitHub 링크 참고: github.com/내프로젝트주소
penguins.qmd 파일을 저장한 뒤quarto preview penguins.qmd
또는 .py 기반 앱이라면:
shiny run --reload app.py
👉 실제 예시: https://huhhuhman.shinyapps.io/shiny/
📷 (여기에 실행 화면 스크린샷 넣어주세요)
Shiny for Python은 Streamlit, Dash와 유사하지만, 데이터 분석 친화적인 문서 기반 워크플로우가 강점입니다.
특히 Quarto + Shiny 조합은 리포트 + 대시보드 + 웹앱까지 모두 한 번에 다룰 수 있는 강력한 도구입니다.
✅ 추천 학습 리소스: