Streamlit 从零开始:如何创建一个用于从 CSV 探索和可视化数据的应用
发布: (2026年1月3日 GMT+8 16:48)
3 min read
原文: Dev.to
Source: Dev.to
介绍
在本文中,我们从零开始使用 Streamlit 构建一个交互式应用程序,能够本地加载、探索和可视化 CSV 文件中的数据。目标是使用 Python 及相关库快速创建一个用于探索性数据分析(EDA)的应用。
项目仓库:
架构提案
该架构基于以下组件:
- Python:高级且多功能的编程语言。
- Pandas:使用 DataFrame 等结构进行数据操作和分析。
- 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 简化了数据的可视化和探索,使得无需云基础设施即可创建交互式应用。只需几个步骤(虚拟环境、依赖安装和一个 Python 脚本),即可获得用于探索性数据分析(EDA)的强大工具。
- Streamlit 官方文档:
- 在 GCP(Cloud Run)上部署的高级示例:
推荐资源
- Python:
- Pandas:
- Plotly:
- Matplotlib:
- Seaborn:
- Scikit‑learn: