Tratamiento de valores vacíos II con R y Python: Estrategias de imputación estadística (moda, mediana y media).

Nicolás Urrego
16 min readSep 8, 2023

En la era de la información y el análisis de datos, nos encontramos constantemente enfrentando el desafío de manejar conjuntos de datos incompletos. Estos datos incompletos, o valores vacíos, son una realidad omnipresente en diversas disciplinas, desde la ciencia de datos hasta la investigación académica y la toma de decisiones empresariales.

En nuestro primer artículo, exploramos las raíces y las causas de estos valores vacíos, así como las técnicas para detectarlos en lenguajes de programación como R y Python. Ahora, en esta segunda entrega de nuestra serie sobre el “Tratamiento de valores vacíos”, nos adentraremos en el apasionante mundo de la imputación de datos.

Puedes ver el artículo completo sobre la primera entrega en el siguiente enlace.

La imputación de valores vacíos es un proceso esencial en el preprocesamiento de datos, que implica rellenar o estimar los valores faltantes de manera que los conjuntos de datos incompletos sean más adecuados para su análisis posterior. En esta ocasión, nos centraremos en tres de las técnicas de imputación más utilizadas y efectivas: la imputación basada en la media, la moda y la mediana. Estas estrategias de imputación se basan en estadísticas descriptivas que representan tendencias centrales en los datos y, cuando se aplican con precisión, pueden preservar la integridad y la calidad de nuestros conjuntos de datos.

Acompáñame en esta exploración mientras desglosamos cada una de estas técnicas de imputación, descubrimos cuándo y cómo aplicarlas de manera apropiada, y brindamos ejemplos prácticos en lenguajes de programación comunes. Al final de este viaje, estarás armado con las herramientas necesarias para abordar valores vacíos con confianza y eficacia, permitiéndote aprovechar al máximo tus datos y tomar decisiones informadas basadas en información sólida.

Tabla de contenidos:

  1. Imputación con la media
  2. Imputación con la mediana
  3. Imputación con la moda
  4. Como elegir la mejor técnica

Imputación con la media

En nuestra búsqueda para abordar la problemática de los valores vacíos en conjuntos de datos, nos adentramos en el mundo de las técnicas de imputación, comenzando con una de las más simples pero poderosas: la imputación basada en la media.

La imputación con la media puede ser un primer paso valioso en el proceso de manejo de valores vacíos, permitiéndonos mantener la integridad de nuestros conjuntos de datos y prepararlos para análisis más profundos y precisos.

Funcionamiento

La imputación con la media es un enfoque que implica reemplazar los valores vacíos con el valor promedio de la variable correspondiente. Esta estrategia se basa en la idea de que el valor promedio es una representación razonable de los valores faltantes, ya que captura la tendencia central de la distribución de los datos. Si bien puede parecer una solución simple, su aplicación adecuada puede tener un impacto significativo en la calidad de los datos y en la precisión de los análisis subsiguientes.

Consideraciones para su aplicación

La imputación de valores vacíos utilizando la media es una técnica ampliamente utilizada y efectiva, pero no es adecuada para todos los tipos de datos ni para todas las situaciones. Para aplicar esta técnica de manera apropiada, es importante que los datos cumplan con ciertos requisitos:

  1. Datos numéricos: La imputación con la media es más apropiada para datos numéricos en una escala de medición continua o al menos ordinal. No se debe aplicar a variables categóricas o nominales, ya que la media carece de significado en estos casos.
  2. Distribución aproximadamente normal: Idealmente, los datos deben tener una distribución aproximadamente normal o gaussiana. Si los datos tienen una distribución muy sesgada o contienen valores atípicos significativos, la imputación con la media puede no ser apropiada.
  3. Independencia de las observaciones: Los datos deben ser independientes entre sí, lo que significa que un valor faltante en una observación no debe depender de los valores presentes en otras observaciones. Si existe alguna estructura de dependencia o patrones específicos que involucran valores vacíos, se requieren técnicas más avanzadas.
  4. Valores faltantes aleatorios o no informativos: La imputación con la media se basa en la suposición de que los valores vacíos son aleatorios y no contienen información sistemática. Si los valores vacíos están relacionados con patrones específicos o informan sobre características importantes de los datos, la imputación con la media podría introducir sesgos.
  5. Proporción de valores faltantes razonable: La proporción de valores faltantes en una variable debe ser razonablemente baja para que la imputación con la media sea efectiva. Si una gran parte de los valores en una variable está ausente, es posible que la imputación no sea suficiente, y se deben considerar otras estrategias, como la eliminación de la variable o la imputación con técnicas más avanzadas.
  6. Contexto de análisis: La elección de la imputación con la media también depende del contexto de análisis. En algunas situaciones, como el análisis exploratorio de datos o la modelización simple, esta técnica puede ser adecuada. Sin embargo, en análisis más sofisticados o críticos, es posible que se requieran enfoques más avanzados que consideren la estructura y la naturaleza de los datos.

