Streamlit 처음부터: CSV에서 데이터를 탐색하고 시각화하는 앱 만들기
Source: Dev.to
(번역하려는 본문을 제공해 주시면, 요청하신 대로 한국어로 번역해 드리겠습니다.)
소개
이 기사에서는 Streamlit을 처음부터 사용하여 로컬 CSV 파일에서 데이터를 로드, 탐색 및 시각화할 수 있는 인터랙티브 애플리케이션을 구축합니다. 목표는 Python 및 관련 라이브러리를 활용하여 탐색적 데이터 분석(EDA)용 앱을 빠르게 만드는 것입니다.
프로젝트 저장소:
제안된 아키텍처
- Python: 고수준이며 다재다능한 언어.
- Pandas: DataFrames와 같은 구조를 사용한 데이터 조작 및 분석.
- Streamlit: 몇 줄의 코드만으로 인터랙티브 애플리케이션을 만들 수 있는 오픈소스 프레임워크.
- GitHub: 소스 코드 호스팅 및 협업.
사용된 기술
streamlitpandasnumpymatplotlibseabornplotlyscikit-learn
단계별 구현
1. 가상 환경 만들기 및 활성화
# Crear ambiente
python -m venv env-local-streamlit
# Activar ambiente (Linux/macOS)
source env-local-streamlit/bin/activate
# Activar ambiente (Windows)
.\env-local-streamlit\Scripts\activate
2. 의존성 설치
# Listar paquetes antes de instalar (opcional)
pip list
# Instalar desde requirements.txt
pip install -r requirements.txt
# Verificar instalación
pip list
3. Streamlit 애플리케이션 기본 구조
# src/main.py
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import plotly.express as px
# Configuración de la página
st.set_page_config(page_title="Streamlit local", page_icon="📁", layout="wide")
st.title("💻 Probar Streamlit de manera local")
st.write(
"""
Esta aplicación demuestra cómo cargar y explorar un conjunto de datos localmente usando Streamlit.
El conjunto de datos utilizado es un conjunto ficticio sobre diabetes.
"""
)
# Cargar datos
uploaded_file = "data/diabetes_dataset.csv"
df = pd.read_csv(uploaded_file)
st.success("✅ Archivo cargado correctamente.")
# Mostrar información básica
st.subheader("Vista previa del dataset")
st.dataframe(df.head())
st.subheader("Estadísticas descriptivas")
st.dataframe(df.describe())
st.write("Filas y columnas:", df.shape)
# Filtro de filas
n_rows = st.slider("Número de filas a mostrar", 5, 100, 5)
st.dataframe(df.head(n_rows))
# Treemap con Plotly
fig_treemap = px.treemap(
df,
path=["diagnosed_diabetes", "smoking_status"],
title="Treemap jerárquico: Diabetes → Fumador"
)
st.plotly_chart(fig_treemap, use_container_width=True)
# Pie chart con Matplotlib
st.subheader("Distribución de fumadores entre diabéticos")
diab = df[df["diagnosed_diabetes"] == 1]["smoking_status"].value_counts()
fig, ax = plt.subplots(figsize=(5, 5))
ax.pie(diab, labels=diab.index, autopct="%1.1f%%")
ax.set_title("Fumadores (Diabéticos)")
st.pyplot(fig)
4. 사용된 UI 구성 요소
st.header,st.subheader,st.title,st.write– 텍스트와 제목 표시.st.dataframe– 인터랙티브 테이블 표시.st.slider– 동적 필터링.st.plotly_chart및st.pyplot– 시각화 표시.
애플리케이션 실행
# Desde la raíz del proyecto
streamlit run src/main.py
명령을 실행하기 전에 가상 환경을 활성화하고 프로젝트 폴더 안에 있는지 확인하세요.
결론
Streamlit은 데이터 시각화와 탐색을 간소화하여 클라우드 인프라 없이도 인터랙티브한 애플리케이션을 만들 수 있게 합니다. 가상 환경 설정, 의존성 설치, 파이썬 스크립트 몇 단계만으로 강력한 EDA 도구를 얻을 수 있습니다.
- Streamlit 공식 문서:
- GCP (Cloud Run)에서 배포된 고급 예제:
추천 리소스
- Python:
- Pandas:
- Plotly:
- Matplotlib:
- Seaborn:
- Scikit‑learn: