Ir al contenido
σestadistica.ar

estadistica.ar · Enciclopedia de Estadística en españolhttps://estadistica.ar/conceptos/limpieza-de-datos

M16 · CómputoIntermedioProcedimiento

Limpieza de datos

La etapa más larga de cualquier trabajo con datos: qué se revisa, en qué orden, y por qué toda corrección tiene que quedar registrada.

Por Jorge Luis Montivero, Licenciado en Estadística · Mu3Sigma

1 · Definición

La limpieza de datos es el conjunto de controles y correcciones que llevan una base cruda a un estado en el que se puede analizar con confianza.

2 · Para qué sirve

Porque ningún análisis compensa datos sucios. Un valor mal codificado, una categoría escrita de tres formas o un caso duplicado producen resultados que el software calcula sin protestar y que están mal.

Y porque la limpieza es donde uno conoce los datos. Quien limpia una base sabe qué preguntas se pueden hacer con ella y cuáles no; quien recibe la base limpia, no.

3 · El orden de los controles

1 · Estructura. ¿Coincide la cantidad de filas con la de casos relevados? ¿Hay identificadores duplicados? ¿Las columnas son las que dice el diccionario?

2 · Tipos. ¿Cada columna tiene el tipo que corresponde? Una columna numérica leída como texto —porque alguien escribió “45 kg” en una celda— rompe todos los cálculos y no siempre avisa.

3 · Rangos. Mínimos y máximos de cada variable numérica. Edades de 187, pesos de 0,07, porcentajes de 150.

4 · Categorías. Tabla de frecuencias de cada variable cualitativa. Ahí saltan “Femenino”, “femenino”, “F” y ” Femenino” con un espacio adelante, que para el software son cuatro categorías distintas.

5 · Consistencia entre variables. Es el control que más errores encuentra y el que más se saltea:

  • Un varón con antecedentes obstétricos.
  • Alguien de 12 años con nivel universitario completo.
  • Una fecha de alta anterior a la de ingreso.
  • Un inactivo con ingreso de la ocupación principal.

6 · Faltantes. Cuántos hay por columna y de qué tipo. Se trata en datos faltantes.

7 · Duplicados. No solo por identificador: también casos idénticos en todas las variables, que suelen ser una fila cargada dos veces.

4 · Los controles corridos sobre una base profesional

Vale la pena ver qué encuentran cuando la base está bien hecha. Doce controles sobre las 43.739 filas de la EPH del primer trimestre de 2026:

ControlCasos
Inactivo con ingreso de la ocupación principal0
Desocupado con ingreso de la ocupación principal0
Menor de 10 con ingreso de la ocupación principal0
Ocupado sin categoría ocupacional0
Menor de 14 con nivel superior completo0
Horas semanales mayores a 1680
Jefe de hogar menor de 10 años0
Identificadores de persona repetidos0
Filas completamente duplicadas0
Ocupado con 0 horas trabajadas1.481

5 · Dos controles que no controlan lo que parece

El de duplicados muestra la mitad. En pandas, datos[datos.duplicated()] devuelve solo la repetición, no el original: sobre una base con los casos 2 y 3 cargados dos veces, muestra dos filas en lugar de cuatro. Para volver al cuestionario hacen falta las dos, y eso pide keep=False.

La tabla de frecuencias no muestra los espacios. Es el control que existe justamente para encontrar "Femenino ", y en pantalla se ve así:

Femenino     2
femenino     1
F            1
Femenino     1      ← esta tiene un espacio al final

Y una advertencia sobre la limpieza automática: strip() y upper() resuelven el espacio y las mayúsculas —de cuatro categorías quedan dos— pero la "F" sigue aparte. Ninguna función sabe que es lo mismo que "FEMENINO"; esa decisión es del analista y tiene que quedar escrita.

6 · La regla que sostiene todo

Esto no es un capricho metodológico: es lo que permite volver atrás, entender qué se hizo y rehacerlo cuando aparece un dato nuevo.

Editar la planilla a mano significa que dentro de un mes nadie —incluido vos— puede responder por qué el caso 47 tiene un valor distinto del que tenía el cuestionario. Con un script, la respuesta está escrita.

El flujo correcto:

datos-crudos.csv  →  [script de limpieza]  →  datos-limpios.csv  →  análisis
     (no se toca)         (se versiona)          (se regenera)

