¿Cómo calcular el ticket promedio cuando un ticket ocupa varias filas?
Descubre por qué el "ticket promedio" de la IA era el promedio de otra cosa, y calcula el de verdad sumando por ticket.
Curso gratis. Tu Maestro, una IA, .
La IA del ejemplo dijo "ticket promedio de $378.83". Ya sabes de dónde salió: es el promedio de la columna importe, y en este archivo cada fila es un producto. Así que $378.83 es lo que cuesta, en promedio, una línea de producto. Lo que tu jefa pidió es lo que paga, en promedio, una persona en caja.
Piénsalo con el súper. El precio promedio de los productos que metes al carrito no es lo que pagas en promedio por carrito. Si llevas veinte productos de $30, el promedio por producto es $30 y el carrito cuesta $600. Mismo carrito, dos promedios, dos preguntas.
De líneas a tickets
Para el ticket promedio hay que cambiar de nivel antes de promediar:
Junta las filas de cada ticket
Todas las líneas del ticket T-1025 van juntas, todas las del T-1038 van juntas, y así con cada ticket.
Suma el importe de cada ticket
Ahora tienes una tabla nueva con una fila por ticket y su total. Cambiaste la granularidad: de producto a ticket.
Promedia esos totales
El promedio de los totales por ticket es el ticket promedio. Es lo que paga, en promedio, una persona en caja.
En pandas, los dos primeros pasos son una sola línea con groupby, que significa "agrupar por". Si usas Excel, es lo mismo que una tabla dinámica con el ticket en las filas y la suma de importe en los valores:
por_ticket = data.groupby("ticket")["importe"].sum() # una fila por ticket, con su total
len(por_ticket) # cuántos tickets hay
por_ticket.mean() # el ticket promedioLee la línea 1 de izquierda a derecha: "agrupa data por ticket, toma la columna importe y súmala". El resultado tiene una fila por ticket. Sobre esa tabla, .mean() ya es el promedio por ticket.
Cuando el error cambia el ganador
Un promedio al nivel equivocado no solo da un número más chico. También puede cambiar quién gana una comparación. Imagina que le preguntas a tu asistente "¿qué sucursal tiene el ticket promedio más alto?" y te responde: "Tlaquepaque, con $864.50". Las barras comparan los dos promedios de cada sucursal, calculados en el sandbox sobre el archivo tal como viene. Avanza paso por paso:
Paso 1 de 4
Dos promedios por sucursal
Cada sucursal tiene dos barras con los mismos datos: el promedio por línea de producto y el promedio por ticket. Antes de seguir, adivina cuál de las dos usó la IA.
La respuesta del asistente no estaba mal calculada. Calculó bien el promedio equivocado, y con eso puso a Tlaquepaque en primer lugar cuando, por ticket, queda en tercero. Si esa respuesta llegara a una junta, alguien podría copiar en Chapalita lo que "funciona" en Tlaquepaque.
Inténtalo
Calcula el ticket promedio del mes con groupby, y después el de Chapalita. El primer número debería quedar muy por encima de los $378.83 de la IA. No me queda claro qué hace groupby.
La primera parte imprime el promedio por línea, el que dio la IA. Completa la segunda: agrupa por ticket, suma el importe y promedia. Después calcula el ticket promedio solo de Chapalita. Terminas cuando ves los tres números: por línea, por ticket del mes y por ticket de Chapalit
La primera parte imprime el promedio por línea, el que dio la IA. Completa la segunda: agrupa por ticket, suma el importe y promedia. Después calcula el ticket promedio solo de Chapalita. Terminas cuando ves los tres números: por línea, por ticket del mes y por ticket de Chapalita.
Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo. Ctrl+Enter ejecuta tu código. Tab agrega sangría; para salir del editor, presiona Escape y luego Tab.
Listo para ejecutar tu código.
Ejecuta tu código para ver su salida aquí.
Datos: ventas-marzo, 312 filas
Enter guarda una celda y Escape la deja como estaba. Deja una celda vacía para un valor faltante.
| Fila | Quitar | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | |||||||||||
| 2 | |||||||||||
| 3 | |||||||||||
| 4 | |||||||||||
| 5 | |||||||||||
| 6 | |||||||||||
| 7 | |||||||||||
| 8 | |||||||||||
| 9 | |||||||||||
| 10 | |||||||||||
| 11 | |||||||||||
| 12 | |||||||||||
| 13 | |||||||||||
| 14 | |||||||||||
| 15 | |||||||||||
| 16 | |||||||||||
| 17 | |||||||||||
| 18 | |||||||||||
| 19 | |||||||||||
| 20 |
Deberías ver $960.94 de ticket promedio en el mes: más del doble de lo que dijo la IA. Y $2,449.11 en Chapalita. Todavía no es el número final para tu jefa, porque el archivo trae cancelados y filas repetidas, y de eso trata el módulo 4. Pero el error más grande ya está corregido: ahora promedias tickets.
Una precaución más: un ticket promedio también tiene una base. El de Tonalá sale de 12 tickets y el de Chapalita de 18, así que un solo ticket muy grande mueve mucho el promedio de una sucursal. Cuando reportes un ticket promedio por sucursal, di de cuántos tickets sale.
Error común: La trampa del promedio
En una tabla con varias filas por cosa (productos por ticket, consultas por paciente, quincenas por empleado), el promedio de una columna es el promedio de las filas. Si la pregunta habla de la cosa, primero suma por cosa y después promedia.
Comprueba lo que sabes: Revisas el código de la IA para "el ticket promedio por sucursal" y ves `data.groupby("sucursal")["importe"].mean()`, en una tabla de una fila por producto. ¿Qué pasó?
Piensa en una tabla de tu trabajo que tenga varias filas por cada cosa que te importa (pedidos, pacientes, empleados, clientes). ¿Qué promedio te han reportado sobre ella, y a qué nivel crees que se calculó?
Reflexiona: Piensa en una tabla de tu trabajo que tenga varias filas por cada cosa que te importa (pedidos, pacientes, empleados, clientes). ¿Qué promedio te han reportado sobre ella, y a qué nivel crees que se calculó?
Solo tú y tu Maestro leen esto. Se queda en tu cuenta y se borra con ella.