Ir al contenido principal

Limpieza de datos: entiende lo esencial

La limpieza de datos es un pilar básico de la ciencia de datos. Descubre por qué es tan importante y cómo llevar a cabo el proceso con Python.
Actualizado 17 sept 2026  · 12 min leer

Explorar con IA

ChatGPTClaudePerplexity

Por muy sofisticados que sean nuestros análisis o algoritmos predictivos, la calidad del resultado depende de la calidad de los datos de entrada. Dicho de otro modo: "basura entra, basura sale".

Como los datos son la base de todos estos procesos, es importante dedicar tiempo suficiente a asegurarse de que estén bien depurados.

La limpieza de datos es un proceso fundamental en el ciclo de vida de la ciencia de datos, y su papel es clave cuando queremos descubrir insights y obtener respuestas fiables. En el mundo real los datos casi siempre llegan sucios, así que la limpieza es ineludible.

En este artículo veremos ideas importantes como cómo tratar valores ausentes, duplicados y valores atípicos. Si quieres instrucciones más completas, no te pierdas nuestros cursos Cleaning Data in PythonCleaning Data in R.

¿Qué causa datos sucios?

En pocas palabras, la limpieza (o depuración) de datos es el proceso necesario para preparar los datos antes del análisis. Puede implicar encontrar y eliminar duplicados y registros incompletos, y modificar datos para corregir registros inexactos.

Los datos sucios han sido siempre un problema, y en la última década la generación de datos se ha disparado. Solo en 2020, el mundo generó más de 64 zettabytes de datos, el equivalente a 6,4 billones de gigabytes. Aunque se conserva menos del 2% de todo ello, esto agrava, sin duda, el problema ya existente de los "datos sucios". Antes de limpiar, conviene entender cómo se han ensuciado. Suele deberse a fuentes como:

  • Error humano durante la introducción, el registro o la codificación de datos
  • Dispositivos de sensorización defectuosos, como ocurre en el internet de las cosas (IoT)
  • Corrupción por daños de hardware o software

Conocer la causa raíz de los datos sucios que vamos a limpiar sienta una buena base para definir criterios de calidad que nos permitan clasificar los distintos problemas del dataset.

¿Por qué es tan importante la limpieza de datos?

El proceso de limpieza ayuda a crear una plantilla o protocolo para depurar los datos de una organización. Como decíamos, en analítica y ciencia de datos rige la máxima de basura entra, basura sale. Si se descuida, el resultado son análisis erróneos y costosos en tiempo, dinero y otros recursos.

¿Qué es la calidad de los datos?

La calidad de los datos es la medida cualitativa y/o cuantitativa de lo bien que se adaptan a la finalidad que deben cumplir. Estos criterios son pautas prácticas que podemos usar para evaluar si los datos son adecuados para nuestros objetivos. Piensa en ellos como pruebas métricas que los datos deben superar para considerarlos aptos para procesos de ciencia de datos.

Criterios de calidad de datos

  1. Exactitud: Una pregunta sencilla para verificarla es: ¿la información contenida en los datos está consignada correctamente en cada detalle? Con los datos intentamos aproximar patrones del mundo real; la exactitud indica cuán fieles son esas aproximaciones.
  2. Relevancia: ¿Esta información impacta en el objetivo final que perseguimos?
  3. Consistencia: ¿La fuente está verificada y la información es fiable? Por ejemplo, tener un cliente de 15 años con estado civil "casado".
  4. Completitud: ¿Los datos son lo bastante exhaustivos para el objetivo deseado? Es un problema habitual asociado a valores ausentes; una forma de resolverlo es investigando la fuente.
  5. Uniformidad: Imagina que tenemos una columna de ventas pero no todas las transacciones están en la misma divisa. Es imprescindible convertir todo a una sola moneda. La uniformidad va de esto: asegurar que las medidas se expresan con las mismas unidades en todos los sistemas.

Limpieza de datos vs. transformación de datos

Conviene distinguir entre limpiar y transformar datos. La transformación es un conjunto de procesos para extraer más valor de los datos proporcionados. Suelen cambiar el formato original a otro, por ejemplo:

  • Codificación: Proceso de convertir valores categóricos en valores binarios que luego pueden usarse en cálculos de machine learning. La figura muestra cómo quedaría la columna de género si la codificamos. Conserva la misma información, pero en otro formato.

example of data encoding

  • Discretización (data binning): También llamada "bucketing", reduce el efecto/tamaño de observaciones menores agrupando valores continuos en intervalos o categorías.