En resumen, la imputación con la media es una técnica valiosa, pero se debe aplicar con precaución y solo cuando los datos cumplen con los requisitos mencionados anteriormente. Es importante evaluar la idoneidad de esta técnica en función de la naturaleza de los datos y los objetivos del análisis.

Caso de uso: sector financiero

Una institución financiera está realizando análisis de crédito para evaluar la elegibilidad de los solicitantes de préstamos personales. La institución ha recopilado una amplia gama de datos financieros y personales de los solicitantes, incluyendo ingresos mensuales, historial crediticio, deudas existentes, edad y estado civil. Sin embargo, como es común en este tipo de aplicaciones, algunos solicitantes no han proporcionado ciertos datos o han dejado campos en blanco en el formulario de solicitud.

Dado que los ingresos mensuales son una variable numérica que generalmente sigue una distribución aproximadamente normal, se decide aplicar la imputación con la media. Se calcula la media de los ingresos mensuales de los solicitantes que han proporcionado esta información y se utiliza ese valor para llenar los valores vacíos en esta variable para los solicitantes restantes.

La imputación con la media ha permitido que la institución financiera utilice la información disponible de manera más efectiva para tomar decisiones de crédito. Esto ha mejorado la precisión de la evaluación de riesgos y ha facilitado la toma de decisiones informadas, lo que es fundamental en el sector financiero para garantizar la solidez y la rentabilidad de las carteras de préstamos.

Aplicación en R y Python

Usaremos un conjunto de datos de muestra y calcularemos la media de una variable específica para luego llenar los valores vacíos con este valor promedio. Este proceso ilustra cómo la imputación con la media puede ser implementada en R y Python para mantener la integridad de los datos y facilitar análisis posteriores.

Ejemplo en R:

# Crear un conjunto de datos de ejemplo con valores vacíos
data <- data.frame(
Edad = c(25, 30, NA, 35, 28, NA, 40),
Ingresos = c(45000, NA, 60000, NA, 52000, 58000, NA)
)

# Calcular la media de la variable "Ingresos" excluyendo los valores NA
media_ingresos <- mean(data$Ingresos, na.rm = TRUE)

# Imputar los valores vacíos con la media
data$Ingresos[is.na(data$Ingresos)] <- media_ingresos

# Ver el conjunto de datos después de la imputación
print(data)
  Edad Ingresos
1 25 45000
2 30 53750
3 NA 60000
4 35 53750
5 28 52000
6 NA 58000
7 40 53750

Calculamos la media de la variable “Ingresos”, excluyendo los valores vacíos, si no lo hicieramos entonces nuestro cálculo sería erroneo, luego utilizamos esa media para reemplazar los valores vacíos en esa columna.

Ejemplo en Python:

import pandas as pd
import numpy as np

# Crear un DataFrame de ejemplo con valores vacíos
data = pd.DataFrame({
'Edad': [25, 30, np.nan, 35, 28, np.nan, 40],
'Ingresos': [45000, np.nan, 60000, np.nan, 52000, 58000, np.nan]
})

# Calcular la media de la variable "Ingresos" excluyendo los valores NaN
media_ingresos = data['Ingresos'].mean(skipna=True)

