File size: 1,496 Bytes
dd0ff4c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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)