Data binning example

  • Escalado: Técnica común en machine learning para estandarizar valores de distintas escalas dentro de un rango fijo.

example of data scaling

Fíjate en que, en la mayoría de transformaciones, se altera la representación original. Siguen siendo los mismos datos, pero se transforman para que sean utilizables en aprendizaje automático u otros fines.

Cómo se realiza la limpieza de datos

Es importante contar con unas pautas para lograr datos de alta calidad. A esto lo llamamos flujo de trabajo de limpieza. Nos ayuda a considerar todos los pasos necesarios. Suele incluir:

  • Exploración de datos
  • Limpieza de datos
  • Verificación de datos
  • Informe de la limpieza de datos. Algunos de estos procesos también se mostrarán en Python

Exploración de datos

La exploración consiste en entender los datos mediante un análisis profundo de las variables presentes. Requiere técnicas visuales y de agregación para descubrir problemas subyacentes. Para explorar bien, ten en cuenta:

Contexto de los datos

Antes de limpiar, debemos entender el contexto. El contexto es la procedencia de las entidades contenidas en los datos. Recoge las circunstancias de cómo se recopilaron, lo que da pistas sobre cómo pueden usarse y para qué.

Esto sirve de guía sobre qué es aceptable en la limpieza (y el análisis) para extraer las conclusiones correctas. Una vez tengamos claro cómo se obtuvieron, toca explorar.

Análisis exploratorio de datos

El análisis exploratorio de datos es el proceso de realizar investigaciones iniciales para descubrir patrones, detectar anomalías, probar hipótesis y comprobar supuestos con estadísticas descriptivas y gráficos. No hay descubrimiento sin exploración. Si no exploramos, es difícil detectar los problemas existentes.

Por ejemplo, tenemos un dataset disponible aquí. Los archivos Rolling Sales del Departamento de Finanzas listan propiedades vendidas en los últimos doce meses en la ciudad de Nueva York para las clases fiscales 1, 2 y 4. Descargaremos y leeremos los datos del Bronx proporcionados.

#pandas
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#read excel file
df = pd.read_excel("rollingsales_bronx.xls")

#preview data
df.head()

Bronx rolling sales data example

Los problemas más notables de este data frame incluyen:

  1. columnas sin nombre
  2. valores ausentes en las tres primeras filas

Sin embargo, al explorar el archivo en Excel se ve que la tabla real no empieza hasta la fila 4. Por tanto, si volvemos a leer los datos ajustando algunos parámetros, podemos indicar qué filas omitir y cuál usar como cabecera:

#we read the data in again but skill 3 rows this time
df = pd.read_excel("rollingsales_bronx.xls", skiprows = 4, header = [0])

df.head()

Bronx rolling sales data example cleaned up

La forma de presentar los datos cambia de manera significativa. Aunque podríamos haber limpiado la primera importación, la exploración nos ha ahorrado tiempo con solo ajustar la función de importación en Python.

Explorar datos es como entrar en una escena del crimen siendo la persona investigadora: observamos pasivamente lo que está fuera de lugar; la limpieza es el proceso activo de resolver el caso.

Limpieza de datos

La exploración suele ir de la mano de la limpieza. Una vez detectados los problemas mediante técnicas visuales, de agregación o estadísticas, hay que solucionarlos. En esta fase los datos se eliminan, corrigen o imputan.

Registros inconsistentes

Un ejemplo típico es un formulario en el que se solicita introducir el género. Podemos tener formatos distintos para lo mismo, p. ej., "M", "m", "Male" o "MALE"; o registrar ventas como "aples", "apples" o "APPLES". La mejor forma de detectarlo es con un gráfico de frecuencias o mostrando todos los valores distintos de la columna. Algunas operaciones habituales sobre registros inconsistentes son:

  • Convertir cadenas a minúsculas o a formato título
  • Eliminar espacios en blanco
  • Renombrar columnas

Ejemplo en Python: Usando el dataset importado antes, fíjate en que los nombres de las columnas son inconsistentes:

Python example dataframe

Aunque no parezca grave, es importante hacer que los nombres de columnas sean accesibles de forma consistente. Por ejemplo, EASE-MENT tiene un guion (-) entre palabras, mientras que el resto usa espacios.

Parte de la limpieza es garantizar la consistencia. Vamos a arreglarlo en dos pasos:

  1. Sustituir espacios entre palabras por guiones bajos
  2. Convertir a formato título
# Extract columns
cols = df.columns

# Create empty list for new column names
new_cols = []