# Imputar los valores vacíos con la media
data['Ingresos'].fillna(media_ingresos, inplace=True)

# Ver el DataFrame después de la imputación
print(data)
   Edad  Ingresos
0 25.0 45000.0
1 30.0 53750.0
2 NaN 60000.0
3 35.0 53750.0
4 28.0 52000.0
5 NaN 58000.0
6 40.0 53750.0

Este código en Python utiliza la biblioteca pandas para realizar la imputación con la media de la misma manera que se hizo en R.

Imputación con la mediana

En nuestro continuo viaje para abordar los valores vacíos en los conjuntos de datos, llegamos a otra técnica poderosa y versátil: la imputación con la mediana. Al igual que la imputación con la media, esta estrategia tiene como objetivo llenar los valores faltantes de manera efectiva, pero se basa en la mediana en lugar del promedio.

La imputación con la mediana se convierte así en una herramienta fundamental en el arsenal de técnicas de preprocesamiento de datos, permitiendo la preservación de la integridad de nuestros conjuntos de datos y mejorando la robustez de nuestros análisis y modelos ante la presencia de valores faltantes y datos sesgados.

Funcionamiento

La imputación con la mediana implica reemplazar los valores vacíos con el valor de la mediana, que se encuentra en el centro de un conjunto de datos ordenados, dividiéndolo en dos partes iguales. A diferencia de la media, que puede ser influenciada por valores atípicos o extremos, la mediana es robusta a estas influencias, lo que la hace particularmente útil en situaciones donde los datos pueden estar sesgados o contienen valores extremos.

Consideraciones para su aplicación

La técnica de imputación con la mediana es una estrategia sólida para llenar valores vacíos en un conjunto de datos, pero es importante que los datos cumplan con ciertos requisitos para aplicarla adecuadamente:

  1. Datos numéricos: La imputación con la mediana es apropiada principalmente para variables numéricas en una escala de medición ordinal o superior, como variables cuantitativas. No es adecuada para variables categóricas o nominales, ya que la mediana no tiene sentido en estos casos.
  2. Distribución de los datos: La imputación con la mediana es una estrategia efectiva para llenar valores vacíos en variables numéricas, independientemente de si los datos siguen o no una distribución normal. Esta técnica ayuda a preservar la tendencia central de los datos, incluso en situaciones donde la media podría verse sesgada por valores extremos.
  3. Independencia de las observaciones: Los valores vacíos deben ser aleatorios o no estar relacionados con ninguna característica específica o patrón en los datos. Si existe una relación estructural entre los valores vacíos y otras variables, la imputación con la mediana podría no ser apropiada.
  4. Valores Faltantes no informativos: Los valores vacíos deben considerarse como no informativos, lo que significa que no contienen información sistemática o valiosa sobre los datos. Si los valores vacíos son informativos o indican un patrón específico, la imputación con la mediana podría introducir sesgos en los datos.
  5. Tamaño de muestra suficiente: Es importante que el tamaño de la muestra sea lo suficientemente grande para calcular una mediana significativa. Si el conjunto de datos es muy pequeño, la mediana podría no ser una estimación confiable de la tendencia central de la variable.
  6. Contexto de análisis: La elección de la imputación con la mediana también depende del contexto de análisis. Debe evaluarse si esta técnica es adecuada para los objetivos del análisis y si respeta la naturaleza de los datos y las suposiciones subyacentes.

En resumen, la imputación con la mediana es especialmente útil en situaciones donde se desea una medida de tendencia central resistente a valores atípicos o cuando la distribución de datos es asimétrica. Sin embargo, siempre es importante evaluar la idoneidad de esta técnica en función de la naturaleza de los datos y los objetivos del análisis.

Caso de uso: sector salud

Un hospital está llevando a cabo un estudio de investigación para analizar los tiempos de recuperación de pacientes después de una cirugía específica. El estudio recopila una variedad de datos de pacientes, incluyendo la edad de los pacientes, el tipo de cirugía, la duración de la cirugía y el tiempo de recuperación posterior a la cirugía. Sin embargo, en algunos registros, los datos de tiempo de recuperación están ausentes debido a diversas razones, como la falta de seguimiento o la pérdida de datos.

