Skip to content
Empieza gratis

¿Qué reviso en una tabla antes de limpiarla? Haz el inventario de problemas

Revisa la hoja de ventas completa con cinco miradas que no cambian nada, y escribe la lista de lo que hay que arreglar antes de arreglar algo.

Curso gratis. Tu Maestro, una IA, .

Antes de arreglar algo, haz la lista completa de lo que está mal. Suena lento, y es justo lo que te ahorra tiempo: si arreglas lo primero que ves, vas a descubrir el siguiente problema con el reporte ya enviado. Y a veces un arreglo esconde otro problema: si llenas los huecos con cero antes de contarlos, ya no sabes cuántos faltaban.

Mirar no cambia nada. Ninguna de las líneas de esta página modifica la tabla; solo le hacen preguntas. Por eso puedes correrlas todas las veces que quieras, en cualquier orden, sin miedo.

En pandas, la hoja completa de marzo es un DataFrame que aquí se llama ventas. Estas son las cinco miradas, cada una con la línea que la hace:

  1. Tamaño y tipos

    ventas.shape dice cuántas filas y columnas hay, y ventas.dtypes de qué tipo es cada columna. Una columna de dinero de tipo str es texto, aunque se vea como número.

  2. Huecos por columna

    ventas.isna().sum() cuenta las celdas vacías de cada columna. Un hueco todavía no es un error: falta averiguar qué quiere decir.

  3. Valores de las columnas de texto

    ventas["ciudad"].value_counts(dropna=False) lista cada valor con cuántas veces aparece, huecos incluidos. Ahí salen las variantes, los espacios y las abreviaturas.

  4. Mínimo y máximo de los números

    ventas["kilos"].describe() da el conteo, el mínimo, el máximo y los cuartiles. Un mínimo negativo o un máximo enorme son la primera pista de un valor imposible.

  5. Lo que debería ser único

    Un folio identifica una venta. ventas["folio"].duplicated().sum() cuenta cuántas veces aparece un folio de más.

Así salió el inventario de la hoja de marzo. Corrimos estas líneas en el sandbox de Maestro, sobre los 60 renglones:

Python
ventas = data

print(ventas.shape)
print(ventas.dtypes)
print(ventas.isna().sum())
print(ventas["kilos"].describe())
print(ventas["folio"].duplicated().sum())
Salida
(60, 9)
captura        int64
folio            str
fecha            str
cliente          str
ciudad           str
producto         str
kilos        float64
monto            str
descuento    float64
dtype: object
captura       0
folio         0
fecha         0
cliente       0
ciudad        0
producto      0
kilos         1
monto         1
descuento    44
dtype: int64
count      59.000000
mean      252.949153
std      1292.906435
min       -12.000000
25%        28.000000
50%        53.000000
75%       159.000000
max      9999.000000
Name: kilos, dtype: float64
2
Cuatro de las cinco miradas sobre la hoja completa. La de los valores de texto te toca a ti abajo.Ejecutado el 17 de octubre de 2026 por Maestro sandbox run (check_exercise_code).

Léelo como una lista de pendientes, de arriba hacia abajo:

  • 60 filas y 9 columnas. Es el número contra el que vas a comparar cada paso de la limpieza.
  • monto es str. Los montos son texto: no puedes sumarlos todavía. Lo arreglas en el módulo 2.
  • Huecos: 1 en kilos, 1 en monto y 44 en descuento. Antes de llenar o borrar cualquiera, hay que saber qué quiere decir cada uno (la página siguiente).
  • kilos va de -12 a 9999. La mediana es 53, así que esos dos extremos no se parecen a nada más de la hoja. El promedio, 252.9, ya está contaminado por ellos.
  • 2 folios de más. Hay ventas que aparecen dos veces, o algo que se parece.

Fíjate en lo que no hiciste: no borraste el -12, no llenaste los huecos, no quitaste los folios repetidos. Solo los anotaste. La lista completa te deja decidir con calma y preguntar todo de una vez, en lugar de mandarle a Marisol cinco mensajes sueltos.

Y fíjate también en lo que este inventario no ve: las 12 formas de escribir 4 ciudades salen solo cuando cuentas los valores de ciudad, que es lo que vas a hacer tú.

Inténtalo

Completa el inventario con la mirada que falta. Si una salida no te queda clara, pídele a tu Maestro que te la lea renglón por renglón.

Agrega las miradas a las columnas de texto: valuecounts(dropna=False) para ciudad y para producto, y también para descuento. Después, en los comentarios del final, escribe tu lista de problemas, uno por línea. Terminaste cuando ves las 12 formas de escribir la ciudad y tu lista t

Agrega las miradas a las columnas de texto: value_counts(dropna=False) para ciudad y para producto, y también para descuento. Después, en los comentarios del final, escribe tu lista de problemas, uno por línea. Terminaste cuando ves las 12 formas de escribir la ciudad y tu lista tiene al menos seis problemas.

Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo.

Listo para ejecutar tu código.

Ejecuta tu código para ver su salida aquí.

Datos: ventas-cooperativa, 60 filas

Enter guarda una celda y Escape la deja como estaba. Deja una celda vacía para un valor faltante.

Los datos del ejercicio, "ventas-cooperativa". Tus cambios corren con tu código.
FilaQuitar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Página 1 de 3

Ejecútalo tú

Los huecos que isna() no cuenta

isna() cuenta solo lo que pandas ya reconoce como vacío. Al abrir un CSV, pandas lee como vacío la celda sin nada y también textos como "N/A" o "NULL" (la documentación de read_csv dice cuáles). Pero un espacio solo, un guion o un "sin dato" siguen siendo texto: para pandas son un valor más.

Lo probamos en el sandbox con una columna de cinco celdas capturadas de cinco formas: una vacía, una con "N/A", una con un espacio, una con un guion y una con un 5. isna().sum() contó 2 huecos, y la columna entera se quedó como texto (str) en lugar de volverse número. Los otros dos "huecos" solo aparecieron en value_counts(dropna=False), como un espacio y un guion.

Por eso el inventario incluye value_counts aunque la columna parezca numérica. Si una columna de números sale como str, o value_counts muestra un "-", hay huecos disfrazados que isna() no vio. Anótalos igual que los demás y pregunta qué quieren decir.

¿Tu hoja usa un guion, "s/d" o "sin dato" para decir que falta algo? Cuéntale a tu Maestro cómo aparece.

Qué hacer con la lista

La lista no la resuelves toda tú. Sepárala en dos columnas: lo que puedes decidir solo (que "puebla" es Puebla, que el espacio de "cdmx " sobra) y lo que necesita a quien conoce los datos (qué quiere decir un descuento vacío, qué pasó con los -12 kilos, si "Oaxaca" es la capital). Esa segunda columna es la más importante del inventario, y de ella se trata la página siguiente.

Si no sabes si un problema de tu lista lo decides tú o alguien más, pregúntale a tu Maestro.

Comprueba lo que sabes: El inventario dice que `kilos` va de -12 a 9999. ¿Qué haces con esas dos ventas en este momento?