El manejo de datos faltantes a través de la imputación es un proceso crucial en el análisis de datos para mejorar la calidad y la utilidad del conjunto de datos. La imputación implica estimar y reemplazar los valores faltantes con valores calculados o predichos para que el análisis y los modelos sean más precisos. Aquí tienes un resumen de técnicas comunes de imputación:
### 1. **Imputación con la Media, Mediana o Moda**
- **Media**: Sustituye los valores faltantes por el promedio de los valores presentes en esa columna. Útil para datos numéricos que no tienen muchos valores atípicos.
- **Mediana**: Sustituye los valores faltantes por el valor central cuando los datos están ordenados. Es menos sensible a los valores atípicos que la media.
- **Moda**: Sustituye los valores faltantes por el valor más frecuente en la columna. Utilizado para datos categóricos.
```python
import pandas as pd
# Imputación con la media
df['column_name'].fillna(df['column_name'].mean(), inplace=True)
# Imputación con la mediana
df['column_name'].fillna(df['column_name'].median(), inplace=True)
# Imputación con la moda
df['column_name'].fillna(df['column_name'].mode()[0], inplace=True)
```
### 2. **Imputación Basada en Modelos**
- **Regresión**: Usa una variable dependiente para predecir el valor faltante basado en otras variables independientes.
- **k-Nearest Neighbors (k-NN)**: Imputa valores basándose en la similitud entre los datos. Busca los k vecinos más cercanos y utiliza sus valores para la imputación.
```python
from sklearn.impute import KNNImputer
# Imputación con k-NN
imputer = KNNImputer(n_neighbors=5)
df_imputed = imputer.fit_transform(df)
```
### 3. **Imputación por Interpolación**
- **Lineal**: Interpola los valores faltantes usando una función lineal entre los valores existentes.
- **Polinómica**: Utiliza polinomios para la interpolación.
```python
# Imputación lineal
df['column_name'] = df['column_name'].interpolate(method='linear')
```
### 4. **Imputación por Valores Predeterminados**
- Sustituye los valores faltantes con un valor específico que tenga sentido en el contexto del conjunto de datos (por ejemplo, 0, 'desconocido').
```python
# Imputación con un valor específico
df['column_name'].fillna('Unknown', inplace=True)
```
### 5. **Imputación con Datos de Vecinos**
- Utiliza datos similares de otras observaciones para imputar los valores faltantes.
```python
from sklearn.impute import SimpleImputer
# Imputación con la mediana por defecto
imputer = SimpleImputer(strategy='median')
df_imputed = imputer.fit_transform(df)
```
### 6. **Múltiples Imputaciones**
- **Multiple Imputation by Chained Equations (MICE)**: Imputa los valores faltantes múltiples veces y combina los resultados para tener en cuenta la incertidumbre en la imputación.
```python
from miceforest import MultipleImputedData
mice_data = MultipleImputedData(df)
df_imputed = mice_data.complete_data()
```
Cada técnica tiene sus ventajas y desventajas, y la elección del método adecuado dependerá de la naturaleza de los datos y del contexto del análisis. La imputación adecuada puede mejorar la precisión del análisis y la calidad de los modelos predictivos.