티스토리 뷰

오늘은 Python 기반 웹 프레임워크인 Streamlit을 이용해 데이터 시각화, 사용자 입력, 파일 업로드 등 다양한 기능을 활용해 웹 앱을 개발하는 실습을 진행했습니다.
코드 실행 결과를 실시간으로 확인하면서 손쉽게 인터랙티브한 분석 도구를 만들 수 있어, 데이터 시각화 도구로서 Streamlit의 장점을 체감할 수 있는 시간이었습니다.


1. 설치 및 실행

설치

pip install streamlit

실행

streamlit run 파일명.py

브라우저가 자동 실행되며 기본 포트는 http://localhost:8501


2. 기본 구성 및 인터페이스

import streamlit as st

st.title("Streamlit 웹 앱 예제")
st.subheader("간단한 컴포넌트부터 파일 업로드까지 실습")
  • st.title, st.subheader, st.write 등으로 텍스트 구성
  • Streamlit은 위에서 아래로 실행되며, 실행 중 변경사항은 자동 반영됨


3. 사용자 입력 컴포넌트

입력 받기

name = st.text_input("이름을 입력하세요")
age = st.number_input("나이를 입력하세요", min_value=0, max_value=120, value=25)

버튼 이벤트

if st.button("확인"):
    st.write(f"{name}님은 {age}세입니다.")

셀렉트박스

color = st.selectbox("좋아하는 색상은?", ["빨강", "초록", "파랑"])
st.write("선택한 색상:", color)

4. 슬라이더 및 체크박스

level = st.slider("만족도 (0~100)", 0, 100, 50)
if st.checkbox("만족하십니까?"):
    st.write("선택한 만족도:", level)

5. 파일 업로드 및 처리

import pandas as pd

uploaded_file = st.file_uploader("CSV 파일을 업로드하세요", type="csv")

if uploaded_file is not None:
    df = pd.read_csv(uploaded_file)
    st.dataframe(df)

6. 데이터 시각화

Matplotlib

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [10, 20, 30])
st.pyplot(fig)

Plotly

import plotly.express as px
df = pd.DataFrame({'x': [1,2,3], 'y':[10,20,30]})
fig = px.bar(df, x='x', y='y', title="Plotly 막대 그래프")
st.plotly_chart(fig)

7. 사이드바 구성

st.sidebar.title("설정")
sidebar_choice = st.sidebar.radio("옵션 선택", ["옵션 A", "옵션 B"])
  • 사이드바는 좌측에 고정되어 메뉴 구성에 유용
  • st.sidebar.text_input, st.sidebar.selectbox 등 지원

8. 다중 탭 구성 (st.tabs)

tab1, tab2 = st.tabs(["탭1: 데이터", "탭2: 시각화"])

with tab1:
    st.write("여기는 데이터 탭입니다.")

with tab2:
    st.write("여기는 시각화 탭입니다.")

9. 상태 출력 및 알림

st.success("성공 메시지입니다.")
st.warning("경고 메시지입니다.")
st.error("오류가 발생했습니다.")

10. 결론 및 정리

오늘은 Streamlit의 핵심 기능들을 활용하여 웹 기반 데이터 시각화 앱을 구성해보았습니다.
텍스트 출력부터 슬라이더, 셀렉트박스, 버튼, 탭 구성, 그리고 CSV 업로드와 Plotly 시각화까지 다양한 컴포넌트를 한 번에 다뤄보며,
복잡한 백엔드 설정 없이도 빠르게 대시보드를 만들 수 있다는 점에서 Streamlit의 강력함을 체감할 수 있었습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함