Ch.1 Python 라이브러리 15선
Streamlit — 데이터 대시보드 한 줄로
분석 결과를 보여줘야 하는데 웹 개발은 모릅니다
팀장님이 매출 데이터를 보기 좋게 대시보드로 만들라고 합니다. 그런데 HTML, CSS, JavaScript는 하나도 모릅니다.
웹 개발을 몰라도 대시보드를 만들 수 있을까?
Streamlit이면 됩니다. Python 스크립트 하나를 웹 대시보드로 바꿔줍니다. 디자인 지식은 전혀 필요 없습니다.
핵심 내용
Streamlit은 Python 스크립트를 웹 대시보드로 변환하는 프레임워크입니다. HTML/CSS 없이, Python 코드만으로 인터랙티브 웹앱이 완성됩니다.
한 줄 요약: Python 코드 = 웹 대시보드, 디자인 지식 불필요 실생활 비유: PPT에서 차트를 만들면 발표용 슬라이드가 되듯, Streamlit에서 코드를 쓰면 웹 대시보드가 됩니다. 다만 이건 실시간으로 데이터가 바뀝니다.
데이터 분석 결과를 팀원에게 공유하거나, 인터랙티브 보고서를 빠르게 만들 때 씁니다.
수동으로 하면: HTML 작성 → CSS 디자인 → JavaScript 차트 → 서버 세팅 → 일주일 이상
Streamlit 쓰면: st.line_chart(data) → streamlit run app.py → 5분이면 대시보드 완성
설치하고, 첫 대시보드를 띄워 봅시다.
pip install streamlitimport 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 앱을 실행하는 명령어는?
핵심 용어
매출 분석 대시보드
필터로 기간/지역 선택 → 차트가 실시간 변경
데이터 탐색 도구
CSV 파일 업로드 → 자동으로 표와 그래프 생성
ML 모델 데모
슬라이더로 입력값 조절 → 예측 결과 즉시 표시
핵심 정리
- 1Streamlit은 Python 코드를 웹 대시보드로 변환하는 프레임워크 — HTML/CSS 불필요
- 2st.line_chart(), st.bar_chart(), st.dataframe()으로 차트와 표를 한 줄로 생성
- 3streamlit run app.py로 실행 — python이 아니라 streamlit 명령어를 쓴다
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작