Dado que la mediana es una medida robusta de tendencia central que no se ve afectada por valores atípicos, se decide utilizar la imputación con la mediana para llenar los valores faltantes en la variable de tiempo de recuperación.

La imputación con la mediana ha permitido que el estudio de investigación continúe con una muestra de datos completa y haya proporcionado una medida de tendencia central robusta para los tiempos de recuperación faltantes. Esto ha mejorado la integridad de los datos y ha permitido obtener conclusiones más confiables sobre los tiempos de recuperación después de la cirugía en el contexto de la atención médica.

Aplicación en R y Python

Estos ejemplos prácticos en los lenguajes de programación R y Python nos ayudarán a comprender cómo aplicar esta técnica de imputación de manera efectiva.

Ejemplo en R

# Crear un conjunto de datos de ejemplo con valores vacíos
data <- data.frame(
Edad = c(25, 30, NA, 35, 28, NA, 40),
TiempoRecuperacion = c(3, NA, 4, 5, NA, 6, 7)
)

# Calcular la mediana de la variable "TiempoRecuperacion" excluyendo los valores NA
mediana_recuperacion <- median(data$TiempoRecuperacion, na.rm = TRUE)

# Imputar los valores vacíos con la mediana
data$TiempoRecuperacion[is.na(data$TiempoRecuperacion)] <- mediana_recuperacion

# Ver el conjunto de datos después de la imputación
print(data)
  Edad TiempoRecuperacion
1 25 3
2 30 5
3 NA 4
4 35 5
5 28 5
6 NA 6
7 40 7

Calculamos la mediana de la variable “TiempoRecuperacion” y utilizamos ese valor para llenar los valores vacíos en esa columna.

Ejemplo en Python:

import pandas as pd
import numpy as np

# Crear un DataFrame de ejemplo con valores vacíos
data = pd.DataFrame({
'Edad': [25, 30, np.nan, 35, 28, np.nan, 40],
'TiempoRecuperacion': [3, np.nan, 4, 5, np.nan, 6, 7]
})

# Calcular la mediana de la variable "TiempoRecuperacion" excluyendo los valores NaN
mediana_recuperacion = data['TiempoRecuperacion'].median(skipna=True)

# Imputar los valores vacíos con la mediana
data['TiempoRecuperacion'].fillna(mediana_recuperacion, inplace=True)

# Ver el DataFrame después de la imputación
print(data)
   Edad  TiempoRecuperacion
0 25.0 3.0
1 30.0 5.0
2 NaN 4.0
3 35.0 5.0
4 28.0 5.0
5 NaN 6.0
6 40.0 7.0

Este código en Python utiliza la biblioteca pandas para realizar la imputación con la mediana de la misma manera que se hizo en R.

Imputación con la moda

En nuestro viaje continuo para abordar los valores vacíos en conjuntos de datos, llegamos a la imputación con la moda, una estrategia especialmente relevante cuando trabajamos con variables categóricas o nominales. Mientras que previamente exploramos la imputación con la media y la mediana para variables numéricas, la imputación con la moda se enfoca en el manejo de valores faltantes en datos que representan categorías o clases, como tipos de productos, estados civiles o categorías de enfermedades.

La imputación con la moda puede ser fundamental para mantener la integridad de los datos categóricos y prepararlos para análisis y modelado subsiguientes.

Funcionamiento

La moda, en este contexto, se refiere al valor más frecuente en una variable categórica. La idea subyacente en la imputación con la moda es reemplazar los valores vacíos en una variable categórica con la categoría que ocurre con mayor frecuencia en el conjunto de datos. Esto es especialmente útil cuando deseamos mantener la consistencia en nuestros datos y evitar sesgos.

Consideraciones para su aplicación

