Streamlit: 데이터 기반 애플리케이션 개발을 위한 간단한 Python 라이브러리

Posted by

Streamlit은 Python을 사용하여 데이터 기반 웹 애플리케이션을 쉽고 빠르게 개발할 수 있는 오픈 소스 라이브러리이다. 데이터 사이언티스트와 머신러닝 엔지니어들이 데이터 시각화, 대시보드, 인터랙티브 애플리케이션을 간단히 구축할 수 있도록 설계되었다.


Streamlit의 주요 특징

간단한 사용법

  • Streamlit은 기존의 Python 스크립트에 코드를 추가하는 방식으로 동작한다.
  • HTML, CSS, JavaScript와 같은 웹 기술을 따로 배울 필요 없이 Python 코드만으로 애플리케이션을 개발할 수 있다.

데이터 시각화

  • Pandas, Matplotlib, Plotly, Seaborn 등과 같은 시각화 라이브러리와 잘 통합되어 데이터를 직관적으로 표현할 수 있다.

실시간 인터랙티브 UI

  • 슬라이더, 체크박스, 드롭다운 메뉴 등 다양한 위젯을 제공하여 사용자가 실시간으로 데이터를 탐색하거나 분석 결과를 확인할 수 있다.

빠른 개발

  • 단 몇 줄의 코드로 복잡한 애플리케이션을 만들 수 있다.
  • 코드의 변경 사항은 즉시 웹 애플리케이션에 반영된다.

오픈 소스 및 무료

  • Streamlit은 오픈 소스 프로젝트로, 누구나 무료로 사용할 수 있다.

설치 및 시작하기

Streamlit 설치

pip install streamlit

기본 앱 실행

# example.py
import streamlit as st

st.title("Hello, Streamlit!")
st.write("Streamlit is really easy!") 

터미널에서 아래 명령어를 실행하면 웹 애플리케이션이 실행된다.

streamlit run example.py

결과 확인

실행 후 브라우저에서 http://localhost:8501로 접속하면 애플리케이션을 볼 수 있다.


주요 기능 사용 예시

텍스트와 입력 위젯

t.title("Streamlit Demo")
st.text_input("Please enter your name:", key="name")
st.write(f"Hello, {st.session_state.name}님!")

데이터 프레임 표시

import pandas as pd

data = { "Name": ["Alice", "Bob", "Charlie"], "Score": [85, 90, 78] }
df = pd.DataFrame(data)
st.table(df)

데이터 시각화

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)

실시간 데이터 업데이트

import time

st.title("Update real-time data")
progress = st.progress(0)

for i in range(100):
    time.sleep(0.1)
    progress.progress(i + 1)

Streamlit의 활용 사례

  1. 데이터 분석 대시보드
    • 데이터를 요약하거나 분석 결과를 공유할 수 있는 웹 대시보드를 생성.
  2. 머신러닝 모델 시연
    • 사용자 입력에 따라 머신러닝 모델을 실행하고 결과를 시각적으로 표현.
  3. 인터랙티브 데이터 탐색 도구
    • 사용자가 데이터를 직접 필터링하거나 탐색할 수 있도록 인터랙티브한 UI 제공.
  4. 교육 및 프레젠테이션
    • 데이터를 설명하거나 분석 방법을 시연하는 데 사용.

Streamlit의 장점과 단점

장점

  • 빠르고 간단한 애플리케이션 개발.
  • Python 코드에 초점이 맞춰져 있어 친숙.
  • 다양한 데이터 시각화 라이브러리와 통합 가능.
  • 빠르게 프로토타입을 만들고 공유할 수 있음.

단점

  • 대규모 애플리케이션에는 부적합할 수 있음.
  • 복잡한 레이아웃 커스터마이징이 어려움.
  • 웹 개발에 비해 기능이 제한적임.

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다