enacimie commited on
Commit
dd0ff4c
·
verified ·
1 Parent(s): b1079b6

Create app.py

Browse files
Files changed (1) hide show
  1. src/app.py +66 -0
src/app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+
3
+ import streamlit as st
4
+ import pandas as pd
5
+ import plotly.express as px
6
+ from data_loader import simulate_transport_data
7
+
8
+ # Configuración de la página
9
+ st.set_page_config(page_title="Dashboard Transporte", layout="wide")
10
+
11
+ # Título de la aplicación
12
+ st.title("📊 Monitoreo de Flota de Transporte Urbano")
13
+
14
+ # Cargar datos simulados
15
+ df = simulate_transport_data()
16
+
17
+ # Filtro por autobús
18
+ bus = st.selectbox(
19
+ "Selecciona un autobús",
20
+ options=df['bus_id'].unique()
21
+ )
22
+ filtered_df = df[df['bus_id'] == bus]
23
+
24
+ # Sección de KPIs resumen
25
+ st.subheader(f"Resumen - {bus}")
26
+ col1, col2, col3 = st.columns(3)
27
+
28
+ with col1:
29
+ st.metric(
30
+ "Puntualidad Prom.",
31
+ f"{filtered_df['punctuality'].mean():.2f} %"
32
+ )
33
+
34
+ with col2:
35
+ st.metric(
36
+ "Ocupación Prom.",
37
+ f"{filtered_df['occupancy'].mean():.2f} %"
38
+ )
39
+
40
+ with col3:
41
+ st.metric(
42
+ "Consumo Medio",
43
+ f"{filtered_df['fuel_eff'].mean():.2f} L/100km"
44
+ )
45
+
46
+ # Gráfico de evolución diaria
47
+ st.subheader("📈 Evolución Diaria")
48
+ fig = px.line(
49
+ filtered_df,
50
+ x="date",
51
+ y=["punctuality", "occupancy", "fuel_eff"],
52
+ labels={"value": "Valor", "variable": "Métrica"},
53
+ title="Indicadores diarios"
54
+ )
55
+ st.plotly_chart(fig, use_container_width=True)
56
+
57
+ # Gráfico de kilómetros recorridos
58
+ st.subheader("🚗 Kilometraje Recorrido")
59
+ fig2 = px.bar(
60
+ filtered_df,
61
+ x="date",
62
+ y="km",
63
+ color="km",
64
+ title="KM recorridos por día"
65
+ )
66
+ st.plotly_chart(fig2, use_container_width=True)