La imputación con la moda es una técnica efectiva para llenar valores faltantes en variables categóricas, pero es importante que los datos cumplan con ciertos requisitos para aplicarla adecuadamente:

  1. Datos categóricos: La imputación con la moda es apropiada principalmente para variables categóricas o nominales, es decir, variables que representan categorías o clases. No se debe aplicar a variables numéricas, ya que la moda no tiene sentido en este contexto.
  2. Frecuencia de categorías: Debe haber una o varias categorías que sean las más frecuentes en la variable categórica. En otras palabras, debe haber una moda clara. Si todas las categorías tienen frecuencias similares, la imputación con la moda puede no ser efectiva.
  3. Independencia de las observaciones: Los valores faltantes en una variable categórica deben ser aleatorios o no estar relacionados con ninguna característica específica o patrón en los datos. Si existe una relación estructural entre los valores faltantes y otras variables, la imputación con la moda podría no ser apropiada.
  4. Valores faltantes no informativos: Los valores vacíos deben considerarse como no informativos, lo que significa que no contienen información sistemática o valiosa sobre los datos. Si los valores vacíos son informativos o indican un patrón específico, la imputación con la moda podría introducir sesgos en los datos.
  5. Contexto de análisis: La elección de la imputación con la moda también depende del contexto de análisis. Debe evaluarse si esta técnica es adecuada para los objetivos del análisis y si respeta la naturaleza de los datos y las suposiciones subyacentes.

En resumen, la imputación con la moda es especialmente útil cuando se trabaja con datos categóricos y se busca mantener la integridad y la consistencia de las categorías en el conjunto de datos. Sin embargo, es esencial evaluar la idoneidad de esta técnica en función de la naturaleza de los datos y los objetivos del análisis.

Caso de uso: sector retail

Una cadena de tiendas minoristas líder en el mercado lleva a cabo un análisis exhaustivo de su inventario y ventas mensuales para optimizar su gestión de stocks y maximizar sus ingresos. Durante este proceso, recopilan datos clave, como las categorías de productos, los códigos de barras de productos, las fechas de ventas y las unidades vendidas. Sin embargo, en algunos registros, la categoría de productos se encuentra incompleta debido a errores en la entrada de datos o nuevos productos recién incorporados al catálogo.

Dado que la moda representa la categoría más frecuente, se decide utilizar la imputación con la moda para llenar los valores faltantes en la variable de categoría de productos. Los registros con categorías faltantes se llenan con la categoría de productos más frecuente en el conjunto de datos.

La imputación con la moda ha permitido a la cadena minorista mantener un conjunto de datos coherente y completo, lo que facilita el análisis y la toma de decisiones informadas sobre la gestión de inventario y las estrategias de ventas. La consistencia en las categorías de productos contribuye a una mejor comprensión de las tendencias del mercado y permite a la cadena retail tomar decisiones más acertadas en cuanto al surtido de productos y las estrategias de ventas.

Aplicación en R y Python

A lo largo de estos ejemplos, exploraremos cómo aplicar esta estrategia en ambos lenguajes de programación. Al calcular la moda, determinamos la categoría más frecuente en la variable categórica y la utilizamos para llenar los valores faltantes.

Ejemplo en R:

# Crear un conjunto de datos de ejemplo con valores vacíos en la categoría de productos
data <- data.frame(
CodigoBarras = c(1234, 5678, 9012, 3456, 7890),
CategoriaProducto = c('Electrónica', NA, 'Ropa', NA, 'Electrónica')
)

# Calcular la moda de la variable "CategoriaProducto" (categoría más frecuente)
moda_categoria <- as.character(names(sort(table(data$CategoriaProducto), decreasing = TRUE)[1]))

# Imputar los valores vacíos con la moda
data$CategoriaProducto[is.na(data$CategoriaProducto)] <- moda_categoria

# Ver el conjunto de datos después de la imputación
print(data)
  CodigoBarras CategoriaProducto
1 1234 Electrónica
2 5678 Electrónica
3 9012 Ropa
4 3456 Electrónica
5 7890 Electrónica

Calculamos la moda (la categoría más frecuente) de la variable “CategoriaProducto” y utilizamos ese valor para llenar los valores vacíos en esa columna.

Ejemplo en Python:

import pandas as pd
import numpy as np