7 · Qué se documenta

Al terminar, el informe tiene que poder responder:

  • Cuántos casos entraron y cuántos quedaron.
  • Qué casos se excluyeron y por qué.
  • Qué correcciones se hicieron y con qué criterio.
  • Cómo se trataron los faltantes.

Un trabajo donde el nn del análisis no coincide con el del relevamiento y nadie lo explica es un trabajo que no se puede evaluar.

8 · Errores frecuentes

  • Corregir a mano sobre la planilla. El error estructural de este tema.
  • Borrar casos sin registro. Si desaparecen 30 casos entre el relevamiento y el análisis, tiene que estar escrito por qué.
  • Confundir limpieza con maquillaje. Sacar los valores que no gustan no es limpiar.
  • Saltear el control de consistencia entre variables. Los errores más graves no están dentro de una columna sino en la relación entre dos.
  • No mirar los espacios en blanco. "Femenino " y "Femenino" son categorías distintas para cualquier programa, y en la tabla de frecuencias se ven iguales.
  • Buscar duplicados con el valor por defecto. duplicated() marca la repetición y no el original: muestra la mitad de las filas involucradas.
  • Cruzar tablas sin verificar que todas las filas encontraron pareja. Un merge que pierde filas no avisa: ver unir tablas.
  • Limpiar sin conocer el instrumento. Sin el cuestionario a mano, es imposible saber si un vacío es “no corresponde” o un dato perdido.
  • Hacerlo al final. La limpieza va antes del análisis, no cuando los resultados salen raros.

9 · En el software

# R — controles de consistencia con dplyr
library(dplyr)

# Casos imposibles
datos |> filter(sexo == "V", embarazos > 0)
datos |> filter(edad < 18, nivel_ed == "Universitario completo")

# Categorías con espacios o mayúsculas inconsistentes
datos |> count(sexo)
datos <- datos |> mutate(sexo = trimws(toupper(sexo)))

# Duplicados completos: los DOS, el original y la repetición
datos |> filter(duplicated(datos) | duplicated(datos, fromLast = TRUE))
# Python
datos.query("sexo == 'V' and embarazos > 0")
datos["sexo"] = datos["sexo"].str.strip().str.upper()
datos[datos.duplicated(keep=False)]     # keep=False: original y repetición
datos.dtypes                            # verificar tipos

# Los espacios que la tabla de frecuencias esconde
datos["sexo"].unique().tolist()         # con comillas, se ven
datos["sexo"].str.len().value_counts()  # o por la longitud

# Después de un cruce, verificar que nadie quedó sin pareja
m = der.merge(izq, on="sexo", how="left", indicator=True)
m["_merge"].value_counts()
Excel:    Datos › Quitar duplicados
          =ESPACIOS(celda) para limpiar espacios sobrantes
          Formato condicional › Reglas para resaltar valores fuera de rango
SPSS:     Datos › Identificar casos duplicados
          Transformar › Recodificar  (siempre "en distintas variables",
          nunca "en las mismas": conserva el original)

Herramientas de este tema

Seguir leyendo

Cómo citar: Montivero, J. L. (2026). Limpieza de datos. estadistica.ar. https://estadistica.ar/conceptos/limpieza-de-datos

estadistica.ar es gratuita y sin publicidad. Si te sirvió, podés invitar un cafecito por transferencia al alias mu3sigma. Asesoramiento estadístico, encuestas y capacitaciones: m3s.pro · WhatsApp +54 9 383 499-7929.

Cómo citar esta entrada

APA (7.ª edición)

Montivero, J. L. (2026). Limpieza de datos. estadistica.ar. https://estadistica.ar/conceptos/limpieza-de-datos

BibTeX

@misc{estadistica_ar_limpieza_de_datos,
  author       = {Montivero, Jorge Luis},
  title        = {{Limpieza de datos}},
  year         = {2026},
  howpublished = {\url{https://estadistica.ar/conceptos/limpieza-de-datos}},
  note         = {estadistica.ar. Consultado el \today},
  urldate      = {2026-09-27}
}

Última actualización: 27 de septiembre de 2026. El contenido está bajo licencia CC BY-NC-SA 4.0: se puede reutilizar citando la fuente y sin fines comerciales.