Unidad 1 · Del problema a los datosClase 4 de 23
Clase 4 · Calidad, limpieza y preparación de datos

Objetivo. Decidir qué es un error de datos que se limpia y qué es una decisión de modelado que se documenta.

prerrequisitosClase 3 · EDA: conocer los datos antes de modelar
habilitaninguna
tiempo estimado~45 min
Ficha Bloom · Evaluar
  • 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.
Activación. En la tabla de consumo minero aparece −999 y un 2900 entre valores cercanos a 200. ¿Los borras? Responde antes de leer. Escribe tu respuesta antes de seguir: la retomas en el cierre.

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

Datos, features y target → EDA → Limpieza y preparación → todo el modelamiento
Dónde estás. Viene de EDA —ahí detectas los problemas; aquí decides qué hacer con ellos— y va hacia el modelamiento completo: una columna con códigos centinela entra al modelo como si fueran litros.

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

«Los valores nulos los puedo: dejar, eliminar o reemplazar. Esto depende de los datos con los que trabaje y mi objetivo.» Enunciado del práctico · [FUENTE · Repo: 06_LABORATORIOS/2026_[P2]Calidad_de_Datos(vacio).ipynb]

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:

«a lo mejor es simplemente un problema en la limpieza que también puede ser que cuando hicimos la limpieza de los datos eliminamos cosas que no deberíamos haber eliminado o a lo mejor deberíamos haber eliminado cosas que no eliminamos.» Clase del 15-jul · 0:05:41–0:05:49 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/03Clase_Recuperación_Fundamentos_en_Ciencia_de_Datos_15_julio.md]

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.

LIMPIAR = corregir lo que está mal medido o mal registrado ¿el dato dice lo que pasó? Tiene una respuesta que no depende de tu pregunta: un −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:

«hay algunos valores incorrectos que son como medio obvio, como por ejemplo si yo estoy midiendo, no sé, peso y me da un valor negativo, […] yo sé que ese valor negativo está mal» Clase del 15-jul · 1:00:32–1:00:42 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/03Clase_Recuperación_Fundamentos_en_Ciencia_de_Datos_15_julio.md]

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)LimpiarEs 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 CONSUMOLimpiar (estructura)Una columna con tres tipos de cosa. Se separa en fecha, id del camión y estado
CouncilArea = "Unavailable" en Melbourne 2017LimpiarEs un nulo escrito como texto: figura entre las 14 «categorías nuevas» de 2017
El 2900 del camión 3Verificar, y recién después decidirPuede estar mal registrado o ser real. Sin evidencia no se puede limpiar: se marca y se declara
El 0 del conductor enfermoDecidirLa 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_missingDecidirImputar no corrige nada: inventa valores (sección 7). Por eso se deja marcado dónde
Excluir BuildingArea (47,5 % nulos) y YearBuilt (39,6 %)DecidirLos 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 nuevasDecidirLa 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 targetDecidirNingú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]

Fíjate en la fila de 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.
Transferencia · transporte.

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.

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:

«la última es de desarrollo donde van a tener que hacer algo como lo que acabamos de hacer, que básicamente le doy una tabla y le digo mira esta tabla presenta muchos problemas que presenta y cómo lo resolverían.» Clase del 15-jul · 1:16:17–1:16:29 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/03Clase_Recuperación_Fundamentos_en_Ciencia_de_Datos_15_julio.md]

«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.

Procedencia. El enunciado y la tabla vienen de 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.
CONSUMOCANTIDAD
El Lunes(vacío)
Camión 1200
Camión 2200
Camión 32900
Camión 4200
El Martes(vacío)
Camión 1200
Camión 2 (conductor enfermo)0
Camión 3 (en mantenimiento)−999
Camión 4200
El Miércoles(vacío)
Camión 1200
Camión 2200
Camión 3 (en mantenimiento)−999
Camión 4200

Antes de tocar un número, tres cosas que se ven mirando la estructura, no los valores:

DefectoQué 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
La estructura que arregla las tres de una vez —y esto es lo que más puntúa en la 9B, porque pide diseño, no detección:
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)      | mantenimiento
El 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:

