File size: 1,736 Bytes
cfc6bc9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import pandas as pd
import streamlit as st
import plotly.express as px

# 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)