pruebaKPI / src /app.py
enacimie's picture
Create app.py
dd0ff4c verified
# app.py
import streamlit as st
import pandas as pd
import plotly.express as px
from data_loader import simulate_transport_data
# Configuración de la página
st.set_page_config(page_title="Dashboard Transporte", layout="wide")
# Título de la aplicación
st.title("📊 Monitoreo de Flota de Transporte Urbano")
# Cargar datos simulados
df = simulate_transport_data()
# Filtro por autobús
bus = st.selectbox(
"Selecciona un autobús",
options=df['bus_id'].unique()
)
filtered_df = df[df['bus_id'] == bus]
# Sección de KPIs resumen
st.subheader(f"Resumen - {bus}")
col1, col2, col3 = st.columns(3)
with col1:
st.metric(
"Puntualidad Prom.",
f"{filtered_df['punctuality'].mean():.2f} %"
)
with col2:
st.metric(
"Ocupación Prom.",
f"{filtered_df['occupancy'].mean():.2f} %"
)
with col3:
st.metric(
"Consumo Medio",
f"{filtered_df['fuel_eff'].mean():.2f} L/100km"
)
# Gráfico de evolución diaria
st.subheader("📈 Evolución Diaria")
fig = px.line(
filtered_df,
x="date",
y=["punctuality", "occupancy", "fuel_eff"],
labels={"value": "Valor", "variable": "Métrica"},
title="Indicadores diarios"
)
st.plotly_chart(fig, use_container_width=True)
# Gráfico de kilómetros recorridos
st.subheader("🚗 Kilometraje Recorrido")
fig2 = px.bar(
filtered_df,
x="date",
y="km",
color="km",
title="KM recorridos por día"
)
st.plotly_chart(fig2, use_container_width=True)