import pandas as pd import plotly.express as px import streamlit as st # Carga del archivo CSV df = pd.read_csv('data/po_excel_original.csv') def top_5(): # Ordenar el DataFrame por el total de forma descendente df_sorted = df.sort_values("Total", ascending=False) # Título para los filtros laterales st.sidebar.title("Filtros Ventas Anuales TOP clientes") # Crear los controles interactivos para los filtros en la barra lateral filtro_x = st.sidebar.slider( "Monto mínimo de compras", min_value=0, max_value=int(df_sorted["Total"].max()), value=100, step=1 ) # Aplicar los filtros al DataFrame df_filtrado = df_sorted[df_sorted["Total"] >= filtro_x] # Control para la cantidad de clientes a mostrar filtro_n = st.sidebar.slider( "Cantidad de clientes a mostrar", min_value=1, max_value=len(df_filtrado), value=10 ) # Aplicar el segundo filtro al DataFrame df_filtrado = df_filtrado.head(filtro_n) # Titulo del Grafico st.subheader("Ventas Anuales por TOP de clientes") # Crear el gráfico interactivo con Plotly fig = px.bar( df_filtrado, x="Total", y="Clientes", color="Total", log_x=True, color_continuous_scale="greens" ) # Modificar la paleta de colores # Personalizar el diseño del gráfico fig.update_layout( xaxis=dict(categoryorder="total descending"), yaxis={'categoryorder': 'total ascending'}, showlegend=False ) # Configurar el tamaño del gráfico para que se muestren todos los nombres fig.update_layout( autosize=True, width=800, height=500 ) # Mostrar el gráfico en Streamlit st.plotly_chart(fig)