데이터 분석과 AI 프로젝트를 진행하며, 종종 빠르게 결과물을 시각화하거나 프로토타입을 만들어야 할 때가 많습니다. 이때 제가 자주 사용하는 도구가 바로 Streamlit입니다. Streamlit은 파이썬 코드 몇 줄로 손쉽게 웹 애플리케이션을 만들 수 있는 프레임워크로, 특히 데이터 시각화와 AI 모델 배포에 최적화되어 있습니다.
이번 글에서는 Streamlit의 기본 사용법부터 실전 예제까지 다뤄보겠습니다.1. Streamlit이란?
Streamlit은 파이썬 기반의 오픈소스 웹 프레임워크로, 다음과 같은 특징을 가지고 있습니다:- 간단한 코드: HTML, CSS, JavaScript 없이도 파이썬 코드만으로 웹앱 제작 가능.
- 빠른 개발: 데이터 분석 결과나 모델을 바로 시각화하여 공유 가능.
- 다양한 위젯 지원: 슬라이더, 버튼, 체크박스 등 인터랙티브 UI 구성 가능.
- 손쉬운 배포: Streamlit Cloud를 통해 클릭 몇 번으로 앱을 배포할 수 있음.
2. 설치 및 기본 실행
Streamlit 설치:bashpip install streamlit
bashstreamlit hello
3. 첫 번째 앱 만들기
코드 작성
아래와 같은 간단한 코드를 작성해app.py
라는 파일로 저장합니다:pythonimport streamlit as st # 제목 출력 st.title("Hello, Streamlit!") st.write("이것은 Streamlit으로 만든 첫 번째 웹앱입니다.")
앱 실행
터미널에서 다음 명령어를 입력합니다:bashstreamlit run app.py
http://localhost:8501
로 접속하면 앱이 실행된 것을 확인할 수 있습니다.4. 실전 예제: 데이터 시각화 대시보드
이제 실제 데이터를 활용한 대시보드를 만들어 보겠습니다.코드 작성
아래 코드를dashboard.py
라는 파일로 저장하세요:pythonimport streamlit as st import pandas as pd import numpy as np # 제목과 설명 추가 st.title("데이터 시각화 대시보드") st.write("랜덤 데이터를 생성하여 다양한 차트를 그려봅니다.") # 랜덤 데이터 생성 data = pd.DataFrame( np.random.randn(50, 3), columns=["A", "B", "C"] ) # 데이터프레임 출력 st.subheader("데이터프레임") st.dataframe(data) # 라인 차트 출력 st.subheader("라인 차트") st.line_chart(data) # 바 차트 출력 st.subheader("바 차트") st.bar_chart(data) # 슬라이더로 데이터 필터링 st.subheader("슬라이더로 데이터 필터링") value = st.slider("표시할 데이터 개수", min_value=1, max_value=50, value=10) filtered_data = data.head(value) st.write(f"선택된 {value}개의 데이터:") st.dataframe(filtered_data)
결과 확인
위 코드를 실행하면 다음과 같은 기능을 가진 대시보드가 생성됩니다:- 랜덤 데이터를 테이블 형태로 표시.
- 데이터를 라인 차트와 바 차트로 시각화.
- 슬라이더를 이용해 표시할 데이터 개수를 동적으로 조정.
5. 주요 기능 소개
Streamlit은 다양한 기능을 제공하며, 이를 활용하면 더욱 풍부한 웹앱을 제작할 수 있습니다.(1) 텍스트 출력
st.title()
,st.header()
,st.subheader()
: 제목 및 부제목 출력.st.write()
: 텍스트, 데이터프레임 등 다양한 형태의 데이터를 출력.
pythonst.title("Streamlit 기능 소개") st.write("이곳에 텍스트나 데이터를 출력할 수 있습니다.")
(2) 위젯 (사용자 입력)
- 버튼:
if st.button('클릭')
- 슬라이더:
value = st.slider('슬라이더', 0, 100)
- 체크박스:
if st.checkbox('체크')
- 선택 박스:
option = st.selectbox('옵션 선택', ['A', 'B', 'C'])
pythonif st.checkbox("데이터 보기"): st.write(data)
(3) 차트
- 라인 차트:
st.line_chart(data)
- 바 차트:
st.bar_chart(data)
- 맵:
st.map(data)
pythonimport numpy as np map_data = pd.DataFrame( np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4], columns=["lat", "lon"] ) st.map(map_data)
6. 배포하기
Streamlit 앱은 로컬에서 실행하는 것뿐 아니라 클라우드에 배포하여 다른 사람들과 공유할 수도 있습니다.GitHub와 연동하여 배포
- 코드를 GitHub 저장소에 업로드합니다.
- Streamlit Cloud에 접속해 GitHub 저장소를 연결합니다.
- 배포하고자 하는 브랜치와 파일 경로를 지정한 후 "Deploy" 버튼을 클릭합니다.
7. 활용 사례
Streamlit은 다음과 같은 프로젝트에 적합합니다:- 데이터 분석 대시보드: 분석 결과를 팀원들과 공유.
- AI 모델 데모: 머신러닝 모델의 입력값과 결과를 인터랙티브하게 보여줌.
- 프로토타입 제작: 복잡한 백엔드 없이 빠르게 웹앱 제작.