«Tú dijiste una muy buena idea. […] el ID del camión debería ser un ID numérico. O un ID que después yo pueda asociar directamente con otra tabla donde aparezcan las descripciones del camión por ejemplo.» Clase del 15-jul · 1:11:44–1:12:00 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/03Clase_Recuperación_Fundamentos_en_Ciencia_de_Datos_15_julio.md]

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.

Detente en esa cifra. 208,50 frente a 200 es un 4,3 % de diferencia. Si tu única verificación fuera «¿el promedio da algo razonable?», esta tabla la pasa. Y tiene tres defectos graves dentro.
Antes de tocar el panel: vas a tratar los dos −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?
Puedes mover el panel igual sin responder. La pregunta te espera acá.
Respuesta correcta y cómo se resuelve

Respuesta: sube mucho: de 208,50 a 450,00 litros.

  1. Suma de las 12 filas con número: 8 × 200 + 2900 + 0 + 2 × (−999) = 2.502. Media = 2.502 / 12 = 208,50.
  2. Sacas los dos −999: la suma pasa a 2.502 + 1.998 = 4.500 y n pasa a 10.
  3. 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]

12
filas que entran (n)
208,50
media
200,00
mediana
963,15
desviación (n−1)

Las cinco combinaciones que importan

Qué hicistenmediamedianaLectura
Nada. La tabla cruda12208,50200,00Parece razonable. No lo es
Solo saco los −99910450,00200,00Limpiaste y empeoró
Solo saco el 290011−36,18200,00Consumo negativo: imposible
Saco centinelas y el 29009177,78200,00Ya es creíble. El 0 lo baja
…y también el día no operativo8200,00200,00Consumo por camión-día operativo
Mira la columna de la mediana. 200,00 en las cinco filas. En las ocho combinaciones posibles, de hecho. La mediana nunca se movió — tenía la respuesta desde antes de que limpiaras nada.

4 · La media, desarmada

x̄ = (x₁ + x₂ + … + xn) / n
SímboloQué esRol
xiEl 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
nCuá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:

Δx̄ = (xmalo − xbueno) / n

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í:

