TIL

👀Today I Learn

1. Streamlit

  • Streamlit은 Python 기반의 오픈 소스 웹 애플리케이션 프레임워크로, 데이터 시각화 및 대화형 애플리케이션을 손쉽게 개발할 수 있는 도구
  • 특히 머신러닝, 데이터 분석, 대시보드 구축에 최적화되어 있으며, 몇 줄의 코드만으로 웹 애플리케이션을 실행할 수 있음

왜 Streamlit을 사용할까?

  • 간편한 사용: Flask나 Django처럼 복잡한 설정 없이 빠르게 웹 애플리케이션을 만들 수 있음
  • 빠른 개발 속도: 몇 줄의 코드로 인터랙티브한 UI를 구현할 수 있음
  • 데이터 시각화 지원: matplotlib, seaborn, plotly 같은 라이브러리와 쉽게 통합
  • 자동 리로드: 코드 수정 후 자동으로 업데이트되어 개발 과정이 편리


2. 설치 및 기본 사용법

Streamlit 설치

  • Streamlit을 사용하려면 Python 환경이 필요
  • 아래 명령어로 Streamlit을 설치할 수 있음

      pip install streamlit
    
  • Streamlit이 정상적으로 작동하는지 확인

      streamlit hello
    
  • 위 명령어를 실행하면 기본 데모 페이지가 나타남

첫 번째 Streamlit 앱 만들기

  • 아래와 같이 app.py 파일을 생성한 후 실행
import streamlit as st

st.title("Hello, Streamlit! 🎈")
st.write("이것은 간단한 Streamlit 웹 애플리케이션입니다.")


3. Streamlit의 주요 기능

텍스트 출력하기

st.text("이것은 일반 텍스트입니다.")
st.markdown("**이것은 마크다운 텍스트입니다.**")
st.code("print('Hello, World!')", language="python")

사용자 입력 받기

name = st.text_input("이름을 입력하세요")
age = st.number_input("나이를 입력하세요", min_value=0, max_value=100)
agree = st.checkbox("이용약관에 동의합니다.")

if agree:
    st.write(f"{name}님, 환영합니다! 당신의 나이는 {age}살입니다.")

버튼 및 상호작용

if st.button("클릭하세요"):
    st.write("버튼이 클릭되었습니다!")

데이터 시각화

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
    "x": range(1, 11),
    "y": [v ** 2 for v in range(1, 11)]
})

st.line_chart(df)

fig, ax = plt.subplots()
ax.plot(df["x"], df["y"], marker="o")
st.pyplot(fig)

파일 업로드

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

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


4. 배포하기

  • Streamlit은 자체적으로 배포 도구를 제공
  • Streamlit Community Cloud를 활용하면 무료로 배포할 수도 있음
  • Streamlit Cloud에 배포하는 방법
    • GitHub 저장소에 코드 업로드
    • Streamlit Community Cloud(streamlit.io)에 로그인
    • GitHub 저장소와 연동하여 배포
  • 배포 후에는 URL이 생성되며, 누구나 웹 애플리케이션을 사용할 수 있음



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 360
  • SQL 코드카타 113
  • Streamlit & LLM 복습
  • TIL 작성

회고

 오늘도 끝! 오늘 Streamlit 처음 해봤는데, 진짜 재미있었다. 내일도 더 만져봐야지. DRF를 사용해서 Streamlit을 하니까 진짜 신기했던..🫠

댓글남기기