Home
Login

Streamlit은 Python 라이브러리로, 순수 Python 코드를 사용하여 머신러닝, 데이터 과학 등 분야에서 아름다운 맞춤형 웹 애플리케이션을 만들 수 있게 해줍니다.

Apache-2.0Python 39.9kstreamlit Last Updated: 2025-06-14

Streamlit: Python으로 데이터 앱을 가장 빠르게 구축하는 방법

소개

Streamlit은 데이터 과학자와 머신러닝 엔지니어가 아름답고 상호 작용적인 웹 애플리케이션을 빠르고 쉽게 만들 수 있도록 설계된 오픈 소스 Python 라이브러리입니다. 프론트엔드 개발 경험 없이도 데이터 과학 스크립트를 공유 가능한 웹 앱으로 변환하는 과정을 간소화합니다.

핵심 이념:

  • Python 스크립트 활용: Streamlit을 사용하면 HTML, CSS 또는 JavaScript를 작성할 필요 없이 순수한 Python 스크립트로 애플리케이션을 구축할 수 있습니다.
  • 실시간 업데이트: 코드를 수정하고 저장할 때마다 Streamlit 애플리케이션이 자동으로 업데이트되어 빠른 반복 및 실험이 가능합니다.
  • 간편한 사용: Streamlit은 텍스트, 차트, 슬라이더, 버튼 등 다양한 UI 요소를 쉽게 추가할 수 있는 직관적인 API를 제공합니다.
  • 데이터 중심: Streamlit은 데이터 과학 워크플로우를 위해 특별히 설계되었으며 데이터를 쉽게 표시하고 조작할 수 있습니다.
  • 프론트엔드 경험 불필요: Streamlit은 프론트엔드 개발의 복잡성을 추상화하여 데이터와 모델에 집중할 수 있도록 합니다.

프로젝트 저장소 정보

  • GitHub 저장소: https://github.com/streamlit/streamlit
  • 주요 프로그래밍 언어: Python
  • 라이선스: Apache License 2.0
  • Stars: 23k+ (2024년 1월 26일 기준)
  • Forks: 2k+ (2024년 1월 26일 기준)
  • Contributors: 300+

주요 특징

  • 간단하고 사용하기 쉬운 API: Streamlit은 다음과 같은 다양한 UI 요소를 생성하기 위한 간결한 API를 제공합니다.
    • st.write(): 텍스트, 데이터, 차트 등을 표시합니다.
    • st.slider(): 슬라이더 컨트롤을 생성합니다.
    • st.button(): 버튼 컨트롤을 생성합니다.
    • st.selectbox(): 드롭다운 선택 상자를 생성합니다.
    • st.dataframe(): Pandas DataFrame을 표시합니다.
    • st.line_chart(): 꺾은선형 차트를 표시합니다.
    • st.map(): 지도를 표시합니다.
    • st.file_uploader(): 파일 업로드
  • 자동 재실행: 코드를 수정하고 저장할 때마다 Streamlit 애플리케이션이 자동으로 다시 실행되어 빠른 반복이 가능합니다.
  • 캐싱: Streamlit에는 계산 결과를 캐싱하여 애플리케이션 성능을 향상시키는 내장 캐싱 메커니즘이 있습니다. @st.cache_data 데코레이터를 사용하여 함수 결과를 캐싱할 수 있습니다.
  • 세션 상태: Streamlit을 사용하면 st.session_state를 사용하여 애플리케이션 상태를 관리하여 더욱 복잡한 대화형 애플리케이션을 만들 수 있습니다.
  • 컴포넌트: Streamlit은 사용자 정의 컴포넌트를 지원하여 Streamlit의 기능을 확장하고 타사 라이브러리를 통합할 수 있습니다.
  • 테마: Streamlit을 사용하면 색상, 글꼴 등을 포함하여 애플리케이션의 모양을 사용자 정의할 수 있습니다.
  • 배포: Streamlit 애플리케이션은 Streamlit Community Cloud, Heroku, AWS, Google Cloud 등 다양한 플랫폼에 쉽게 배포할 수 있습니다.
  • 커뮤니티 지원: Streamlit은 풍부한 문서, 튜토리얼 및 예제를 제공하는 활발한 커뮤니티를 보유하고 있습니다.