DefectoCuentaΔx̄
El 2900 en vez de 200(2900 − 200) / 12+225,00
Los dos −999 en vez de 2002 × (−999 − 200) / 12−199,83
El 0 en vez de 200(0 − 200) / 12−16,67
Desplazamiento neto+8,50
Ahí está el engaño, con la aritmética a la vista. 200 + 225,00 − 199,83 − 16,67 = 208,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.
Ejercicio de cálculo, a mano.

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.

  1. (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.
  2. (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.
  3. (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:

n12
media208,50 litros
mediana200,00 litros
desviación estándar963,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:

963,15 / 208,50 ≈ 4,6

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.

El procedimiento que acabas de usar: cuando solo tienes estadísticos, compara la dispersión con el centro, y luego pregunta si el rango que implican es físicamente posible para esa variable. El promedio no delata nada. La mediana tampoco. La desviación sí.

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

Un valor medido que vale cero ≠ un código que significa «no hay medición» 0   ≠   −999 Los dos son números. Los dos sobreviven a 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 enfermoEl −999 de mantención
Qué esUna medición real que dio ceroUn código centinela: ausencia de dato disfrazada
¿Entra a un promedio?Depende de la preguntaNunca. 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ó ceroNo 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.

La versión que ya viste en clase. En las presentaciones del 14-ago, un grupo de compañeros que trabajaba con una planta de flotación minera —hierro, sílice como impureza— reportó esto sobre la calidad de sus datos:
«lo que dijimos, hay cero datos nulos explícitos hay 1.171 filas que están, o sea, índices que están duplicados» Presentaciones del 14-ago · 0:34:00–0:34:08 · un grupo de compañeros · [FUENTE · Repo: 05_CLASES/transcripciones/2026-08-14T22_09_23Z_Fundamentos_en_Ciencia_de_Datos.md]
Dijeron explícitos a propósito. Un informe de calidad puede reportar cero valores faltantes y la columna estar llena de datos ausentes — si están escritos como −999, como 0, como 9999, como «Unavailable» o como una fecha en 1900.
Segunda distinción, la que más se falla: atípico ≠ error 2900   ¿error de digitación o camión distinto? El −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ó:

«hay un valor anómalo muy grande acá entonces hay muchos ceros ¿qué es lo que puede significar esto? […] pero si no hay ningún camión inactivo bueno entonces algo está pasando a lo mejor la gente no está reportando el consumo de gasolina» Clase del 17-jul · 0:44:12–0:45:23 · profesor · [FUENTE · Repo: 05_CLASES/transcripciones/04Clase_Fundamentos_en_Ciencia_de_Datos_17_Julio.md]

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:

«ese sensor no estaba operando entonces voy a obtener valor valores nulos para ese día […] fue al lugar donde están los sensores de temperatura con un secador de pelo y empezó a tirar aire caliente […] la aplicación está conectada a estos datos erróneos» Clase del 19-jun · 2:21:45–2:22:36 · segundo docente · [FUENTE · Repo: 05_CLASES/transcripciones/01Clase_Bienvenida_Fundamentos_en_Ciencia_de_Datos_19_Junio.md]

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.

⚠ Una receta que vas a escuchar, y por qué aquí no manda.

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:
«si tengo datos atípicos dentro de mi base de datos y poder eliminar esos datos atípicos […] todos los datos que […] estén muy lejos de esta media y desde la ⟨desviación⟩ estándar […] los voy a sacar porque en realidad puede que estén alterando mi muestra» Clase del 19-jun · 2:07:22–2:07:46 · segundo docente · [FUENTE · Repo: 05_CLASES/transcripciones/01Clase_Bienvenida_Fundamentos_en_Ciencia_de_Datos_19_Junio.md] · ⟨⟩ = corrección de transcripción [INFERENCIA] (el ASR escribe «depiación»)
Por qué choca. Esa regla trata «lejano» como sinónimo de «malo», que es justo la confusión atípico ≠ error. Y con la tabla de la 9B falla de forma medible: la media es 208,50 y la desviación 963,15. Sacar lo que esté a más de 2 desviaciones elimina solo el 2900 (el borde inferior es −1.717,8) y deja dentro los dos −999: la media queda en −36,18, un consumo negativo. Con 3 desviaciones (de −2.681 a 3.098) no sale nada. Los centinelas inflan la misma desviación que debería delatarlos. [DATITO] cálculo con los 12 valores de la 9B; puedes rehacerlo con el panel de la sección 3.

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.

Con los 20 valores reales y ningún relleno, el criterio de rango intercuartílico (Tukey) no marca ningún atípico. Si rellenas los 20 huecos con la mediana, ¿cuántos atípicos marca?
Respuesta correcta y cómo se resuelve

Respuesta: sube: de 0 atípicos a 18 de 40 cuando rellenas los 20 huecos con 210.

  1. 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.
  2. 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.
  3. 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.

0 de 20
177,50
Q1
263,75
Q3
86,25
rango intercuartil
0
atípicos

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:

valla = [ Q1 − 1,5·RIC  ,  Q3 + 1,5·RIC ]     RIC = Q3 − Q1
SímboloQué esRol
Q1, Q3Los valores que dejan por debajo el 25 % y el 75 % de los datos lo cuenta la máquina
RICEl ancho del 50 % central. La medida de dispersión lo cuenta la máquina
1,5Convención. No sale de ningún teorema lo decides tú
qué filas entranLos valores observados, más los que acabas de inventar lo decides tú
El bucle. Cada valor que metes en la mediana aprieta el 50 % central. Q1 sube, Q3 baja, el RIC se encoge, la valla se cierra — y valores que eran perfectamente normales quedan afuera. No encontraste atípicos: los fabricaste. Con los 20 huecos rellenos, el RIC pasa de 86,25 a 0: la valla colapsa sobre el punto 210 y todo lo que no sea exactamente 210 es atípico.

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í:

s²nueva = s²vieja · (n − m − 1) / (n − 1)

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
valores180 · 200 · 220180 · 200 · 220 · 200 · 200
media200200 (idéntica)
Σ(x − x̄)²400 + 0 + 400 = 800800 (idéntica)
divide por (n−1)800 / 2 = 400800 / 4 = 200
desviación20,0014,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.

De 13.580 propiedades: 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]
BuildingAreaDatos crudosTras imputar la mediana
Mediana126,00126,00 (sin cambio)
Q193,00122,00
Q3174,00129,94
RIC81,007,94
Valla de Tukey[−28,5 ; 295,5][110,1 ; 141,9]
Atípicos detectados3535.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.

Lo que hiciste con esa información fue lo correcto y es lo que hay que saber justificar: ninguna de las dos columnas entró al modelo final. Una columna con 47,5 % de huecos no aporta 52,5 % de información útil — aporta eso más un 47,5 % de valores inventados que el modelo trata como mediciones.
El mismo criterio, aplicado a otra columna y con el resultado opuesto. 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ónCuándoQué cuesta
DejarEl valor es real aunque sea raro. Los 682 «atípicos» de Rooms en Melbourne son casas de 5 a 10 piezas: existenNada, si lo justificas
EliminarLa fila no es una observación válida para tu preguntaPierdes n, y si el motivo del hueco se relaciona con lo que predices, introduces sesgo
ReemplazarPocos huecos, y sabes por qué faltanAplastas la dispersión. Es la sección 7 entera
Mover a otra columnaEl valor no es una medición, pero significa algo: −999 = «en mantención»Nada. Ganas una variable nueva (id_estado) que puede explicar patrones
Por qué la cuarta vale puntos. Borrar el −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
El paso 11 es el que vale los 2,0 puntos. Listar defectos es detectar; escribir las columnas de la tabla corregida es diseñar. La pregunta pide lo segundo.

11 · Errores que el formato castiga

ErrorPor 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 seguirPierdes información legítima: qué camión estuvo en mantención. Se mueve, no se borra
Reemplazar todos los nulos por 0Conviertes «no sé» en «consumió cero». Son afirmaciones distintas y la segunda es falsa
Imputar primero y buscar atípicos despuésLos 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 verificarEs 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 mediaSacar 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 mediaCon 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 útilEs una decisión de modelado. Se justifica por la pregunta, no porque la columna «estaba sucia»
Dejar «El Miércoles» como fechaHay muchos miércoles. La fecha va completa, año-mes-día, como en la lámina 28
Antes de cerrar: explícaselo a alguien.

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)

[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:

«Falso. Convertir los −999 en nulos está bien: son códigos de "no hubo medición", no consumos. Pero te quedaste a medias. Los dos −999 bajaban la media en 199,83 litros y el 2900 la subía en 225,00: se cancelaban casi exactos. Al sacar los −999, el 2900 quedó solo y la media saltó de 208,50 a 450,00, más del doble del consumo normal de 200. Que la media se mueva tanto al quitar dos filas ya es una alarma: queda otro valor dominándola. Tenías que mirar la mediana, que da 200,00 en todas las combinaciones porque no depende de los extremos, y la desviación, que en la tabla cruda es 963,15, más de cuatro veces la media. El 2900 no lo puedes dar por error sin verificarlo: lo marcas y lo declaras. Y di qué media reportas: si lo excluyes tras verificar, 177,78 es el consumo por camión-día de la flota (cuenta el 0 del conductor enfermo) y 200,00 el de un camión operativo.»

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]

Y la que viene después. Excluiste 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.

  1. Qué hay en la columna: BuildingArea tiene 6.450 nulos de 13.580 (47,5 %); YearBuilt, 5.375 (39,6 %).
  2. 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.
  3. Cambia entre años: BuildingArea tiene 43 % de nulos en 2016 y 51 % en 2017; YearBuilt, 35 % y 44 %. En test hay más rellenos que en train.
  4. 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».
  5. 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]

A dónde seguir.

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

  1. Define la fila y las variables.
  2. Busca centinelas, faltantes, tipos mezclados y atípicos.
  3. Para cada uno: ¿está mal registrado (limpiar) o es una decisión (documentar)?
  4. 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?

Pregunta final. ¿Por qué no basta con borrar en la 9B los valores a más de dos desviaciones de la media?
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.

Continuar → Clase 5 · Regresión: predecir una cantidad