Volver al curso

Python para Data Science

leccion
9 / 14
beginner
12 horas
Pandas: Manipulacion de Datos

Limpieza de datos

Lectura
15 min~1 min lectura

Preparando datos para analisis

Los datos reales raramente estan limpios. Pandas tiene herramientas poderosas para limpiarlos.

Valores nulos

import pandas as pd
import numpy as np

# Detectar nulos
df.isnull()          # DataFrame de True/False
df.isnull().sum()    # Cuenta nulos por columna

# Eliminar filas con nulos
df.dropna()                    # cualquier nulo
df.dropna(subset=['columna'])  # nulo en columna especifica

# Rellenar nulos
df.fillna(0)                   # con valor fijo
df.fillna(df.mean())           # con media
df['col'].fillna(df['col'].median())  # con mediana
df.fillna(method='ffill')      # con valor anterior
df.fillna(method='bfill')      # con valor siguiente

Duplicados

# Detectar duplicados
df.duplicated()           # True/False por fila
df.duplicated().sum()     # contar duplicados

# Eliminar duplicados
df.drop_duplicates()
df.drop_duplicates(subset=['columna'])  # solo considera columna
df.drop_duplicates(keep='last')         # mantener ultimo

Tipos de datos

# Convertir tipos
df['edad'] = df['edad'].astype(int)
df['precio'] = df['precio'].astype(float)
df['fecha'] = pd.to_datetime(df['fecha'])

# Categorias (ahorra memoria)
df['ciudad'] = df['ciudad'].astype('category')

Strings

# Metodos de string con .str
df['nombre'] = df['nombre'].str.lower()     # minusculas
df['nombre'] = df['nombre'].str.upper()     # mayusculas
df['nombre'] = df['nombre'].str.strip()     # quitar espacios
df['nombre'] = df['nombre'].str.replace('a', 'x')

# Extraer con regex
df['codigo'] = df['texto'].str.extract(r'(d+)')

# Contiene
df[df['nombre'].str.contains('Mar')]

Renombrar columnas

# Renombrar especificas
df.rename(columns={'old_name': 'new_name'})

# Todas a minusculas
df.columns = df.columns.str.lower()

# Reemplazar espacios
df.columns = df.columns.str.replace(' ', '_')