¿Cómo encuentras filas repetidas que inflan un total?
Encuentra las filas repetidas del archivo, mide cuánto inflan el total y decide si quitarlas.
Curso gratis. Tu Maestro, una IA, .
Las dos páginas anteriores trataban de lo que no se contó. Esta trata de lo contrario: lo que se contó dos veces.
Imagina que le preguntas a tu asistente "¿cuánto vendió Zapopan en marzo?" y te responde "$27,644". Lo recalculas con el filtro del módulo 1 y te da $27,644. Coincide. Y aun así está inflado: en el archivo, tres tickets de Zapopan tienen productos capturados dos veces, fila por fila idénticas. Tu cuenta y la de la IA coinciden porque las dos sumaron las mismas filas repetidas.
Las filas repetidas llegan por caminos muy de oficina: alguien exportó el reporte dos veces y pegó uno debajo del otro, una sincronización se corrió dos veces, o dos personas capturaron el mismo ticket. Una IA puede no buscarlas si no se lo pides: para el código, cada fila es un dato más.
Buscarlas cuesta tres líneas.
data.duplicated().sum() # cuántas filas son copia exacta de una anterior
data[data.duplicated(keep=False)] # todas las filas que tienen copia, la original incluida
limpio = data.drop_duplicates() # una tabla nueva, sin las copiasCómo leerlas:
data.duplicated()contesta, para cada fila, ¿es idéntica a una que ya apareció arriba? La primera vez que aparece una fila dice que no; la copia dice que sí. Con.sum()cuentas cuántas copias hay.keep=Falsecambia la pregunta a ¿esta fila tiene alguna gemela?, así que marca la original y la copia. Sirve para ver las parejas juntas.drop_duplicates()arma una tabla nueva sin las copias y se queda con la primera de cada pareja. No tocadata: el original sigue igual por si necesitas regresar.
La documentación de pandas describe estos dos parámetros. subset permite comparar solo algunas columnas, y keep decide cuál de las repetidas se queda. ¿Qué diferencia hay entre duplicated() y drop_duplicates()?
Cuánto infla el total de Zapopan
Ejemplo resuelto · 4 pasos
La IA dijo que Zapopan vendió $27,644 en marzo. Quieres saber si hay filas repetidas en el archivo y cuánto cambian ese número. Intenta cada paso antes de abrirlo.
Piensa el siguiente paso por tu cuenta y luego ábrelo para comparar.
Encuentras filas idénticas
¿Pueden repetirse de verdad?
Por ejemplo, dos escaneos del mismo producto en un ticket
Camino 1 de 2: No
Quítalas con drop_duplicates
Sigue en: Reporta cuántas filas y cuánto dinero
Camino 2 de 2: Puede ser
Pregunta a quien captura los datos
Si sí pueden repetirse, déjalas
Sigue en: Reporta cuántas filas y cuánto dinero
Reporta cuántas filas y cuánto dinero
Idéntica no siempre quiere decir copia
Antes de borrar, vuelve a la primera pregunta del curso: ¿qué es una fila? En este archivo una fila es un producto dentro de un ticket. Si la caja registra cada escaneo por separado, alguien que compra dos brochas iguales en dos pasadas genera dos filas idénticas, y las dos son ventas reales. Si la caja junta los productos iguales en una sola fila con su cantidad, dos filas idénticas sí son una copia.
El archivo no te lo dice; lo sabe quien conoce el sistema. Aquí, el ticket T-1033 está repetido completo, como si se hubiera pegado dos veces. En T-1011, T-1093 y T-1079 solo se repiten uno o dos productos, y eso, visto solo, podría ser una copia o dos escaneos. Imagina que preguntas en sistemas y te dicen que la caja junta los productos iguales en una sola fila con su cantidad: entonces dos filas idénticas no pueden ser dos ventas, y las seis son copias. Aun así, en un reporte escribe lo que hiciste: "quité 6 filas idénticas, $937; sin ellas el total es $117,259". Así quien lo lea puede deshacer tu decisión si sabe algo que tú no. ¿Cómo sé si dos filas iguales son una copia o dos ventas?
Inténtalo
Esta vez el código casi no viene escrito. Junta las tres piezas que ya conoces: quitar copias, filtrar por sucursal y filtrar por estado.
Calcula lo que vendió Zapopan en marzo contando solo ventas pagadas y sin filas repetidas. Imprime cuántas filas te quedan, cuánto suman y cuántos tickets distintos son. Terminas cuando el total es 24340.0 y te quedan 28 tickets.
Calcula lo que vendió Zapopan en marzo contando solo ventas pagadas y sin filas repetidas. Imprime cuántas filas te quedan, cuánto suman y cuántos tickets distintos son. Terminas cuando el total es 24340.0 y te quedan 28 tickets.
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 |
De $27,644 a $24,340. La diferencia no viene de una sola cosa: $653 son copias y el resto son ventas canceladas. Si solo hubieras revisado una de las dos, el número seguiría inflado. Por eso las tres preguntas van juntas, y en el módulo 5 las haces sobre una respuesta completa. Revisa conmigo cuánto viene de copias y cuánto de canceladas.