Streamlit 실습 가이드

실전 데이터 앱 개발, 최고의 UX/UI와 실무 꿀팁으로
누구나 따라하고 성장할 수 있도록

STEP 1

작업 환경 준비

  • VS Code 설치 다운로드
  • C:\STR 폴더 만들기 (Windows 탐색기에서 직접 생성)
  • VS Code → File → Open Folder → STR 선택
  • Extensions(퍼즐 모양 아이콘) → "python" 검색 후 설치
  • Ctrl+Shift+P 조합 → 검색창에 "python:인터프리터 선택" 입력
    ` (base) python 3.13.?` 선택 후 `꺽쇠(>)`를 눌러 `Command Prompt` 선택
  • View → Terminal 메뉴 선택 → 터미널 경로가 `(base) C:\STR` 인지 반드시 확인
VS Code 실전 꿀팁:
- 파일 자동저장 설정: `Ctrl+Shift+P` 누른 후 "Auto Save" 검색 및 활성화 - 다크모드 설정: `Ctrl+K V` - 탭/공백 표기: `Ctrl+Shift+P` 누른 후 "Tab" 검색 - 한글화: Extensions 메뉴에서 "Korean Language Pack" 검색 후 설치
STEP 2

가상환경 & 버전 관리

  • Anaconda 설치: 다운로드
  • Python 및 Conda 버전 확인
    (base) C:\STR>python --version
    (base) C:\STR>conda --version
    (예시: Python 3.13.5 , conda 25.5.1 )
  • Streamlit 전용 가상환경 `STR` 생성
    (base) C:\STR> conda create -n STR python=3.13.5
    (파이썬 버전은 본인 버전에 맞게 입력)
  • `STR` 가상환경 활성화 (진입)
    (base) C:\STR> conda activate STR

    → 터미널 프롬프트가 `(STR) C:\STR>`로 바뀌면 성공
  • `base` 환경으로 돌아가기 (비활성화)
    (STR) C:\STR> conda deactivate

    → 터미널 프롬프트가 `(base) C:\STR>`로 돌아옴
  • 생성된 가상환경 목록 확인
    C:\STR>conda env list
가상환경 실무 팁
- 가상환경 이름은 `STR`, `base` 등 명확하게 구분하세요. - 터미널 프롬프트에 `(STR)`이 표시되는지 매번 확인하는 습관을 들이세요. - 절대 `(base)` 환경에서 `pip install`을 하지 마세요. (매우 중요한 실무 규칙!)
STEP 3

필수 라이브러리 설치

  • Streamlit, seaborn, matplotlib 설치
    (반드시 `(STR)` 가상환경이 활성화된 상태에서 진행)
    (STR) C:\STR>pip install streamlit
    (STR) C:\STR>pip install seaborn
    (STR) C:\STR>pip install matplotlib
라이브러리 관리 꿀팁:
- 설치 후 `(STR) C:\STR>pip list` 명령어로 설치된 라이브러리 목록을 확인하세요. - `pip freeze > requirements.txt` 명령어로 프로젝트에 사용된 라이브러리와 버전을 기록하여 환경을 공유할 수 있습니다. - `pandas`, `scikit-learn` 등 다른 라이브러리가 필요하면 언제든지 `pip install`로 추가 설치할 수 있습니다.
STEP 4

첫 Streamlit 앱 만들기 & 실행

  • `C:\STR` 폴더 안에 `app.py` 파일 생성
  • `app.py` 파일에 아래 예시 코드를 복사하여 붙여넣기
  • Streamlit 앱 실행
    (반드시 `(STR)` 가상환경이 활성화된 상태에서 진행)
    (STR) C:\STR>streamlit run app.py
앱 실행 시 유의사항!
- 터미널의 가상환경, 현재 경로, 파일명, 명령어 오타를 철저히 확인해야 성공합니다. 90%의 오류는 여기서 발생합니다. - 웹 브라우저가 자동으로 실행되지 않을 경우, 웹 브라우저 주소창에 `localhost:8501`을 직접 입력하세요.

예시 파일 — C:\STR\app.py

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

