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의 활용 사례
- 데이터 분석 대시보드
- 데이터를 요약하거나 분석 결과를 공유할 수 있는 웹 대시보드를 생성.
- 머신러닝 모델 시연
- 사용자 입력에 따라 머신러닝 모델을 실행하고 결과를 시각적으로 표현.
- 인터랙티브 데이터 탐색 도구
- 사용자가 데이터를 직접 필터링하거나 탐색할 수 있도록 인터랙티브한 UI 제공.
- 교육 및 프레젠테이션
- 데이터를 설명하거나 분석 방법을 시연하는 데 사용.
Streamlit의 장점과 단점
장점
- 빠르고 간단한 애플리케이션 개발.
- Python 코드에 초점이 맞춰져 있어 친숙.
- 다양한 데이터 시각화 라이브러리와 통합 가능.
- 빠르게 프로토타입을 만들고 공유할 수 있음.
단점
- 대규모 애플리케이션에는 부적합할 수 있음.
- 복잡한 레이아웃 커스터마이징이 어려움.
- 웹 개발에 비해 기능이 제한적임.