Objetivo. Decidir qué es un error de datos que se limpia y qué es una decisión de modelado que se documenta.
- Evidencia de aprendizaje: Resuelve una tabla tipo 9B: identifica cada problema, lo clasifica y justifica su tratamiento.
- Actividad final: Resolver la 9B del Certamen 1 (consumo de camiones).
- Criterio de dominio: Identifica centinela, atípico, sobrecarga semántica y formato; distingue atípico de error; justifica cada decisión con su efecto en la media.
Limpieza y preparación de datos
Qué le pasa a un número cuando decides qué hacer con el de al lado.
Fundamentos de Ciencia de Datos · UdeC
Es la pregunta de mayor peso del Certamen 1. Aparece en la 9A y en la 9B, y la 9B sola vale 2,0 pts: la mitad de las ocho cerradas juntas (8 × 0,5 = 4,0) y la pregunta individual de mayor puntaje (certamen_1.html#p9b). [FUENTE · Repo: 01_DOCUMENTACION/06_CERTAMEN1/00_LEEME.md, tabla de estructura]
1 · La frase que lo ordena todo
Las tres primeras palabras son las técnicas. La última mitad de la frase es la que puntúa: dejar, eliminar o reemplazar son decisiones, y lo que las decide es tu objetivo. La misma fila entra o sale según qué estés midiendo. Y como son decisiones, se pueden tomar mal, en las dos direcciones. El profesor lo contó sobre un proyecto propio que tuvo que devolver de la puesta en marcha a la exploración:
Limpiar ≠ decidir: dos trabajos que se hacen con las mismas funciones
El currículum lo dice en una línea: «Decidir qué columna se excluye es una
decisión de modelado, no de limpieza»
[FUENTE · Repo: 07_DATITO/curriculum.yaml, limpieza_preparacion.por_que_importa].
En pandas las dos cosas se ven iguales —un dropna, un
replace, un drop—, pero responden preguntas distintas.
−999 no es un consumo para ninguna pregunta.DECIDIR (modelado) = elegir qué entra al modelo y cómo ¿qué necesito para responder mi pregunta? Excluir una columna útil, imputar, dejar fuera un 0 real, elegir el target. Depende de la pregunta, y por eso se justifica, no se da por obvia.
El ejemplo de limpieza del profesor es el más simple posible:
Un peso negativo está mal para cualquier pregunta: eso es limpieza. En la lámina, esa línea es «Valores incorrectos: ¿cómo podemos detectarlos y corregirlos?», y va separada de los faltantes y del formato desordenado [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/FCD-2026-2_04_CalidadDeDatos.md · lámina 22]. La prueba rápida [DATITO]: si cambias la pregunta, ¿la corrección sigue valiendo? Sí → limpiar. Depende → decidir.
| Situación | ¿Limpiar o decidir? | Por qué |
|---|---|---|
−999 en la cantidad de un camión en mantención (9B) | Limpiar | Es un código, no una medición. Se pasa a nulo y el estado se muda a su propia columna |
«Camión 3 (en mantenimiento)» y «El Lunes» dentro de la columna CONSUMO | Limpiar (estructura) | Una columna con tres tipos de cosa. Se separa en fecha, id del camión y estado |
CouncilArea = "Unavailable" en Melbourne 2017 | Limpiar | Es un nulo escrito como texto: figura entre las 14 «categorías nuevas» de 2017 |
El 2900 del camión 3 | Verificar, y recién después decidir | Puede estar mal registrado o ser real. Sin evidencia no se puede limpiar: se marca y se declara |
El 0 del conductor enfermo | Decidir | La medición es correcta. Entra o sale según preguntes por la flota o por un camión operativo |
Rellenar los faltantes de Car con la mediana y agregar Car_missing | Decidir | Imputar no corrige nada: inventa valores (sección 7). Por eso se deja marcado dónde |
Excluir BuildingArea (47,5 % nulos) y YearBuilt (39,6 %) | Decidir | Los valores que sí están no están mal medidos. Excluirlas es una elección sobre el modelo, no una corrección |
Excluir CouncilArea: 0 % de nulos en 2016, 18,9 % en 2017 y 14 categorías nuevas | Decidir | La columna es útil en 2016; el problema es cómo llega a 2017. Con ella el error bajaba 599 AUD y aun así se conservó el modelo sin ella |
Usar Price (o log1p(Price)) como target | Decidir | Ningún dato está mal: es tu pregunta. Ver datos_features_target.html |
[FUENTE · Repo: 07_DATITO/02_REFERENCIA/material.md, «Experimento CouncilArea» · 09_RESULTADOS/experimento_councilarea_2026-09-18.json (lista categorias_solo_en_2017, que incluye «Unavailable») · 09_RESULTADOS/auditoria_dashai_vs_crudo.json · Car_missing: 03_SCRIPTS/modelamiento_temporal.py]
CouncilArea: aparece dos veces, una
en cada lado. Reconocer que «Unavailable» es un nulo es limpieza. Decidir que la
columna entera no entra al modelo es modelado. Mezclar las dos es el error que
castiga el formato: «excluí la columna porque estaba sucia» no justifica nada si
la columna, limpia, igual aportaba.
Una empresa de buses registra cada viaje: patente, fecha, kilómetros, velocidad media y litros cargados. Quiere entender el consumo por kilómetro en hora punta. Clasifica cada acción como limpiar, verificar o decidir:
(a) la velocidad media vale
−1 en los viajes sin señal GPS;(b) la patente aparece como
ab-cd12, ABCD12 y AB CD 12;(c) un viaje de 0 km con conductor asignado;
(d) excluir los viajes nocturnos;
(e) un bus con 900 litros cargados en un día;
(f) rellenar con el promedio los litros de los días de paro.
Respuesta correcta y cómo se resuelve
Respuesta: (a) limpiar, (b) limpiar, (c) decidir, (d) decidir, (e) verificar, (f) decidir.
Cómo se resuelve: a cada acción, la prueba de la sección: ¿la corrección valdría igual si la pregunta fuera otra? Si sí, es limpieza. Si depende de la pregunta, es decisión. Si no sabes todavía si el valor está mal, es verificación.
- (a) Limpiar.
−1es un centinela: «sin señal» escrito como número. Pasa a nulo y la causa, si importa, a su propia columna. Igual que el−999. - (b) Limpiar. Es un mismo bus escrito de tres formas. Sin unificarla, un bus cuenta como tres.
- (c) Decidir. Si el bus quedó en reserva, el 0 es real. Para el
consumo por kilómetro no aporta (no hay kilómetros); para la disponibilidad de la
flota, sí. Es el
0del conductor enfermo. - (d) Decidir. Los viajes nocturnos no están mal: no responden tu pregunta sobre hora punta.
- (e) Verificar. Puede ser una carga mal digitada o un estanque
que se llenó por varios días. Es el
2900. - (f) Decidir, y con cuidado. No corrige nada: inventa consumos de días en que el bus no operó. Si lo haces, deja una columna que marque dónde.
Error típico: llamar «limpieza» a (d) y a (f) porque se hacen
con un filtro o un fillna. La función de pandas no decide qué tipo de
trabajo es: lo decide si la acción depende de la pregunta.
[DATITO] Caso construido para este artefacto; cifras ilustrativas.
2 · El caso: consumo de combustible en minería
Nueve días antes del Certamen 1, al explicar el formato, el profesor anunció exactamente este tipo de pregunta:
«Lo que acabamos de hacer» es el ejercicio de las láminas 27 y 28: la misma tabla de camiones con los días como filas separadoras, y su respuesta oficial [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/FCD-2026-2_04_CalidadDeDatos.md · láminas 27–28]. La 9B es una variante con trampas añadidas. Esta es su tabla completa, tal como está en el enunciado: un registro semanal de cuatro camiones, en litros.
01_DOCUMENTACION/06_CERTAMEN1/, material de un compañero:
los enunciados son fiables, las respuestas de ese documento no están
verificadas. Los cálculos de esta página se hacen aquí, delante de ti,
y los puedes rehacer a mano.
| CONSUMO | CANTIDAD |
|---|---|
| El Lunes | (vacío) |
| Camión 1 | 200 |
| Camión 2 | 200 |
| Camión 3 | 2900 |
| Camión 4 | 200 |
| El Martes | (vacío) |
| Camión 1 | 200 |
| Camión 2 (conductor enfermo) | 0 |
| Camión 3 (en mantenimiento) | −999 |
| Camión 4 | 200 |
| El Miércoles | (vacío) |
| Camión 1 | 200 |
| Camión 2 | 200 |
| Camión 3 (en mantenimiento) | −999 |
| Camión 4 | 200 |
Antes de tocar un número, tres cosas que se ven mirando la estructura, no los valores:
| Defecto | Qué pasa exactamente |
|---|---|
| Sobrecarga semántica | La columna CONSUMO contiene tres tipos de cosa distintos:
días (El Lunes), identificadores (Camión 3) y
estados operativos (en mantenimiento). Una columna debe
contener un solo tipo de cosa |
| Filas que no son observaciones | Las tres filas de día son separadores. Una fila debería ser una observación completa e independiente: este camión, este día, tantos litros. Aquí el día vive en una fila de más arriba |
| La fecha no está en ninguna columna | Consecuencia de lo anterior: no puedes filtrar por martes, ni agrupar por día, ni ordenar. El dato existe pero no es consultable |
fecha | id_camion | consumo_litros | id_estado 2026-06-01 | 1 | 200 | operativo 2026-06-01 | 3 | 2900 | operativo ← por verificar 2026-06-02 | 2 | 0 | conductor_enfermo 2026-06-02 | 3 | (nulo) | mantenimientoEl estado no se borra: se muda. «Estaba en mantención» es información, no ruido.
Dos detalles de esa estructura salen directo de la clase. El primero, el identificador del camión. Un compañero propuso quitar la palabra «camión» y dejar solo el número, y el profesor lo llevó más lejos:
El segundo, la fecha. «El Miércoles» no identifica un día: en la misma
discusión se señaló que hay muchos miércoles y que hay que saber cuál es el
miércoles exacto en que se midió
[FUENTE · Repo: 05_CLASES/transcripciones/03Clase_Recuperación_Fundamentos_en_Ciencia_de_Datos_15_julio.md · 1:13:21–1:13:36] · profesor, atribución por contexto [INFERENCIA].
Justo después un compañero defendió el formato ISO 8601 (año-mes-día), y lo
presentó, medio en broma, como una manía personal de quien limpia datos seguido
[FUENTE · Repo: 05_CLASES/transcripciones/03Clase_Recuperación_Fundamentos_en_Ciencia_de_Datos_15_julio.md · 1:13:40–1:13:50] · un compañero: se dirige al profesor como «Rofi», probable ASR de «Profe» [INFERENCIA].
No lo dijo el profesor, pero la respuesta oficial usa justo ese formato:
2026-07-13, 2026-07-14, 2026-07-15
[FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/FCD-2026-2_04_CalidadDeDatos.md · lámina 28].
3 · Ahora los números. Predice antes de mover nada
El promedio de la columna CANTIDAD, tal como viene, sobre las 12
filas que traen número, es 208,50 litros. El consumo normal de
estos camiones es 200.
−999
como lo que son —ausencia de medición— y sacarlos del cálculo.
No tocas nada más. ¿Hacia dónde se mueve el promedio?Respuesta correcta y cómo se resuelve
Respuesta: sube mucho: de 208,50 a 450,00 litros.
- Suma de las 12 filas con número: 8 × 200 + 2900 + 0 + 2 × (−999) = 2.502. Media = 2.502 / 12 = 208,50.
- Sacas los dos −999: la suma pasa a 2.502 + 1.998 = 4.500 y n pasa a 10.
- Media = 4.500 / 10 = 450,00.
Los −999 tiraban la media hacia abajo y compensaban por casualidad al 2900, que la tira hacia arriba. Al sacarlos, el 2900 queda solo.
Error típico: pensar «saqué valores malos, así que la media mejora». Una limpieza correcta pero incompleta puede empeorar el resultado.
Cálculo con la tabla 9B · [FUENTE · Repo: 01_DOCUMENTACION/06_CERTAMEN1/00_LEEME.md] · pasos [DATITO]
Las cinco combinaciones que importan
| Qué hiciste | n | media | mediana | Lectura |
|---|---|---|---|---|
| Nada. La tabla cruda | 12 | 208,50 | 200,00 | Parece razonable. No lo es |
Solo saco los −999 | 10 | 450,00 | 200,00 | Limpiaste y empeoró |
Solo saco el 2900 | 11 | −36,18 | 200,00 | Consumo negativo: imposible |
Saco centinelas y el 2900 | 9 | 177,78 | 200,00 | Ya es creíble. El 0 lo baja |
| …y también el día no operativo | 8 | 200,00 | 200,00 | Consumo por camión-día operativo |
4 · La media, desarmada
| Símbolo | Qué es | Rol |
|---|---|---|
xi | El valor de cada fila que entra al cálculo | dato |
Σ | Sumar. La máquina no pregunta qué significa cada número | lo cuenta la máquina |
n | Cuántas filas dejaste entrar | lo decides tú |
Ese es el giro de todo este
concepto. En una fórmula de estadística, n parece un hecho de la
tabla. En un problema de limpieza, n es tu decisión
— y por eso el mismo dato produce 208,50, 450,00, −36,18 o 200,00 sin que nadie
mienta.
Cuánto mueve un solo valor malo
Si una fila debía valer xbueno y en la tabla aparece
como xmalo, el promedio se desplaza exactamente:
Un solo valor contaminado mueve la media, y
la mueve dividido por n: con tablas grandes se diluye, con tablas chicas
la destroza. Con n = 12, no se diluye nada.
Apliquémoslo. Si los cuatro camiones consumieran 200 todos los días, la media sería 200. Los tres defectos la desplazan así:
| Defecto | Cuenta | Δx̄ |
|---|---|---|
El 2900 en vez de 200 | (2900 − 200) / 12 | +225,00 |
Los dos −999 en vez de 200 | 2 × (−999 − 200) / 12 | −199,83 |
El 0 en vez de 200 | (0 − 200) / 12 | −16,67 |
| Desplazamiento neto | +8,50 | |
Un valor absurdamente alto y dos absurdamente bajos se cancelaron casi exactamente. La media quedó a 8,50 litros de la verdad no porque los datos estuvieran bien, sino por casualidad aritmética. Y es también la razón de la fila 2 de la tabla anterior: al sacar los
−999
retiras el contrapeso, y el 2900 queda suelto empujando hacia
arriba. Limpiar a medias es peor que no limpiar, porque destruye
la cancelación sin arreglar la causa.
Supón que verificaste el
2900 y era un error de digitación: el valor
real era 290.(a) Sin volver a sumar las 12 filas, usa Δx̄ para obtener la nueva media de la tabla cruda (con los
−999 todavía dentro).(b) Calcula la media de las filas válidas: sin los
−999, con el
290 corregido y con el 0.(c) ¿Qué te dice comparar (a) con (b)?
Respuesta correcta y cómo se resuelve
Respuesta: (a) −9,00 litros; (b) 189,00 litros; (c) con el
atípico corregido, los centinelas ya no tienen contrapeso y hunden la media bajo
cero: el defecto que manda ahora son los −999.
- (a) Δx̄ = (xmalo − xbueno) / n, pero ahora el «malo» es el 2900 que sale y el «bueno» el 290 que entra: Δx̄ = (290 − 2900) / 12 = −2.610 / 12 = −217,50. Nueva media = 208,50 − 217,50 = −9,00.
- (b) Filas válidas: ocho de 200, el 290 y el 0 → n = 10. Suma = 1.600 + 290 + 0 = 1.890. Media = 1.890 / 10 = 189,00.
- (c) Misma tabla, dos decisiones distintas sobre los centinelas: −9,00 es un consumo imposible; 189,00 es creíble y queda bajo 200 solo por el 0 real del conductor enfermo.
Error típico: en (a), dividir la diferencia por 10 en vez de por 12 (la tabla cruda sigue teniendo 12 filas con número); en (b), sacar también el 0 «porque es raro», que es una decisión, no una corrección.
[DATITO] Variante construida sobre la tabla 9B real; el 290 es un supuesto del ejercicio.
5 · Camino inverso: te dan los números, no la tabla
Este es el formato que más te va a costar, y el que más se parece a una pregunta de desarrollo. No ves ni una fila. Te entregan esto sobre un registro de consumo de combustible:
| n | 12 |
| media | 208,50 litros |
| mediana | 200,00 litros |
| desviación estándar | 963,15 litros |
Ejercicio de interpretación: ¿qué puedes afirmar sobre estos datos sin verlos? Escríbelo antes de abrir.
Respuesta correcta y cómo se resuelve
Respuesta: que la columna está contaminada con valores que no son consumos: la desviación es 4,6 veces la media y el rango que implican los estadísticos incluye consumos negativos, algo físicamente imposible.
Que están contaminados, y puedes demostrarlo.
La media y la mediana casi coinciden (208,50 frente a 200,00). Eso normalmente tranquiliza: sugiere una distribución simétrica y sin cola larga. Las dos medidas de centro te mienten a la vez.
Quien grita es la dispersión. Compara la desviación con la media:
La desviación es 4,6 veces la media. En consumo de combustible de camiones idénticos haciendo la misma faena, la variación esperable es de unos pocos puntos porcentuales. Una desviación de 963 litros alrededor de una media de 208 no describe un proceso físico: describe una columna con valores que no pertenecen a la misma variable.
Y hay una segunda pista aritmética. Con media 208,50 y desviación 963,15, valores a más de dos desviaciones del centro llegarían hasta 208,50 + 2 × 963,15 ≈ 2.135 y bajarían hasta 208,50 − 2 × 963,15 ≈ −1.718. Un consumo de combustible no puede ser negativo. Que el rango plausible implicado por los estadísticos incluya números imposibles es prueba de que hay códigos, no mediciones.
Error típico: concluir que los datos están bien porque la media y la mediana casi coinciden. Coinciden por la cancelación de la sección 4, no porque la distribución sea limpia.
Estadísticos de la tabla 9B · razonamiento [DATITO] · la sensibilidad de la media y la varianza a atípicos: [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/FCD-2026-2_05_AnálisisExploratorio.md · láminas 9 y 13]
6 · La distinción que decide la pregunta
dtype == float. Ninguno de
los dos es NaN. isna() devuelve False
para ambos.Nada dentro de la tabla los separa. Solo saberlo del dominio: un camión con el conductor enfermo no salió, y consumió cero litros de verdad. Un camión en mantención no fue medido, y alguien escribió −999 para que la celda no quedara vacía.
El 0 del conductor enfermo | El −999 de mantención | |
|---|---|---|
| Qué es | Una medición real que dio cero | Un código centinela: ausencia de dato disfrazada |
| ¿Entra a un promedio? | Depende de la pregunta | Nunca. Se convierte en nulo, siempre |
| Si la pregunta es… | «consumo medio de la flota por camión-día» → sí entra, ese día la flota gastó cero | No hay pregunta que lo admita. No es un consumo |
| Si la pregunta es… | «consumo medio de un camión operativo» → no entra, ese camión no operó | — |
Esa fila doble es el corazón del asunto: la misma celda entra o sale
según lo que estés midiendo, y por eso la justificación puntúa más que
la decisión. Un −999 no tiene esa ambigüedad: no representa nada
medible.
−999 se resuelve con certeza: es un código, fuera.
El 2900 no se resuelve desde la tabla. Puede ser un
200 mal tecleado, un sensor descalibrado, o un camión de mayor tonelaje que
legítimamente consume eso.Decir «hay que verificarlo antes de decidir» no es rodeo: es la respuesta. Es exactamente lo que el profesor premia en la última pregunta del Certamen 2 (certamen_2.html#p11), donde hay que separar lo medido de lo supuesto de lo no disponible. Borrar el 2900 sin decir por qué es inventar una respuesta plausible.
El precedente directo: los camiones de la clase de EDA
Una semana antes del certamen, el profesor hizo este mismo razonamiento en voz alta. La lámina plantea: el consumo medio de gasolina de los camiones de la compañía es 1440 litros, pero los que tú administras gastan sobre 2500; ¿qué sugiere eso? [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/FCD-2026-2_05_AnálisisExploratorio.md · lámina 20] · ⚠ las cifras que se oyen en la transcripción («1,440», «2,500») coinciden con la lámina. Con el gráfico de la distribución delante, respondió:
Entre medio, el curso propuso «muchos camiones inactivos» y él lo llamó una
hipótesis, no una conclusión; el paso siguiente, dijo, es ir a ver quién anotó
los datos [FUENTE · Repo: 05_CLASES/transcripciones/04Clase_Fundamentos_en_Ciencia_de_Datos_17_Julio.md · 0:45:03–0:45:32].
Mira lo que no hizo: no borró el valor grande ni los ceros. Leyó
dos explicaciones posibles para los ceros —un 0 real (camión inactivo) o un
dato no reportado escrito como 0— y dijo cómo distinguirlas. Es la distinción
0 ≠ −999 de la 9B, una semana antes de que la tuvieras en
el papel. Más sobre esa lectura de la distribución en eda.html.
Errores que ninguna prueba estadística ve
El segundo docente (clase del 19-jun) dio dos ejemplos de datos malos que conviene tener juntos, porque fallan de formas opuestas:
El sensor apagado deja un hueco: se ve. El secador de pelo deja una temperatura alta en un día de calor, que es exactamente lo que un día de calor produce: no se ve. Ninguna valla de Tukey ni ninguna desviación estándar lo marca, porque el valor es plausible. Lo delata solo el conocimiento de cómo se registró el dato. (En la anécdota, alguien apostaba a que ese día pasaría de 30 grados.) [DATITO] lectura del ejemplo.
Lo oficial. Las láminas dicen que la media y la varianza son sensibles a los atípicos [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/FCD-2026-2_05_AnálisisExploratorio.md · láminas 9 y 13], y que los valores incorrectos hay que detectarlos y corregirlos [FUENTE · Repo: 05_CLASES/11_PRESENTACIÓN/_markdown/FCD-2026-2_04_CalidadDeDatos.md · lámina 22]. En ningún lugar dicen que un valor lejano haya que sacarlo. Y en la respuesta de la lámina 28 conviven 350 y 3600, y los ceros, sin que ninguno se marque como error.
Lo que se dijo en la clase del 19-jun. Respondiendo a una pregunta sobre limpieza, el segundo docente describió otra práctica:
Qué hacer en el certamen: manda la lámina. Un valor lejano se marca, se verifica y se decide con una razón del dominio; no se saca por su distancia a la media.
Visualización: antes y después de limpieza
Este gráfico muestra el consumo en la tabla cruda, separado por tipo de valor:
Lectura. Izquierda: tabla cruda (12 filas). Centro: tras tratar centinelas. Derecha: tras excluir el atípico verificado. Fíjate en la mediana (línea): nunca se mueve.
Matriz de valores faltantes y códigos
En datos reales, los patrones de ausencia cuentan una historia. Este heatmap muestra qué camión, en qué día, tiene dato, faltante o código:
Lectura. Verde: consumo registrado. Rojo: código centinela (−999). Naranja: cero legítimo. Gris: posición de día (no es observación). El patrón de rojos revela que la indisponibilidad no es aleatoria: dos días seguidos, solo un camión.
7 · La trampa que te espera después: imputar
Ya sabes qué hacer con los −999: convertirlos en nulos. Pero
entonces tienes huecos, y el paso siguiente que enseña todo el mundo es
rellenarlos con la mediana — el valor más típico, el menos sospechoso de todos.
Aquí hay 20 mediciones observadas de consumo (litros por camión-día) y 20 huecos, porque el sensor estuvo caído medio mes [DATITO] cifras ilustrativas. Vas a rellenar los huecos con la mediana, que es 210 litros.
Respuesta correcta y cómo se resuelve
Respuesta: sube: de 0 atípicos a 18 de 40 cuando rellenas los 20 huecos con 210.
- Sin relleno (20 valores): Q1 = 177,50, Q3 = 263,75, RIC = 86,25. Valla = 177,50 − 1,5 × 86,25 = 48,1 hasta 263,75 + 1,5 × 86,25 = 393,1. Todos los valores (120 a 330) caen dentro: 0 atípicos.
- Con 20 rellenos en 210 (40 valores): 22 valen 210 (los 20 rellenos y 2 observados) y ocupan el centro de la lista ordenada, posiciones 10 a 31. Q1 y Q3 caen dentro de ese bloque: Q1 = Q3 = 210, RIC = 0.
- Valla = [210 ; 210]. Todo valor distinto de 210 queda fuera: de los 20 observados, solo dos valen 210, así que 18 se marcan como atípicos.
Error típico: pensar que rellenar con un valor «normal» no puede crear atípicos. La valla se calcula con los rellenos dentro: no cambiaron los datos, cambió la regla.
[DATITO] cifras ilustrativas; cuartiles con interpolación lineal, igual que el panel.
Por qué pasa eso
El criterio de Tukey marca como atípico todo lo que caiga fuera de una valla construida a partir de la propia dispersión de los datos:
| Símbolo | Qué es | Rol |
|---|---|---|
Q1, Q3 | Los valores que dejan por debajo el 25 % y el 75 % de los datos | lo cuenta la máquina |
RIC | El ancho del 50 % central. La medida de dispersión | lo cuenta la máquina |
1,5 | Convención. No sale de ningún teorema | lo decides tú |
| qué filas entran | Los valores observados, más los que acabas de inventar | lo decides tú |
Y a la varianza le pasa lo mismo, con fórmula exacta
Si rellenas m huecos con la media de lo
observado, la media no se mueve ni un decimal — parece que no rompiste nada.
Pero la varianza sí:
Porque cada valor imputado cae exactamente en la media: aporta cero a la suma de desviaciones al cuadrado, pero suma uno al denominador.
Con tres números, para que lo verifiques a mano. Tres mediciones —180, 200, 220— y dos huecos:
| Antes (3 valores) | Después de imputar 2 | |
|---|---|---|
| valores | 180 · 200 · 220 | 180 · 200 · 220 · 200 · 200 |
| media | 200 | 200 (idéntica) |
| Σ(x − x̄)² | 400 + 0 + 400 = 800 | 800 (idéntica) |
| divide por (n−1) | 800 / 2 = 400 | 800 / 4 = 200 |
| desviación | 20,00 | 14,14 |
Y la fórmula lo predice sin calcular nada: n = 5,
m = 2, así que s² queda multiplicada por (5 − 2 − 1)/(5 − 1) =
2/4 = la mitad. 400 × 0,5 = 200. ✓
8 · Esto te pasó a ti, en tu propio proyecto
No es un ejemplo de manual. Es tu auditoría de Melbourne, y los números están en tu repositorio.
BuildingArea tenía 6.450 nulos (47,5 %) y
YearBuilt 5.375 (39,6 %).
La vista que imputaba con la mediana reportaba 0 valores faltantes.
Tu proyecto · [FUENTE · Repo: 09_RESULTADOS/auditoria_dashai_vs_crudo.json]
BuildingArea | Datos crudos | Tras imputar la mediana |
|---|---|---|
| Mediana | 126,00 | 126,00 (sin cambio) |
| Q1 | 93,00 | 122,00 |
| Q3 | 174,00 | 129,94 |
| RIC | 81,00 | 7,94 |
| Valla de Tukey | [−28,5 ; 295,5] | [110,1 ; 141,9] |
| Atípicos detectados | 353 | 5.565 |
La mediana idéntica. El rango intercuartil dividido por diez. Y una
herramienta informando 5.565 atípicos en una columna que tenía
353 — el 41 % del dataset marcado como anómalo
por el relleno, no por los datos. Con YearBuilt el efecto
fue aún más brutal: de 6 atípicos a 3.975.
CouncilArea tiene 0 % de nulos en 2016 y 18,9 % en 2017,
más 14 categorías nuevas. Incluirla mejoraba el error en 599 AUD (0,38 %) y ganaba
20 de 25 comparaciones pareadas — y aun así se descartó, porque el
28,5 % de las filas de 2017 no aportaban nada por esa vía. Una mejora medida no
basta si sabes de dónde viene. Y ojo con la etiqueta: esto no fue
limpieza. Ningún valor de CouncilArea se corrigió; se decidió
que la columna no entra (tabla de la sección 1).
[FUENTE · Repo: 09_RESULTADOS/experimento_councilarea_2026-09-18.json · 07_DATITO/02_REFERENCIA/material.md, «Experimento CouncilArea»]
9 · Las cuatro decisiones
El práctico 2 nombra tres. La 9B necesita una cuarta, y es la que separa una respuesta de 1,0 de una de 2,0:
| Decisión | Cuándo | Qué cuesta |
|---|---|---|
| Dejar | El valor es real aunque sea raro. Los 682 «atípicos» de Rooms en Melbourne son casas de 5 a 10 piezas: existen | Nada, si lo justificas |
| Eliminar | La fila no es una observación válida para tu pregunta | Pierdes n, y si el motivo del hueco se relaciona con lo que predices, introduces sesgo |
| Reemplazar | Pocos huecos, y sabes por qué faltan | Aplastas la dispersión. Es la sección 7 entera |
| Mover a otra columna | El valor no es una medición, pero significa algo: −999 = «en mantención» | Nada. Ganas una variable nueva (id_estado) que puede explicar patrones |
−999 y
seguir no es neutral: pierdes qué camiones estuvieron en mantención y
cuándo. Esa es información operativa real. El dato malo de una columna es el
dato bueno de otra.
10 · Procedimiento para el papel
ANTE UNA TABLA SUCIA (9A · 9B)
PRIMERO LA ESTRUCTURA, DESPUÉS LOS VALORES
1. ¿QUÉ ES UNA FILA? si no es una observación completa
e independiente, la estructura está rota
2. ¿QUÉ HAY EN CADA COLUMNA? un solo tipo de cosa, o sobrecarga semántica
3. ¿DÓNDE ESTÁN LOS METADATOS? fechas como encabezado = formato ancho, no tidy
4. LA CLAVE ¿identifica? ¿está completa? ¿se repite?
AHORA LOS VALORES
5. TIPOS MEZCLADOS 'N/A' en texto junto a números y celdas vacías
6. NÚMEROS IMPOSIBLES -999 · 9999 · 0 · fechas en 1900
pregunta por cada uno: ¿ES UNA MEDICIÓN O ES UN CÓDIGO?
7. ATÍPICOS marcar, NO decidir sin verificar
POR CADA DEFECTO, UNA DECISIÓN Y SU MOTIVO
8. ¿LIMPIAR O DECIDIR? si la corrección vale para cualquier pregunta,
es limpieza; si depende de la pregunta, es decisión
9. dejar · eliminar · reemplazar · MOVER a otra columna
10. JUSTIFICAR POR EL OBJETIVO "para responder X, esta fila (no) entra"
11. PROPONER LA ESTRUCTURA FINAL ID · fecha AAAA-MM-DD · id numérico · valor · estado
12. DECLARAR LO QUE NO SE PUEDE DECIDIR SIN VERIFICAR
11 · Errores que el formato castiga
| Error | Por qué está mal |
|---|---|
| Verificar que «el promedio da algo razonable» | 208,50 frente a 200 pasa cualquier chequeo de cordura, con tres defectos dentro |
Borrar el −999 y seguir | Pierdes información legítima: qué camión estuvo en mantención. Se mueve, no se borra |
| Reemplazar todos los nulos por 0 | Conviertes «no sé» en «consumió cero». Son afirmaciones distintas y la segunda es falsa |
| Imputar primero y buscar atípicos después | Los atípicos los fabricaste tú al encoger el RIC. 353 → 5.565 en tu propio proyecto |
Tratar el 0 y el −999 igual «porque ambos son raros» | Uno se midió, el otro no. Es la distinción central de la pregunta |
Decidir sobre el 2900 sin verificar | Es lo único que la tabla no permite resolver. Declararlo es parte de la respuesta |
| Listar los problemas y parar ahí | La 9B pide la estructura corregida. Detectar sin diseñar deja la mitad del puntaje |
| Limpiar un defecto y dar por buena la media | Sacar solo los centinelas la llevó de 208,50 a 450,00. Ibas mejor antes |
| Sacar todo lo que esté a más de k desviaciones de la media | Con k = 2 sale el 2900 y los dos −999 se quedan; con k = 3 no sale nada. Atípico ≠ error |
| Llamar «limpieza» a excluir una columna útil | Es una decisión de modelado. Se justifica por la pregunta, no porque la columna «estaba sucia» |
| Dejar «El Miércoles» como fecha | Hay muchos miércoles. La fecha va completa, año-mes-día, como en la lámina 28 |
Un compañero te dice: «ya limpié la tabla del certamen. Saqué todos los
−999, que eran el problema evidente. Ahora el promedio da 450 litros
y es confiable.»¿Verdadero o falso? Justifícalo nombrando el mecanismo —no la etiqueta— y di qué estadístico debió mirar en lugar de la media.
Es el formato exacto de tu profesor: verdadero o falso con justificación. Y poder explicárselo a otro es la prueba de que lo entiendes. Escríbelo en cinco líneas y llévalo a Datito.
Criterios de corrección (no es una respuesta modelo)
- Da un veredicto y lo justifica con un mecanismo, no con una etiqueta como «hay atípicos».
- Usa al menos un número de la tabla para mostrar el mecanismo.
- Reconoce que convertir los
−999en nulo es correcto y que eso no basta: separa limpieza correcta de limpieza incompleta. - Nombra el estadístico que debió mirar y dice por qué ese no se movió.
- No afirma que el
2900es un error: lo deja como algo a verificar. - Dice qué pregunta responde la media que finalmente reportaría (flota o camión operativo).
[DATITO] Criterios construidos para este artefacto.
Respuesta correcta y cómo se resuelve
Respuesta: falso. Sacar los −999 es
correcto pero incompleto: compensaban al 2900, y al quitarlos la media
salta a 450 por culpa del 2900. Debió mirar la mediana (y la
desviación), no la media.
Respuesta modelo, como se la dirías al compañero:
Cómo se construye: (1) veredicto; (2) qué parte de lo que hizo está bien; (3) el mecanismo con números: cancelación 225,00 contra −199,83; (4) el estadístico robusto y por qué no se movió; (5) lo que queda por verificar; (6) qué pregunta responde cada media.
Error típico: responder «falso, porque hay un atípico» sin el mecanismo, o «verdadero, porque ya sacó los códigos». Los dos se quedan en la etiqueta.
Cifras de la tabla 9B, secciones 3 y 4 · redacción [DATITO]
BuildingArea y
YearBuilt de tu modelo de Melbourne. Ambas tenían información útil
—el tamaño de la casa predice su precio, evidentemente—. Da una razón
por la que excluir una columna con información útil puede mejorar el
resultado. Tienes todo lo necesario en las secciones 7 y 8. Escríbela
antes de abrir la respuesta.
Respuesta correcta y cómo se resuelve
Respuesta: porque casi la mitad de sus valores no son mediciones sino rellenos, y la proporción de rellenos cambia entre el año de entrenamiento y el de prueba. El modelo aprende en 2016 una relación medio real y medio inventada, y en 2017 recibe una columna con todavía más valores inventados. Quitarla pierde algo de señal real, pero elimina una fuente de error que no se comporta igual en train y en test.
- Qué hay en la columna:
BuildingAreatiene 6.450 nulos de 13.580 (47,5 %);YearBuilt, 5.375 (39,6 %). - Qué hace la imputación: casi la mitad de las casas pasa a «medir» 126 m², la mediana. El RIC cae de 81,00 a 7,94 y aparecen 5.565 atípicos fabricados (sección 8). La columna mezcla dos poblaciones: medidas y rellenadas.
- Cambia entre años:
BuildingAreatiene 43 % de nulos en 2016 y 51 % en 2017;YearBuilt, 35 % y 44 %. En test hay más rellenos que en train. - Consecuencia: lo que el modelo aprendió sobre esa columna en 2016 se aplica en 2017 a una columna distinta. Es un cambio de distribución en la feature, no un problema de «pocos datos».
- Balance: excluirla puede mejorar el resultado porque cambias
una señal real pero inestable por nada, en vez de por ruido que parece medición.
Para afirmarlo con número hay que compararlo, como se hizo con
CouncilArea.
Error típico: «porque tenía nulos» (sin mecanismo) o «porque no era útil» (sí lo era: el tamaño de la casa predice su precio). Y llamarlo limpieza: es una decisión de modelado.
[FUENTE · Repo: 09_RESULTADOS/auditoria_dashai_vs_crudo.json] · porcentajes por año: [FUENTE · Repo: 09_RESULTADOS/06_ENTREGABLES/INFORME_MODELO_FCD_P3.md, §2, «calidad inconsistente entre años»] · el mecanismo, [INFERENCIA]
certamen_1.html#p9b— dónde se pregunta: la 9B, con el análisis de la respuesta. Y#p9a, el caso de calificaciones, que es el mismo concepto atacando la estructura en vez de los valores.eda.html— de dónde viene: ahí se detectan los problemas que aquí se corrigen o se deciden.datos_features_target.html— qué es una fila, qué es un identificador y qué columna no debe entrar nunca (fuga de información). Es la otra mitad de las decisiones de modelado.triaje_de_problemas.html— qué tipo de problema tienes delante. Viene antes de decidir qué limpiar: la pregunta define la limpieza.generalizacion.html— a dónde va esto. Una columna imputada al 47,5 % es una fuente de brecha entre lo que mides y lo que obtienes.06_LABORATORIOS/2026_[P2]Calidad_de_Datos(vacio).ipynb— el práctico. Duplicados, rangos, nulos, tipos y el ejercicio de Bob Esponja. Hazlo sin mirar el(res): es tu evidencia de APLICAR.
Cierre de la Clase 4 · Calidad, limpieza y preparación de datos
Qué aprendiste
- Un centinela (−999) no es un número: sesga cualquier promedio.
- Un atípico puede ser real o un error de digitación: se verifica, no se borra por defecto.
- Excluir una columna útil o imputar son decisiones de modelado, no limpieza.
- Una tabla bien formada: una fila por observación, identificadores que enlazan otras tablas, fechas completas.
Qué no debes confundir
- Limpiar (corregir lo mal registrado) ≠ decidir (excluir, imputar, elegir target).
- Atípico ≠ error.
- Faltante ≠ cero.
Procedimiento para el papel
- Define la fila y las variables.
- Busca centinelas, faltantes, tipos mezclados y atípicos.
- Para cada uno: ¿está mal registrado (limpiar) o es una decisión (documentar)?
- Calcula el efecto en la media antes y después.
Viene de: Clase 3 · EDA: conocer los datos antes de modelar · Sigue: Clase 5 · Regresión: predecir una cantidad
Vuelve a tu activación: En la tabla de consumo minero aparece −999 y un 2900 entre valores cercanos a 200. ¿Los borras? Responde antes de leer. ¿Cambiarías tu respuesta?
Respuesta correcta y cómo se resuelve
Porque los −999 inflan la desviación y pueden quedar dentro del corte, y porque un atípico puede ser real. Primero se tratan los centinelas como faltantes; después se evalúa cada atípico. [FUENTE · Repo: 07_DATITO/01_CONCEPTOS/visual/04_limpieza_preparacion.html §6]
El cierre es una síntesis de la clase [DATITO]: cada afirmación tiene su fuente en el cuerpo de este visual. Fuente del cierre: 07_DATITO/clases.yaml.