st.write('Hello!!!!,:sunglasses:') 
st.write('Hello!!!!,:sunglasses:') 
st.title('Title *Markdown* 인식') 
st.header('Title *Markdown* 인식') 
st.subheader('Title *Markdown* 인식') 

st.text('title *Markdown* 인식못함.') 
st.markdown('*Markdown* 출력.') 

st.text('This is some text.') 
x=10
y=20
st.write('x=',x,'y=',y) 

df = pd.DataFrame({'col1':[1,2,3]}) 
st.write('데이터 프레임',df) 
df # 데이터프레임을 직접 작성하여 출력도 가능 

arr = np.random.normal(1,1,size=100) 
fig, ax = plt.subplots() 
ax.hist(arr, bins=20) 
st.pyplot(fig) 
      
Streamlit 코드 작성 꿀팁:
  • `st.write()`는 텍스트, 숫자, 데이터프레임, 그래프 등 거의 모든 데이터 타입을 유연하게 출력할 수 있습니다.
  • `st.markdown()`을 사용하여 텍스트에 마크다운 문법, 이모지(예: `:sunglasses:`), LaTeX 수식을 적용할 수 있습니다.
  • 데이터프레임은 `st.write(df)` 또는 `df` (변수명만 입력)으로 간편하게 출력할 수 있습니다.
  • Matplotlib 그래프는 `st.pyplot(fig)` 함수를 사용하여 Streamlit 앱에 표시합니다.

심화 예제 — C:\STR\app1.py (붓꽃 데이터 시각화 앱)

import streamlit as st
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

_, col, _ = st.columns([2,6,2])
col.header("Streamlit 시각화")

dfIris = sns.load_dataset('iris') 
colors = {"setosa":"red", "virginica":"green", "versicolor":"blue"}
st.sidebar.title('Iris Species🌸') # 사이드바 제목 
with st.sidebar: # 사이드바 안에 위젯 배치
    selectX = st.selectbox("X 변수 선택:", ["sepal_length", "sepal_width", "petal_length", "petal_width"]) 
    selectY = st.selectbox("Y 변수 선택:", ["sepal_length", "sepal_width", "petal_length", "petal_width"]) 
    selectSpecies = st.multiselect("붓꽃 유형 선택 (:blue[다중]):",["setosa", "versicolor", "virginica"]) 
    selectAlpha = st.slider("alpha 설정:", 0.1, 1.0, 0.5) 

# 선택된 붓꽃 유형별 산점도로 시각화 표현
if selectSpecies: # 붓꽃 유형이 선택되었을 경우 
    fig = plt.figure(figsize=(7,5)) # 그래프 크기 설정 
    for aSpecies in selectSpecies: # 선택된 각 종(species)에 대해 
        df = dfIris[dfIris.species==aSpecies] # 해당 종의 데이터만 필터링 
        plt.scatter(df[selectX], df[selectY], color=colors[aSpecies], alpha=selectAlpha, label=aSpecies) 
    plt.legend(loc="lower right") # 범례 위치 설정 
    plt.xlabel(selectX) # X축 레이블 설정 
    plt.ylabel(selectY) # Y축 레이블 설정 
    plt.title("Iris Scatter Plot") # 그래프 제목 설정 
    st.pyplot(fig) # Streamlit에 Matplotlib 그래프 표시 
else: # 붓꽃 유형이 선택되지 않았을 경우 
    st.warning("붓꽃의 유형을 선택해 주세요!!!") # 경고 메시지 표시 
      
인터랙티브 시각화 실전 꿀팁:
- `st.sidebar`를 활용하여 사용자 입력 위젯(selectbox, multiselect, slider 등)을 사이드바에 배치하면 깔끔한 대화형 데이터 앱을 만들 수 있습니다. - `seaborn.load_dataset('iris')`를 사용하면 별도의 파일 없이 쉽게 데이터를 로드하여 실습할 수 있습니다. - `st.warning()`, `st.info()`, `st.error()` 등 다양한 메시지 함수를 활용하여 사용자에게 친화적인 안내 문구를 제공할 수 있습니다.

실전 FAQ & 모든 꿀팁 총정리