Spaces:
Sleeping
Sleeping
Commit
·
dd337a5
1
Parent(s):
ef48243
feat: updated website
Browse files
app.py
CHANGED
@@ -609,66 +609,75 @@ elif page == "Customer Analysis":
|
|
609 |
|
610 |
st.plotly_chart(fig_comparison, use_container_width=True)
|
611 |
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
672 |
|
673 |
|
674 |
|
|
|
609 |
|
610 |
st.plotly_chart(fig_comparison, use_container_width=True)
|
611 |
|
612 |
+
# Gráfico de ventas anuales
|
613 |
+
ventas_clientes['codigo_cliente'] = ventas_clientes['codigo_cliente'].astype(str).str.strip()
|
614 |
+
|
615 |
+
sales_columns = ['VENTA_2021', 'VENTA_2022', 'VENTA_2023']
|
616 |
+
if all(col in ventas_clientes.columns for col in sales_columns):
|
617 |
+
customer_sales_data = ventas_clientes[ventas_clientes['codigo_cliente'] == customer_code]
|
618 |
+
|
619 |
+
if not customer_sales_data.empty:
|
620 |
+
customer_sales = customer_sales_data[sales_columns].values[0]
|
621 |
+
years = ['2021', '2022', '2023']
|
622 |
+
|
623 |
+
# Convert 'fecha_mes' to datetime format if it's not already
|
624 |
+
if not pd.api.types.is_datetime64_any_dtype(results['fecha_mes']):
|
625 |
+
results['fecha_mes'] = pd.to_datetime(results['fecha_mes'], errors='coerce')
|
626 |
+
|
627 |
+
# Add the 2024 actual and predicted data
|
628 |
+
if 'ventas_predichas' in results.columns and 'ventas_reales' in results.columns:
|
629 |
+
actual_sales_2024 = results[results['fecha_mes'].dt.year == 2024]['ventas_reales'].sum()
|
630 |
+
predicted_sales_2024 = results[results['fecha_mes'].dt.year == 2024]['ventas_predichas'].sum()
|
631 |
+
|
632 |
+
# Assuming only 9 months of actual data are available, annualize the sales
|
633 |
+
months_available = 9
|
634 |
+
actual_sales_2024_annual = (actual_sales_2024 / months_available) * 12
|
635 |
+
|
636 |
+
# Prepare data for the bar chart
|
637 |
+
sales_values = list(customer_sales) + [actual_sales_2024_annual]
|
638 |
+
predicted_values = list(customer_sales) + [predicted_sales_2024]
|
639 |
+
|
640 |
+
years.append('2024')
|
641 |
+
|
642 |
+
# Create the bar chart for historical and 2024 data
|
643 |
+
fig_sales_bar = go.Figure()
|
644 |
+
fig_sales_bar.add_trace(go.Bar(
|
645 |
+
x=years[:3],
|
646 |
+
y=sales_values[:3],
|
647 |
+
name="Historical Sales",
|
648 |
+
marker_color='blue'
|
649 |
+
))
|
650 |
+
|
651 |
+
fig_sales_bar.add_trace(go.Bar(
|
652 |
+
x=[years[3]],
|
653 |
+
y=[sales_values[3]],
|
654 |
+
name="2024 Actual Sales (Annualized)",
|
655 |
+
marker_color='green'
|
656 |
+
))
|
657 |
+
|
658 |
+
fig_sales_bar.add_trace(go.Bar(
|
659 |
+
x=[years[3]],
|
660 |
+
y=[predicted_values[3]],
|
661 |
+
name="2024 Predicted Sales",
|
662 |
+
marker_color='orange'
|
663 |
+
))
|
664 |
+
|
665 |
+
# Customize layout
|
666 |
+
fig_sales_bar.update_layout(
|
667 |
+
title=f"Sales Over the Years for Customer {customer_code}",
|
668 |
+
xaxis_title="Year",
|
669 |
+
yaxis_title="Sales (€)",
|
670 |
+
barmode='group',
|
671 |
+
height=600,
|
672 |
+
legend_title_text="Sales Type",
|
673 |
+
hovermode="x unified"
|
674 |
+
)
|
675 |
+
|
676 |
+
# Display the chart
|
677 |
+
st.plotly_chart(fig_sales_bar, use_container_width=True)
|
678 |
+
|
679 |
+
else:
|
680 |
+
st.warning(f"No predicted or actual data found for customer {customer_code} for 2024.")
|
681 |
|
682 |
|
683 |
|