Shiny 기초

허허맨·2025년 5월 12일

데이터시각화

목록 보기
3/3

🐧 Shiny로 Python 대시보드 만들기 – 펭귄 데이터 예제로 쉽게 시작하기

데이터 분석 결과를 웹에서 실시간으로 보여주고 싶은데, 복잡한 HTML, JS 없이 만들 수는 없을까?
R을 쓴 사람이라면 한 번쯤 들어봤을 Shiny, 이제는 Python에서도 사용할 수 있습니다!

이번 글에서는 Shiny for Python 공식문서 예제를 바탕으로, 펭귄 데이터를 활용한 간단한 웹 대시보드를 만들어보겠습니다.

✅ 공식 문서 참고: https://shiny.posit.co/py/


📌 Shiny란?

Shiny는 R 또는 Python 코드만으로 인터랙티브 웹 앱을 만들 수 있는 프레임워크입니다.

  • HTML/CSS/JS 지식 없이도 데이터 분석 결과를 웹 인터페이스로 표현할 수 있어요.
  • 간단한 입력값 → 실시간 그래프 업데이트, 테이블 필터링, 대시보드 제작까지 가능.
  • Python의 경우 quarto 문서 기반 실행 or shiny run으로 앱 실행.

🛠️ 개발 환경 세팅

아래 패키지를 설치해 주세요:

pip install shiny matplotlib seaborn

📄 기본 Quarto 문서 구조

Shiny for Python은 .qmd 문서를 통해 실행할 수 있어요. 먼저 문서 상단의 메타데이터(YAML)를 정의합니다:

---
title: "Penguin Bills"
format: dashboard
server: shiny
---

그리고 seaborn으로 데이터를 불러옵니다:

import seaborn as sns
penguins = sns.load_dataset("penguins")

📊 사이드바: 사용자 입력 UI 만들기

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 예제를 응용한 것입니다. 주요 기능은 다음과 같아요:

  • 사이드바 필터: 종(species)과 몸무게 제한
  • ValueBox: 종 수, 평균 부리 길이/깊이
  • Scatter Plot: 부리 길이 vs 깊이
  • Data Grid: 테이블로 요약된 정보 보기

전체 코드는 GitHub 링크 참고: github.com/내프로젝트주소


💻 실행 방법

  1. penguins.qmd 파일을 저장한 뒤
  2. 콘다 환경에서 아래 실행:
quarto preview penguins.qmd

또는 .py 기반 앱이라면:

shiny run --reload app.py

🐧 완성된 대시보드 미리 보기

👉 실제 예시: https://huhhuhman.shinyapps.io/shiny/

📷 (여기에 실행 화면 스크린샷 넣어주세요)


✨ 마무리

Shiny for Python은 Streamlit, Dash와 유사하지만, 데이터 분석 친화적인 문서 기반 워크플로우가 강점입니다.
특히 Quarto + Shiny 조합은 리포트 + 대시보드 + 웹앱까지 모두 한 번에 다룰 수 있는 강력한 도구입니다.

✅ 추천 학습 리소스:

profile
사람은 망각의 동물입니다. 때로는 기록으로 과거의 나를 데려옵니다.

0개의 댓글