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:代码托管与协作平台。

使用的技术

  • streamlit
  • pandas
  • numpy
  • matplotlib
  • seaborn
  • plotly
  • scikit-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.headerst.subheaderst.titlest.write 用于文本和标题。
  • st.dataframe 用于显示交互式表格。
  • st.slider 用于动态过滤。
  • st.plotly_chartst.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:
Back to Blog

相关文章

阅读更多 »

第39天提升我的数据科学技能

反思:在数据工作中,一种让许多人感到沮丧却鲜少人提及的沉默斗争:“我学到了很多……但一切都显得支离破碎。” 今天……