¿Una celda vacía cuenta como cero en un promedio?
Descubre qué hace tu asistente con las celdas vacías y por qué un mismo promedio puede dar 4.4 o 1.77.
Curso gratis. Tu Maestro, una IA, .
La tercera pregunta es ¿qué dejó fuera? Lo que no se contó no aparece en la frase de la respuesta, y cambia el número tanto como lo que sí. En este módulo vas a ver tres formas en que algo se queda fuera o entra de más: celdas vacías, filas que no llegan a la tabla final y filas repetidas que entran dos veces.
Empieza con las celdas vacías. Imagina que le pides a tu asistente "¿cuál fue la calificación promedio de la encuesta de marzo?" y te responde: "La calificación promedio es de 4.4 sobre 5. Los clientes están muy satisfechos". Tu compañero de atención a clientes hizo la misma cuenta en Excel y le salió 1.77. Nadie usó una fórmula equivocada. La diferencia está en 67 celdas vacías: los clientes que recibieron la encuesta y no contestaron.
Antes de ver el archivo, un calentamiento con cinco calificaciones, dos de ellas vacías. En Python, una celda vacía se escribe None al crear la tabla, y pandas la muestra como NaN (del inglés not a number, "no es un número").
Cinco encuestas: tres con calificación y dos vacías. Escribe qué crees que imprime cada programa, y por qué, antes de ejecutarlo.
Cinco encuestas: tres con calificación y dos vacías. Escribe qué crees que imprime cada programa, y por qué, antes de ejecutarlo.
Contar y promediar con celdas vacías
Ejemplo 1 de 2
import pandas as pd
calificacion = pd.Series([5, 4, None, None, 3])
print(len(calificacion))
print(calificacion.count())
print(calificacion.mean())
Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.
Ejemplo 2 de 2, se abre cuando expliques este
Una celda vacía no es un cero
El calentamiento muestra la regla completa. Cuando pandas promedia una columna, se salta las celdas vacías: el 4.0 es el promedio de los tres que contestaron. Si alguien convierte las vacías en ceros, el promedio se divide entre todos y baja a 2.4.
Excel hace lo mismo con su función PROMEDIO: se salta las celdas vacías, pero sí cuenta las que tienen un cero. Por eso, en esta encuesta, la diferencia entre 4.4 y 1.77 viene de una de dos cosas: alguien escribió 0 en las encuestas sin respuesta, o alguien (una persona o una IA) rellenó las vacías con ceros antes de promediar.
¿Cuál es el bueno? Depende de lo que significa la celda vacía. En esta encuesta, vacía quiere decir "no contestó", no "le fue pésimo". Contarla como cero inventa 67 calificaciones de cero que nadie dio. El 4.4 es el número honesto, siempre que digas su base: es el promedio de los 45 que contestaron. Es la misma pregunta del módulo 3, ahora con un promedio en lugar de un porcentaje. ¿El 4.4 de la encuesta representa a todos los clientes?
Hay casos en que vacío sí es cero. En una columna de descuentos, una celda vacía puede querer decir "sin descuento", o sea 0 pesos. Ahí rellenar con cero es lo correcto. Nadie lo puede decidir por ti viendo solo el archivo: lo sabe quien captura los datos. Dame otro ejemplo de una columna donde vacío sí sea cero.
len(data) # todas las filas, vacías incluidas
data["calificacion"].count() # solo las celdas que no están vacías
data["calificacion"].isna().sum() # cuántas celdas están vacías
data["calificacion"].mean() # promedio de las que tienen algo
data["calificacion"].fillna(0).mean() # promedio si las vacías fueran cerosInténtalo
El archivo de la encuesta (datos sintéticos, CC0) tiene 112 filas, una por ticket al que se le mandó la encuesta. El código calcula las tres cifras de la revisión rápida y el promedio. Ejecútalo con Ejecutar (o Ctrl + Enter, ⌘ + Enter en Mac) y compara con el 4.4 de la IA. Después agrega el promedio con las vacías como cero y una tabla por sucursal con cuántas encuestas se mandaron y cuántas tienen calificación.
Ejecuta el código y compara con el 4.4 de la IA. Luego agrega dos cosas: el promedio con las vacías como cero (el 1.77 de Excel) y, para cada sucursal, cuántas encuestas se mandaron (size) y cuántas tienen calificación (count). Terminas cuando ves 4.4 y 1.77, y una tabla donde Ce
Ejecuta el código y compara con el 4.4 de la IA. Luego agrega dos cosas: el promedio con las vacías como cero (el 1.77 de Excel) y, para cada sucursal, cuántas encuestas se mandaron (size) y cuántas tienen calificación (count). Terminas cuando ves 4.4 y 1.77, y una tabla donde Centro dice 36 y 14.
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: encuesta-marzo, 112 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 |
Si sumas la columna size de tu tabla por sucursal, te da 111, no 112. Una encuesta no aparece en ninguna sucursal. No es un error de tu código: es la segunda forma en que algo se queda fuera, y la ves en la siguiente página.
Cuando una IA te dé un promedio, pregúntale cuántas celdas vacías había y qué hizo con ellas. Una respuesta como "promedié las 45 calificaciones; 67 encuestas no tienen respuesta y no las conté" se puede revisar con las tres líneas de arriba. Una respuesta que solo dice "4.4", no. ¿Cómo le pregunto a la IA qué hizo con las vacías?