# Iterate over each column name to fix issues
for column in cols:
    # Convert column name to title case
    proper_cols = column.title()
    # Replace spaces and hyphens with underscores
    proper_cols_hyphen = proper_cols.replace(" ", "_")
    clean_col = proper_cols_hyphen.replace("-", "_")
    # Append the cleaned column name to the list
    new_cols.append(clean_col)

# Display the transformed column names
new_cols

# Replace existing columns in the dataframe with the cleaned list
df.columns = new_cols

# Preview the updated dataframe
df.head()

Python example 2

Tipos de datos y conversión

El tipo de dato es cómo se representa, lo que indica al compilador cómo debe usarse. La representación determina las operaciones posibles. Veamos los tipos en cada columna del dataframe del Bronx.

#data types
df.dtypes

Data Types and Type Conversion

Nota: Observa que ahora podemos acceder fácilmente a los nombres de columna con la notación punto (df.Year_Built).

Todos los tipos parecen correctos salvo la columna Year_Built, que debería ser categórica. Aunque no tenga gran impacto, al agregar columnas es probable que Year_Built se incluya.

#Fix Year_Built column
df.Year_Built = df.Year_Built.astype("str")

#Check
df.dtypes

Data Types and Type Conversion 2

Datos ausentes

A veces hay observaciones (filas) con valores ausentes y, en ocasiones, columnas enteras vacías. ¿Qué hacemos entonces? ¿Lo ignoramos? Es como un tejado con goteras: cuando llueve, cae agua.

Los valores ausentes se representan de forma distinta según la herramienta: NULL, cadenas vacías, NaN, NA, #NA, etc. El contexto es clave para tratarlos y entender por qué faltan. Hay dos métodos principales:

  • Eliminación de datos
  • Imputación de datos

Antes de decidir, hay que examinar los patrones de ausencia por columnas. Usaremos técnicas visuales y descriptivas para evaluarlo.

#extract the column names
cols = df.columns

#plot a heatmap of missing values with seaborn
plt.figure(figsize = (10,5))
sns.heatmap(df[cols].isnull())

Missing Data

El gráfico muestra visualmente que:

  • Todas las celdas de Ease_ment y casi todas en Apartment_Number están vacías
  • Las columnas relacionadas con Units y Square_Feet tienen valores ausentes dispersos. En datasets mucho más grandes, este gráfico puede no ser ideal. Otra forma es medir la magnitud del problema frente al tamaño total de datos.
    #Get the percentage of missing values in each column
    missing_pct = round(df.isnull().sum()/len(df) * 100, 1)
    print(missing_pct)
    

Missing Data 2

Eliminaremos las columnas Ease_Ment y Apartment_Number y después sustituiremos los valores ausentes en las restantes.

#columns with more than 30% missing values
drop_cols = missing_pct[missing_pct > 30].index
#We can drop these columns with greater than 30 percent missing values
df_new = df.drop(columns = drop_cols)

#Extract columns with mising values between 1 and 30%
replace_cols = missing_pct[(missing_pct > 0) & (missing_pct < 30)].index

#Iterate to replace missing values
for col in replace_cols:
    #if column is year built we replace with median otherwise the mean
    if col == "Year_Built":
        df_new.fillna(df_new[col].median(), inplace = True)
    else:
        mean_value = df_new[col].mean()
        df_new.fillna(mean_value, inplace = True)
df_new.isnull().sum() #preview for missing values

Missing Data 3

Por supuesto, hay mucho más que decir sobre cómo tratar valores ausentes; lo verás en detalle en el curso de Datacamp Dealing with Missing Values in Python. Cada dataset, tipo y estructura tiene sus necesidades, así que no existe un enfoque único. La imagen siguiente muestra distintos escenarios para aplicar eliminación o imputación.

Missing Data 4

Duplicados

Debemos garantizar una única versión fiable de cada observación. A veces hay múltiples registros de un mismo cliente, ya sea por un doble envío del formulario o por errores en la entrada de datos. Sea cual sea el motivo, necesitamos una versión única y completa de la verdad. Esto ayuda a que las empresas:

  1. No malgasten tiempo y dinero dirigiéndose dos veces a la misma persona
  2. Dispongan de una versión fiable y completa para tomar decisiones con fundamento

Valores atípicos

Los valores atípicos son puntos extremos: valores muy bajos o muy altos que no siguen el patrón del resto, por ejemplo:

  • Una persona cliente con 200 años
  • Una lectura de 40° Celsius en la Antártida

