Ch.1 Python 라이브러리 15선

Streamlit — 데이터 대시보드 한 줄로

Streamlit이 무엇인지 설명할 수 있다Python 스크립트를 웹 대시보드로 변환할 수 있다사이드바 필터와 차트가 있는 대시보드를 만들 수 있다

분석 결과를 보여줘야 하는데 웹 개발은 모릅니다

팀장님이 매출 데이터를 보기 좋게 대시보드로 만들라고 합니다. 그런데 HTML, CSS, JavaScript는 하나도 모릅니다.

웹 개발을 몰라도 대시보드를 만들 수 있을까?

Streamlit이면 됩니다. Python 스크립트 하나를 웹 대시보드로 바꿔줍니다. 디자인 지식은 전혀 필요 없습니다.


article

핵심 내용

Streamlit은 Python 스크립트를 웹 대시보드로 변환하는 프레임워크입니다. HTML/CSS 없이, Python 코드만으로 인터랙티브 웹앱이 완성됩니다.

한 줄 요약: Python 코드 = 웹 대시보드, 디자인 지식 불필요 실생활 비유: PPT에서 차트를 만들면 발표용 슬라이드가 되듯, Streamlit에서 코드를 쓰면 웹 대시보드가 됩니다. 다만 이건 실시간으로 데이터가 바뀝니다.

데이터 분석 결과를 팀원에게 공유하거나, 인터랙티브 보고서를 빠르게 만들 때 씁니다.

수동으로 하면: HTML 작성 → CSS 디자인 → JavaScript 차트 → 서버 세팅 → 일주일 이상

Streamlit 쓰면: st.line_chart(data) → streamlit run app.py → 5분이면 대시보드 완성

설치하고, 첫 대시보드를 띄워 봅시다.

pip install streamlit
import streamlit as st
import pandas as pd

st.title("나의 첫 대시보드")

data = pd.DataFrame({
    "월": ["1월", "2월", "3월", "4월"],
    "매출": [120, 150, 180, 200]
})

st.bar_chart(data.set_index("월"))
st.dataframe(data)

실행 방법이 다릅니다! python이 아니라 streamlit 명령어를 씁니다. 터미널에 streamlit run app.py 를 입력하면 브라우저가 열리며 대시보드가 나타납니다.

AI에게 대시보드를 만들어 달라고 할 때, 데이터 종류 + 차트 타입 + 필터 조건을 구체적으로 말하세요.

좋은 프롬프트 예시: "Streamlit으로 사이드바 필터 + 선 그래프 + 데이터 테이블 대시보드 만들어줘. 월별 매출 데이터를 지역별로 필터링할 수 있게"

프롬프트 변형: "CSV 파일 업로드 기능도 추가하고, 업로드한 데이터로 자동으로 차트를 그려줘"

import streamlit as st
import pandas as pd

st.title("매출 분석 대시보드")

# 사이드바 필터
region = st.sidebar.selectbox("지역 선택", ["전체", "서울", "부산", "대구"])
month = st.sidebar.slider("월 선택", 1, 12, (1, 6))

# 샘플 데이터
data = pd.DataFrame({
    "월": range(1, 13),
    "서울": [100, 120, 130, 150, 170, 200, 190, 210, 230, 250, 240, 260],
    "부산": [80, 90, 100, 110, 120, 140, 130, 150, 160, 170, 165, 180],
    "대구": [60, 70, 75, 85, 95, 110, 105, 120, 130, 140, 135, 150],
})

st.line_chart(data.set_index("월"))
st.dataframe(data)

미니 프로젝트: 매출 분석 대시보드 사이드바 필터, 핵심 지표 카드, 선 그래프, 데이터 테이블을 한 화면에 담습니다.

import streamlit as st
import pandas as pd

st.set_page_config(page_title="매출 대시보드", layout="wide")
st.title("월별 매출 분석 대시보드")

# 데이터 생성
data = pd.DataFrame({
    "월": [f"{m}월" for m in range(1, 13)],
    "매출": [1200, 1500, 1800, 2000, 2200, 2500, 2400, 2700, 2900, 3100, 3000, 3400],
    "비용": [800, 900, 1000, 1100, 1200, 1300, 1250, 1400, 1500, 1600, 1550, 1700],
})
data["이익"] = data["매출"] - data["비용"]

# 사이드바 필터
st.sidebar.header("필터")
start, end = st.sidebar.select_slider(
    "기간 선택", options=data["월"].tolist(),
    value=(data["월"].iloc[0], data["월"].iloc[-1])
)

# 핵심 지표
col1, col2, col3 = st.columns(3)
col1.metric("총 매출", f"{data['매출'].sum():,}만원")
col2.metric("총 이익", f"{data['이익'].sum():,}만원")
col3.metric("이익률", f"{data['이익'].sum() / data['매출'].sum() * 100:.1f}%")

# 차트
st.subheader("매출 vs 비용 추이")
st.line_chart(data.set_index("월")[["매출", "비용"]])

# 테이블
st.subheader("상세 데이터")
st.dataframe(data, use_container_width=True)

실행 방법: dashboard.py로 저장 → streamlit run dashboard.py 실행 → 브라우저에서 사이드바로 기간을 조절하면 차트와 지표가 실시간으로 바뀝니다.

Streamlit 앱을 실행하는 명령어는?

key

핵심 용어

매출 분석 대시보드

필터로 기간/지역 선택 → 차트가 실시간 변경

데이터 탐색 도구

CSV 파일 업로드 → 자동으로 표와 그래프 생성

ML 모델 데모

슬라이더로 입력값 조절 → 예측 결과 즉시 표시

check_circle

핵심 정리

  • 1Streamlit은 Python 코드를 웹 대시보드로 변환하는 프레임워크 — HTML/CSS 불필요
  • 2st.line_chart(), st.bar_chart(), st.dataframe()으로 차트와 표를 한 줄로 생성
  • 3streamlit run app.py로 실행 — python이 아니라 streamlit 명령어를 쓴다

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작