본문 바로가기
Python

[Python] Streamlit으로 대시보드 만들기

by teamnova 2025. 8. 30.
728x90

안녕하세요.

오늘은 Streamlit을 활용하여 간단하지만 한눈에 보기 좋은 대시보드를 만들어보겠습니다.

Streamlit은 데이터 시각화와 대시보드를 쉽게 만들 수 있는 Python 프레임워크로, 몇 줄의 코드만으로도 멋진 결과물을 얻을 수 있습니다.

 

https://streamlit.io/

 

Streamlit • A faster way to build and share data apps

Streamlit is an open-source Python framework for data scientists and AI/ML engineers to deliver interactive data apps – in only a few lines of code.

streamlit.io

 

1. Streamlit이란?

Streamlit은 데이터 과학자와 AI/ML 엔지니어를 위해 설계된 오픈소스 Python 프레임워크입니다. 복잡한 웹 개발 기술 없이도 인터랙티브한 데이터 앱을 몇 줄의 코드로 만들 수 있습니다.

Streamlit의 주요 특징:

  • 간단한 문법: Python만 알면 OK
  • 빠른 프로토타이핑: 데이터 분석 결과를 바로 공유 가능
  • 무료 배포: Streamlit Cloud를 통해 쉽게 배포 가능

2. 프로젝트 목표

이번 튜토리얼에서는 아주 간단한 판매 데이터 대시보드를 만들어보겠습니다. 더미 데이터를 사용하여 다음과 같은 내용을 시각화할 예정입니다:

  • 매출 데이터 트렌드
  • 제품별 판매량

3. 환경 설정

먼저 Streamlit을 설치합니다. 아래 명령어를 실행하세요

pip install streamlit pandas matplotlib

 

설치가 완료되면 Streamlit 앱을 실행할 준비가 된 것입니다.

 

4. 코드 작성

아래는 기본적인 Streamlit 대시보드 코드입니다. 더미 데이터를 생성하고 이를 시각화하는 과정을 보여줍니다.

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt

# 더미 데이터 생성
data = {
    "날짜": pd.date_range(start="2023-01-01", periods=10),
    "매출": [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000],
    "제품": ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
}
df = pd.DataFrame(data)

# 제목
st.title("간단한 판매 대시보드")

# 데이터 테이블 표시
st.subheader("판매 데이터")
st.dataframe(df)

# 매출 트렌드 시각화
st.subheader("매출 트렌드")
fig, ax = plt.subplots()
ax.plot(df["날짜"], df["매출"], marker="o")
ax.set_title("매출 추이")
ax.set_xlabel("날짜")
ax.set_ylabel("매출")
st.pyplot(fig)

# 제품별 매출 표시
st.subheader("제품별 매출")
st.bar_chart(df.set_index("제품")["매출"])

 

5. 실행하기

위 코드를 app.py라는 이름으로 저장한 뒤 아래 명령어를 실행하세요

streamlit run app.py

 

6. 결과물

판매 데이터 테이블

Streamlit의 st.dataframe()을 활용하여 데이터를 테이블 형태로 표시합니다.

매출 트렌드

matplotlib를 사용하여 날짜별 매출 추이를 시각화합니다.

제품별 매출

Streamlit의 내장 차트 기능인 st.bar_chart()를 사용하여 제품별 매출을 막대 그래프로 보여줍니다.