punto_organico / top_5_clientes.py
perezcatriel's picture
primer commit
cfc6bc9
raw
history blame
1.74 kB
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)