import streamlit as st import pandas as pd import plotly.express as px import plotly.graph_objects as go # Set page to wide mode st.set_page_config(layout="wide", page_title="Product Performance Dashboard") # --- CUSTOM CSS FOR THE EXACT LOOK --- st.markdown(""" """, unsafe_allow_index=True) # --- LOAD DATA --- @st.cache_data def load_data(): df = pd.read_csv('weekly_synthetic_product_performance_dashboard.xlsx - Weekly Product Dashboard Data.csv') df['Week Start Date'] = pd.to_datetime(df['Week Start Date']) # Using 'Simulation Performance' as a proxy for units to match image visuals df['Units Sold'] = (df['Simulation Performance'] * 15).astype(int) return df df = load_data() # --- HEADER --- st.markdown("""

QUANTUMLEAP DYNAMICS

WEEKLY PRODUCT PERFORMANCE DASHBOARD

JD | QuantumLeap Dynamics Inc.
""", unsafe_allow_index=True) # --- TOP FILTERS --- weeks = sorted(df['Week Start Date'].unique(), reverse=True) col_filter = st.columns([2, 10]) with col_filter[0]: selected_week = st.selectbox("", weeks, format_func=lambda x: x.strftime('%d %b - %d %b')) # Filtering data for metrics current_data = df[df['Week Start Date'] == selected_week] avg_revenue = df['Revenue (USD)'].mean() avg_rating = df['Product Performance Score'].mean() # --- ROW 1: METRICS --- m1, m2, m3, m4, m5, m6 = st.columns(6) with m1: st.metric("TOTAL REVENUE", f"${current_data['Revenue (USD)'].sum()/1e6:.2f}M", "+18.2%") with m2: st.metric("SELECTED WEEK", f"${current_data['Revenue (USD)'].sum()/1e6:.2f}M", "+0.2% vs AVG") with m3: st.metric("TOTAL SALES VOLUME", f"{current_data['Units Sold'].sum()/1000:.1f}K", "+1.4%") with m4: st.metric("UNITS SOLD", f"{int(current_data['Units Sold'].sum()):,}", "+0.3% vs AVG") with m5: st.metric("CUSTOMER SATISFACTION", f"{current_data['Satisfaction Score'].mean() + 5:.2f}/5", "+2.8%") with m6: st.metric("AVG RATING", f"{current_data['Product Performance Score'].mean():.1f}", "+2.8% vs AVG") st.markdown("
", unsafe_allow_index=True) # --- ROW 2: TOP PRODUCTS --- top_4 = current_data.nlargest(4, 'Revenue (USD)') p_cols = st.columns(4) for i, (idx, row) in enumerate(top_4.iterrows()): with p_cols[i]: st.markdown(f"""
{row['Customer Name']}
${row['Revenue (USD)']/1000:.0f}K | {row['Units Sold']} Units
""", unsafe_allow_index=True) # --- ROW 3: PIE & SCATTER --- st.markdown("
", unsafe_allow_index=True) c1, c2 = st.columns(2) with c1: st.subheader("Product Contribution - Sales Volume") fig_pie = px.pie(current_data, values='Units Sold', names='Customer Name', hole=0.5, color_discrete_sequence=px.colors.qualitative.Prism) fig_pie.update_layout(margin=dict(t=0, b=0, l=0, r=0), showlegend=True) st.plotly_chart(fig_pie, use_container_width=True) with c2: st.subheader("Revenue vs. Sales Volume") fig_scatter = px.scatter(current_data, x='Units Sold', y='Revenue (USD)', text='Customer Name', size='Revenue (USD)', color='Customer Name') fig_scatter.update_traces(textposition='top center') st.plotly_chart(fig_scatter, use_container_width=True) # --- ROW 4: TRENDS --- st.markdown("
", unsafe_allow_index=True) t1, t2, t3 = st.columns(3) # Aggregate for trends trend_df = df.groupby('Week Start Date').mean().reset_index() with t1: st.caption("Unit Price Trend") fig1 = px.area(trend_df, x='Week Start Date', y='Revenue (USD)', color_discrete_sequence=['#4e7054']) st.plotly_chart(fig1, use_container_width=True) with t2: st.caption("Customer Satisfaction Trend") fig2 = px.area(trend_df, x='Week Start Date', y='Satisfaction Score', color_discrete_sequence=['#8e5194']) st.plotly_chart(fig2, use_container_width=True) with t3: st.caption("Average Rating Trend") fig3 = px.line(trend_df, x='Week Start Date', y='Product Performance Score', color_discrete_sequence=['#77b38d']) st.plotly_chart(fig3, use_container_width=True)