# Crear un DataFrame de ejemplo con valores vacíos en la categoría de productos
data = pd.DataFrame({
'CodigoBarras': [1234, 5678, 9012, 3456, 7890],
'CategoriaProducto': ['Electrónica', np.nan, 'Ropa', np.nan, 'Electrónica']
})

# Calcular la moda de la variable "CategoriaProducto" (categoría más frecuente)
moda_categoria = data['CategoriaProducto'].mode().iloc[0]

# Imputar los valores vacíos con la moda
data['CategoriaProducto'].fillna(moda_categoria, inplace=True)

# Ver el DataFrame después de la imputación
print(data)
   CodigoBarras CategoriaProducto
0 1234 Electrónica
1 5678 Electrónica
2 9012 Ropa
3 3456 Electrónica
4 7890 Electrónica

Este código en Python utiliza la biblioteca pandas para calcular la moda de la variable “CategoriaProducto” y llenar los valores vacíos con la moda de la misma manera que se hizo en R

Como elegir la mejor técnica

En el mundo del análisis de datos y la ciencia de datos, la imputación de valores faltantes es un proceso esencial para tratar con la realidad de que los datos incompletos son comunes en muchas situaciones. Aquí, examinamos las tres técnicas principales de imputación: media, mediana y moda, y consideramos los pros y contras de cada una de ellas.

Imputación con la media

Pros:

  1. Preservación de la tendencia central: La imputación con la media es efectiva para mantener la tendencia central de los datos numéricos. Esto puede ser crucial cuando se busca preservar la suma total o el promedio general de la variable.
  2. Fácil de calcular: Calcular la media es sencillo y rápido, lo que la hace una técnica eficiente para grandes conjuntos de datos.

Contras:

  1. Sensibilidad a valores atípicos: La media es sensible a valores atípicos o extremos, lo que significa que puede verse influenciada negativamente por valores inusuales.
  2. No apropiada para datos categóricos: La imputación con la media no es adecuada para variables categóricas, ya que la media no tiene sentido en este contexto.

Imputación con la mediana

Pros:

  1. Robustez ante valores atípicos: La mediana es una medida robusta de tendencia central que no se ve afectada por valores extremos. Es especialmente útil cuando se trabaja con datos sesgados o con valores atípicos.
  2. Apropiada para datos ordinales: La imputación con la mediana es adecuada para variables ordinales y numéricas, ya que se basa en el orden de los datos, no en su magnitud.

Contras:

  1. No preserva el promedio: Si mantener el promedio es crucial para el análisis, la imputación con la mediana puede no ser la mejor opción, ya que no garantiza la preservación del valor promedio.

Imputación con la moda

Pros:

  1. Apropiada para datos categóricos: La moda es ideal para variables categóricas, ya que representa la categoría más frecuente y mantiene la coherencia en los datos.
  2. Robustez en datos nominales: La moda es útil incluso para datos nominales (sin un orden intrínseco) y es resistente a valores extremos.

Contras:

  1. Puede reducir variedad: La imputación con la moda tiende a reducir la variedad de los datos, ya que llena los valores faltantes con la categoría más frecuente, lo que podría no reflejar la verdadera diversidad de las observaciones.
  2. No apropiada para variables numéricas: La moda no tiene sentido para variables numéricas, por lo que no es adecuada para este tipo de datos.

Flujo para su aplicación

En resumen, la elección de la técnica de imputación depende de la naturaleza de los datos, los objetivos del análisis y la preservación de características específicas. La imputación con la media es útil para mantener la tendencia central en datos numéricos, la mediana es robusta ante valores atípicos, y la moda es esencial para la coherencia en datos categóricos. La elección correcta depende de la situación y los requisitos de la tarea de análisis de datos.

En este artículo, hemos explorado en profundidad las técnicas de imputación de valores vacíos, un paso fundamental en el proceso de preprocesamiento de datos. Hemos examinado tres enfoques comunes: imputación con la media, la mediana y la moda, y hemos comprendido cuándo y cómo aplicar cada uno de ellos.

--

--

Nicolás Urrego

Data Scientis | Data Analyst | Data Base | Machine Learning | Communicator | El mundo de datos en español para descubrir, aprender y compartir. 💡👨‍💻📈