핵심 모듈 및 기능

  • streamlit: 애플리케이션 구축을 위한 API를 포함하는 핵심 라이브러리입니다.
  • streamlit.components.v1: 사용자 정의 컴포넌트 생성을 위한 API입니다.
  • streamlit.config: Streamlit 애플리케이션의 동작을 구성하는 데 사용됩니다.
  • streamlit.delta_generator: UI 요소 생성을 위한 API입니다.
  • streamlit.runtime: Streamlit 애플리케이션의 런타임 환경입니다.
  • streamlit.web: Streamlit 애플리케이션의 웹 서버입니다.

사용 시나리오

Streamlit은 다음과 같은 다양한 데이터 애플리케이션을 구축하는 데 사용할 수 있습니다.

  • 데이터 시각화: 데이터를 탐색하고 분석하기 위한 대화형 차트 및 대시보드를 만듭니다.
  • 머신러닝 모델 배포: 머신러닝 모델을 웹 애플리케이션으로 배포하여 사용자가 모델과 상호 작용할 수 있도록 합니다.
  • 데이터 탐색: 데이터를 탐색하고 이해하기 위한 대화형 도구를 구축합니다.
  • 데이터 어노테이션: 데이터 어노테이션을 돕기 위한 데이터 어노테이션 도구를 만듭니다.
  • 교육 및 데모: 데이터 과학 개념과 기술을 보여주기 위한 대화형 데모를 만듭니다.
  • 내부 도구: 팀의 효율성을 높이기 위한 내부 데이터 도구를 구축합니다.

예제 코드

다음은 간단한 Streamlit 애플리케이션 예제입니다.

import streamlit as st
import pandas as pd
import numpy as np

st.title('My First Streamlit App')

st.write('Hello, world!')

# DataFrame 생성
data = pd.DataFrame({
    'col1': [1, 2, 3, 4],
    'col2': [5, 6, 7, 8]
})

# DataFrame 표시
st.write('Here is a DataFrame:')
st.dataframe(data)

# 슬라이더 생성
x = st.slider('Select a value for x', 0, 100, 50)

# 슬라이더 값 표시
st.write('The value of x is:', x)

# 랜덤 숫자 차트 생성
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=['a', 'b', 'c'])

st.line_chart(chart_data)

설치

pip를 사용하여 Streamlit을 설치할 수 있습니다.

pip install streamlit

실행

Streamlit 애플리케이션을 실행하려면 명령줄에서 다음 명령을 실행하십시오.

streamlit run your_app.py

여기서 your_app.py는 Streamlit 애플리케이션의 Python 파일입니다.

장점

  • 빠른 개발: Streamlit을 사용하면 많은 코드를 작성하지 않고도 데이터 애플리케이션을 빠르게 구축할 수 있습니다.
  • 쉬운 사용: Streamlit은 다양한 UI 요소를 쉽게 추가할 수 있는 직관적인 API를 제공합니다.
  • 상호 작용성: Streamlit 애플리케이션은 상호 작용적이므로 사용자가 데이터와 상호 작용할 수 있습니다.
  • 배포 가능성: Streamlit 애플리케이션은 다양한 플랫폼에 쉽게 배포할 수 있습니다.
  • 커뮤니티 지원: Streamlit은 풍부한 문서, 튜토리얼 및 예제를 제공하는 활발한 커뮤니티를 보유하고 있습니다.

단점

  • 제한적인 사용자 정의: Streamlit의 사용자 정의는 상대적으로 제한적이므로 모든 애플리케이션의 요구 사항을 충족하지 못할 수 있습니다.
  • 성능: 복잡한 애플리케이션의 경우 Streamlit의 성능이 기존 웹 프레임워크만큼 좋지 않을 수 있습니다.
  • 프론트엔드 제어 약함: 기존 프론트엔드 프레임워크처럼 UI를 세밀하게 제어할 수 없습니다.

요약

Streamlit은 데이터 과학자와 머신러닝 엔지니어가 아름답고 상호 작용적인 웹 애플리케이션을 빠르게 구축하는 데 도움이 되는 강력한 도구입니다. 프론트엔드 개발 경험 없이도 데이터 과학 스크립트를 공유 가능한 웹 앱으로 변환하는 과정을 간소화합니다. 사용자 정의 및 성능에 몇 가지 제한 사항이 있지만 사용 편의성과 빠른 개발 기능으로 인해 많은 데이터 과학 프로젝트에 이상적인 선택입니다.

모든 자세한 내용은 공식 웹사이트(https://github.com/streamlit/streamlit)를 참조하십시오.