Identificación de valores atípicos Hay distintas técnicas, visuales y estadísticas:

  1. Ordenar el dataset: Al ordenar, a veces se detectan fácilmente. Falla con datasets grandes porque es difícil revisar todo de un vistazo.

  2. Visualización: Boxplots, histogramas y dispersogramas facilitan la detección.

  3. Usar puntuaciones Z: Técnica estadística que cuantifica lo inusual de un valor observado asumiendo distribución normal. Es el número de desviaciones estándar por encima o por debajo de la media.

Tratamiento de valores atípicos Consiste en eliminarlos o sustituirlos:

  1. Eliminar atípicos: Puede implicar quitar valores por debajo o por encima de cierto percentil. Escenarios típicos:
  2. Cuando es evidente que la medida es incorrecta. Como decíamos, una persona cliente activa con 200 años no es un valor válido: se debe eliminar.
  3. Si el atípico no cambia los resultados del análisis, puedes descartarlo, especialmente si son pocos respecto al total.

  4. Sustituir atípicos: Reemplazarlos por la media, mediana o moda. Si hay un número considerable de atípicos, eliminarlos puede distorsionar. Nota: La media es sensible a atípicos; suele ser preferible usar mediana o moda.

Verificación de datos

Una vez terminada la limpieza, conviene reevaluar la calidad mediante exploración de datos. Así verificamos la corrección y completitud del proceso, nos aseguramos de no omitir pasos y de mantenernos fieles al contexto.

Limpieza de datos, documentación y automatización

Documentar implica dejar constancia del estado de los datos tras la limpieza y de los procesos seguidos. Esto garantiza una guía para necesidades futuras similares (reproducibilidad) y permite automatizar el proceso cuando haga falta.

La automatización busca que la limpieza sea reproducible. Gran parte del proceso se basa en scripts reutilizables que pueden volver a emplearse con pocos cambios cuando sea necesario.

Conclusión

Hemos repasado en profundidad la limpieza de datos y todos los componentes que debes tener en cuenta para que un proyecto de depuración sea un éxito. Es una fase exigente en tiempo a la que los profesionales de datos dedican en torno al 60% del proyecto. Es el cimiento que, por sí solo, puede determinar el resultado de un proyecto de ciencia de datos. Datos distintos de fuentes distintas tienen necesidades diferentes; tendrás que adaptar los procesos a tu caso.

Recursos:

  • Las imágenes asociadas a transformación de datos se han recortado de un libro de Excel disponible aquí
  • El notebook de Python está disponible en DataCamp workspace
Temas
Análisis de datos
Ciencia de datos

Aprende limpieza de datos con DataCamp

Curso

Limpieza de datos en Python

4 h
160.2K
Aprende a diagnosticar y tratar los datos en sucio y desarrolla las habilidades necesarias para transformarlos en información precisa.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

blog

¿Qué es el data wrangling? Guía práctica con ejemplos

Aprende los conceptos y teorías fundamentales del data wrangling con ejemplos prácticos. Aplica estas habilidades en tu trabajo diario de data science para generar datos limpios y útiles para tus modelos.
Tim Lu's photo

Tim Lu

12 min

blog

La importancia de los datos: 5 razones principales

¿Por qué son importantes los datos? Conoce la importancia de los datos en el mundo actual y descubre algunos cursos que te ayudarán a mejorar tus propias habilidades con los datos.
Kurtis Pykes 's photo

Kurtis Pykes

6 min

Data Analyst surfing on wave of data

blog

9 Competencias esenciales del analista de datos: Guía profesional completa

Aprenda habilidades esenciales de analista de datos, tanto técnicas como interpersonales, desde la programación en Python hasta la comunicación eficaz, para avanzar en su carrera.
Matt Crabtree's photo

Matt Crabtree

9 min

blog

¿Qué es el análisis de datos? Una guía experta con ejemplos

Explora el mundo del análisis de datos con nuestra completa guía. Conoce su importancia, proceso, tipos, técnicas, herramientas y principales carreras en 2023
Matt Crabtree's photo

Matt Crabtree

10 min

Tutorial

21 herramientas esenciales de Python

Conozca las herramientas esenciales de Python para el desarrollo de software, raspado y desarrollo web, análisis y visualización de datos y aprendizaje automático.
Abid Ali Awan's photo

Abid Ali Awan

6 min

data-frames-in-python-banner_cgzjxy.jpeg

Tutorial

Tutorial de Pandas: DataFrames en Python

Explora el análisis de datos con Python. Los DataFrames de Pandas facilitan la manipulación de tus datos, desde la selección o sustitución de columnas e índices hasta la remodelación de tus datos.
Karlijn Willems's photo

Karlijn Willems

15 min

Ver MásVer Más