본문 바로가기

Category/Note

Streamlit으로 누구나 만드는 웹 애플리케이션

728x90

Streamlit 소개

Streamlit은 Python으로 빠르고 간단하게 데이터 중심의 웹 애플리케이션을 만들 수 있는 오픈소스 프레임워크입니다. Python 코드를 기반으로 복잡한 웹 개발 지식 없이도 대화형 웹 애플리케이션을 구축할 수 있습니다. 데이터 분석가, 머신러닝 엔지니어, 연구원 등 비개발자도 쉽게 사용할 수 있는 도구로 각광받고 있습니다.

주요 특징

1. 쉬운 설치 및 사용

  • Streamlit은 Python 기반이며, 설치 후 간단한 Python 코드만으로 웹 앱을 만들 수 있습니다.
  • Flask, Django 같은 웹 프레임워크보다 훨씬 간단하며, HTML이나 CSS 같은 추가 기술을 배우지 않아도 됩니다.

2. 대화형 위젯

  • 사용자는 버튼, 슬라이더, 텍스트 입력 등의 위젯을 쉽게 추가할 수 있습니다.
  • 대화형 데이터 시각화 및 사용자 입력 처리가 가능합니다.

예: 슬라이더 추가

import streamlit as st

x = st.slider("값을 선택하세요", 0, 100)
st.write(f"선택한 값은 {x}입니다.")

3. 데이터 시각화

  • Pandas, Matplotlib, Plotly 등과 완벽히 호환되며, 데이터프레임 및 차트를 웹 애플리케이션에 쉽게 포함할 수 있습니다.
  • 사용자는 데이터프레임을 정렬하거나 필터링하는 대화형 도구를 활용할 수 있습니다.

예: Matplotlib 차트 렌더링

import streamlit as st
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)

st.pyplot(fig)

4. 실시간 데이터 갱신

  • 코드가 변경되면 웹 앱이 자동으로 업데이트됩니다.
  • Streamlit은 "Hot Reloading" 기능을 지원하여 개발 중 앱을 재시작할 필요가 없습니다.

5. 클라우드 배포

  • Streamlit 앱은 로컬에서 실행할 수 있을 뿐만 아니라 Streamlit Cloud를 통해 배포 가능합니다.
  • 배포된 앱은 누구나 웹 브라우저를 통해 접근할 수 있습니다.

설치 방법

Streamlit은 간단히 pip로 설치할 수 있습니다.

pip install streamlit

간단한 예제

1. Hello World 예제

import streamlit as st

st.title("Hello Streamlit!")
st.write("Streamlit은 Python 기반의 간단하고 강력한 웹 앱 프레임워크입니다.")

2. 데이터프레임 및 사용자 입력 예제

import streamlit as st
import pandas as pd

# 데이터프레임 생성
data = {"이름": ["Alice", "Bob", "Charlie"], "점수": [85, 90, 95]}
df = pd.DataFrame(data)

st.title("데이터프레임 및 사용자 입력 예제")

# 데이터프레임 표시
st.write("학생 성적 데이터:")
st.dataframe(df)

# 사용자 입력
name = st.text_input("학생 이름을 입력하세요")
if name:
    st.write(f"{name} 학생의 데이터를 추가할 수 있습니다.")

Streamlit 실행 방법

1. Python 파일을 생성합니다. 예: app.py

2. 아래 명령어로 실행합니다:

streamlit run app.py

3. 실행 후 브라우저에서 앱을 확인할 수 있습니다. 기본 URL은 http://localhost:8501입니다.

Streamlit의 활용 분야

  1. 데이터 분석
    • 데이터프레임, 통계 값, 그래프를 웹 인터페이스로 쉽게 공유.
  2. 머신러닝 모델 데모
    • 학습된 머신러닝 모델을 Streamlit으로 감싸 웹 애플리케이션 형태로 제공.
  3. 대화형 데이터 시각화
    • 실시간으로 데이터를 필터링하고 시각화하는 도구 제작.
  4. 대시보드
    • 복잡한 보고서를 Streamlit 대시보드로 간소화하여 대화형으로 제공.

Streamlit의 장점

  1. 단순한 코드
    • HTML, CSS, JavaScript를 몰라도 간단한 Python 코드로 웹 앱 제작 가능.
  2. 빠른 개발 속도
    • 데이터 중심 앱을 빠르게 개발하고 공유할 수 있음.
  3. 무료 및 오픈소스
    • Streamlit은 무료이며 누구나 사용할 수 있습니다.
  4. 활발한 커뮤니티
    • 다양한 튜토리얼과 예제를 제공하는 커뮤니티가 활성화되어 있습니다.

Streamlit의 단점

  1. 복잡한 웹 애플리케이션 제작에는 한계가 있음.
    • 예: 사용자 인증, 복잡한 라우팅.
  2. 배포를 위해 추가적인 설정이 필요할 수 있음.
    • 예: Streamlit Cloud 사용 시 GitHub 연결.

Streamlit 공식 문서 및 리소스

728x90