Aprendimos a agregar una visualización gráfica a nuestra tabla mediante la función de barra. En este desafío, podemos aplicar esta función para practicar la construcción de la visualización con la adición gráfica de una manera muy similar a lo que hicimos en clase.
El desafío consiste en construir una visualización que permita informar la cantidad y distribución de pedidos por tipo de descuento. Esto permitirá que los departamentos de la empresa comprendan la demanda de productos en cada promoción.
Recuerda que, para continuar con el desafío, debes trabajar con el conjunto de datos tienda_libros.csv. El diccionario de datos que describe este conjunto está disponible en el desafío de la clase 1.
Si necesitas ayuda, una opción de solución para la actividad estará disponible en la sección "Opinión del instructor".
import pandas as pd
df = pd.read_csv('/content/tienda_libros.csv')
# Agrupamos por tipo de descuento
resumen_descuentos = df.groupby('tipo_descuento').agg(
cantidad_pedidos=('numero_pedido', 'nunique'),
unidades_vendidas=('unidades', 'sum')
)
# Calculamos el porcentaje de distribución de pedidos
total_pedidos = resumen_descuentos['cantidad_pedidos'].sum()
resumen_descuentos['distribución (%)'] = (resumen_descuentos['cantidad_pedidos'] / total_pedidos) * 100
# Ordenamos por cantidad de pedidos
resumen_descuentos = resumen_descuentos.sort_values(by='cantidad_pedidos', ascending=False)
visualizacion = resumen_descuentos.style\
.format({
'cantidad_pedidos': '{:,}',
'unidades_vendidas': '{:,}',
'distribución (%)': '{:.2f} %'
})\
.background_gradient(cmap='Blues', subset=['distribución (%)'])\
.bar(subset=['unidades_vendidas'], color='#5fba7d', vmin=0)\
.set_caption("Informe de Ventas y Distribución por Tipo de Descuento")\
.set_table_styles([
{'selector': 'th', 'props': [('background-color', '#2c3e50'), ('color', 'white'), ('font-family', 'Helvetica')]},
{'selector': 'td', 'props': [('font-family', 'Helvetica'), ('padding', '8px')]},
{'selector': 'caption', 'props': [('font-size', '18px'), ('font-weight', 'bold'), ('margin-bottom', '10px')]}
])
visualizacion