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(' ', '_')