1 usuario conectado

Análisis y ciencia de datos en Python.Limpieza y preparación de datos

Comparte esto

Análisis y ciencia de datos en Python.Limpieza y preparación de datos

Compra libros de Python en Amazon al mejor precio

Un paso fundamental en cualquier proyecto de análisis de datos o ciencia de datos es la limpieza y preparación de datos. Los datos del mundo real rara vez vienen en un formato perfecto y listo para ser analizado. A menudo están incompletos, inconsistentes, contienen errores o no están estructurados de la manera óptima. Dedicar tiempo a limpiar y preparar los datos puede marcar una gran diferencia en la calidad de tus análisis y modelos.

¿Por Qué es Importante la Limpieza y Preparación de Datos?

Tareas Comunes en la Limpieza y Preparación de Datos:

  1. Manejo de Datos Faltantes:

  2. Manejo de Valores Atípicos (Outliers):

  3. Corrección de Errores e Inconsistencias:

  4. Transformación de Datos:

  5. Manejo de Datos Duplicados:

  6. Unión y Combinación de Datos:

  7. Remodelación de Datos:

Herramientas de Python para la Limpieza y Preparación de Datos:

Ejemplo Básico con Pandas:

Python
import pandas as pd
import numpy as np

# Crear un DataFrame con algunos problemas
data = {'ID': [1, 2, 2, 3, 4, 5],
        'Nombre': ['Alice', 'Bob', 'Bob', 'Charlie', 'David', 'Eva'],
        'Edad': [25, 30, 30, 22, np.nan, 28],
        'Ciudad': ['Nueva York', 'Londres', 'Londres', 'París', 'Nueva York', 'Tokio'],
        'Ingresos': [50000, 60000, 60000, 45000, 70000, -1000]}  # Ingreso inválido
df = pd.DataFrame(data)

print("DataFrame Original:\n", df)

# Manejar duplicados (mantener el primero)
df_sin_duplicados = df.drop_duplicates(subset=['ID', 'Nombre'], keep='first')
print("\nDataFrame sin duplicados por ID y Nombre:\n", df_sin_duplicados)

# Manejar valores faltantes (imputar la media de la edad)
media_edad = df_sin_duplicados['Edad'].mean()
df_sin_nan = df_sin_duplicados.fillna({'Edad': media_edad})
print("\nDataFrame con valores faltantes de Edad imputados:\n", df_sin_nan)

# Corregir valor inválido en Ingresos (reemplazar con NaN)
df_sin_nan['Ingresos'] = df_sin_nan['Ingresos'].where(df_sin_nan['Ingresos'] >= 0, np.nan)
print("\nDataFrame con ingresos inválidos tratados:\n", df_sin_nan)

# Codificar la columna Ciudad (one-hot encoding)
df_encoded = pd.get_dummies(df_sin_nan, columns=['Ciudad'], prefix='Ciudad')
print("\nDataFrame con Ciudad codificada:\n", df_encoded)

# Escalar la columna Edad (estandarización)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df_encoded['Edad_Escalada'] = scaler.fit_transform(df_encoded[['Edad']])
print("\nDataFrame con Edad escalada:\n", df_encoded)

La limpieza y preparación de datos es un proceso iterativo y a menudo requiere una comprensión profunda de los datos y del problema que se está tratando de resolver. No existe una receta única, y las técnicas específicas a utilizar dependerán de las características de los datos y los objetivos del análisis.