Streamlit desde cero: cómo crear una app para explorar y visualizar datos desde un CSV
Source: Dev.to
Introducción
En este artículo se usa Streamlit desde cero para construir una aplicación interactiva que permite cargar, explorar y visualizar datos desde un archivo CSV de manera local. El objetivo es crear rápidamente una app para análisis exploratorio de datos (EDA) utilizando Python y librerías relacionadas.
Repositorio del proyecto:
Arquitectura Propuesta
La arquitectura se basa en los siguientes componentes:
- Python: lenguaje de alto nivel y versátil.
- Pandas: manipulación y análisis de datos con estructuras como DataFrames.
- Streamlit: framework de código abierto para crear aplicaciones interactivas con pocas líneas de código.
- GitHub: alojamiento y colaboración del código fuente.
Tecnologías Utilizadas
streamlitpandasnumpymatplotlibseabornplotlyscikit-learn
Implementación Paso a Paso
1. Crear y activar un entorno virtual
# 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. Instalar dependencias
# Listar paquetes antes de instalar (opcional)
pip list
# Instalar desde requirements.txt
pip install -r requirements.txt
# Verificar instalación
pip list
3. Estructura básica de la aplicación 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. Componentes de la UI utilizados
st.header,st.subheader,st.title,st.writepara textos y títulos.st.dataframepara mostrar tablas interactivas.st.sliderpara filtros dinámicos.st.plotly_chartyst.pyplotpara visualizaciones.
Ejecutar aplicación
# Desde la raíz del proyecto
streamlit run src/main.py
Asegúrate de haber activado el entorno virtual y de estar dentro de la carpeta del proyecto antes de ejecutar el comando.
Conclusiones
Streamlit simplifica la visualización y exploración de datos, permitiendo crear aplicaciones interactivas sin necesidad de infraestructura en la nube. Con pocos pasos (entorno virtual, instalación de dependencias y un script de Python) se obtiene una herramienta poderosa para EDA.
- Documentación oficial de Streamlit:
- Ejemplo avanzado desplegado en GCP (Cloud Run):
Recursos Recomendados
- Python:
- Pandas:
- Plotly:
- Matplotlib:
- Seaborn:
- Scikit‑learn: