Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import pandas as pd | |
| import plotly.express as px | |
| st.set_page_config(page_title="Fatigue Dashboard", layout="wide") | |
| # Load Data | |
| df = pd.read_excel("manual fatique.xlsx") | |
| # Normalize timestamp | |
| timestamp_col = [col for col in df.columns if "GMT" in col or "timestamp" in col.lower()][0] | |
| df["Timestamp"] = pd.to_datetime(df[timestamp_col]) | |
| st.title("βοΈ Fatigue Monitoring Dashboard") | |
| # Sidebar Filters | |
| shift_filter = st.sidebar.multiselect("Filter Shift", df['Shift'].unique()) | |
| unit_filter = st.sidebar.multiselect("Filter Unit", df['Fleet Number'].unique()) | |
| filtered = df.copy() | |
| if shift_filter: | |
| filtered = filtered[filtered['Shift'].isin(shift_filter)] | |
| if unit_filter: | |
| filtered = filtered[filtered['Fleet Number'].isin(unit_filter)] | |
| # KPI Metrics | |
| col1, col2 = st.columns(2) | |
| col1.metric("Total Fatigue Alerts", len(filtered)) | |
| col2.metric("Unique Operators", filtered['Operator Name'].nunique()) | |
| # Trend per day | |
| trend = filtered.groupby(filtered["Timestamp"].dt.date).size().reset_index(name="Count") | |
| fig = px.line(trend, x="Timestamp", y="Count", title="π Trend Fatigue Alerts Per Hari") | |
| st.plotly_chart(fig, use_container_width=True) | |
| # Shift comparison | |
| fig2 = px.bar(filtered, x="Shift", title="β οΈ Distribusi Alert per Shift", color="Shift") | |
| st.plotly_chart(fig2, use_container_width=True) | |
| # Top Units | |
| unit = filtered.groupby("Fleet Number").size().reset_index(name="Count").sort_values("Count", ascending=False) | |
| fig3 = px.bar(unit.head(10), x="Fleet Number", y="Count", title="π Top 10 Unit dengan Alert Tertinggi") | |
| st.plotly_chart(fig3, use_container_width=True) | |
| # Heatmap jam kejadian | |
| filtered['Hour'] = filtered['Timestamp'].dt.hour | |
| hourly = filtered.groupby('Hour').size().reset_index(name="Count") | |
| fig4 = px.bar(hourly, x='Hour', y='Count', title="π Peak Hour Fatigue Alerts") | |
| st.plotly_chart(fig4, use_container_width=True) | |
| st.caption("Created for Safety Improvement & Predictive Behavior Monitoring") | |