Pandas: Limpieza y preparación de datos

Aprende a limpiar y preparar datos con Pandas. Mejora la calidad de tus análisis con técnicas de limpieza y preparación de datos en Python.

Aprende Pandas GRATIS y certifícate

La limpieza de datos es una de las tareas esenciales en el análisis y ciencia de datos, ya que permite corregir o eliminar información incorrecta, duplicada o incompleta que afectaría negativamente cualquier análisis posterior. En este módulo, aprenderás las principales técnicas de limpieza de datos con la biblioteca pandas.

Identificación de datos faltantes con pandas

Uno de los primeros pasos al realizar la limpieza de datos es identificar los valores faltantes. En pandas, estos datos suelen representarse como NaN (Not a Number). La función más utilizada para esta tarea es isnull():

import pandas as pd

datos = {'nombre': ['Ana', 'Carlos', None, 'Lucía'],
         'edad': [25, None, 30, 28]}
df = pd.DataFrame(datos)

df.isnull()

La función isnull() devuelve un DataFrame booleano indicando con True dónde existen datos faltantes.

También es posible utilizar el método info() para obtener una visión rápida de la cantidad de valores no nulos por columna:

df.info()

Tratamiento de valores faltantes

Una vez identificados los valores faltantes, pandas ofrece varias opciones para su tratamiento:

  • Eliminar filas con valores faltantes: Mediante el método dropna().
df_limpio = df.dropna()
  • Eliminar columnas con demasiados valores faltantes: especificando axis=1.
df_limpio_columnas = df.dropna(axis=1)
  • Rellenar valores faltantes: Usando fillna().
# Rellenar con un valor específico
df_rellenado = df.fillna({'nombre': 'Desconocido', 'edad': df['edad'].mean()})

Utilizar la media, la mediana o la moda de los datos para rellenar valores faltantes numéricos suele ser la mejor opción, ya que permite mantener las características estadísticas del conjunto.

Detección de valores duplicados

La presencia de datos duplicados puede distorsionar significativamente los resultados de análisis estadísticos. pandas permite detectar fácilmente estos registros mediante el método duplicated():

datos = {'id': [1, 2, 2, 3], 'producto': ['libro', 'lápiz', 'lápiz', 'bolígrafo']}
df = pd.DataFrame(datos)

duplicados = df.duplicated()
print(duplicados)

Este método devuelve una serie booleana indicando las filas duplicadas.

Eliminación de duplicados

La eliminación de datos duplicados en pandas es igualmente sencilla gracias al método drop_duplicates():

df_sin_duplicados = df.drop_duplicates()

Si quieres eliminar duplicados según una columna específica, utiliza el argumento subset:

df_sin_duplicados = df.drop_duplicates(subset=['id'])

Corrección de valores incorrectos

Los valores incorrectos o incoherentes son comunes al recolectar datos desde diversas fuentes. pandas permite corregir estos errores usando técnicas simples como reemplazar valores específicos mediante el método replace():

df = pd.DataFrame({'producto': ['lapiz', 'lápiz', 'bolígrafo']})

df_corregido = df.replace({'lapiz': 'lápiz'})

Para correcciones más avanzadas, las funciones de mapeo y expresiones regulares pueden ser especialmente útiles.

Tratamiento de valores extremos (outliers)

Los valores extremos, conocidos en inglés como outliers, pueden afectar el rendimiento y resultados de modelos estadísticos y predictivos. pandas permite detectar estos valores mediante técnicas estadísticas sencillas:

  • Método IQR (Rango intercuartil):
Q1 = df['edad'].quantile(0.25)
Q3 = df['edad'].quantile(0.75)
IQR = Q3 - Q1

filtro_sin_outliers = df[(df['edad'] >= Q1 - 1.5 * IQR) & (df['edad'] <= Q3 + 1.5 * IQR)]

Esta técnica permite eliminar fácilmente valores alejados que pueden ser errores de captura o medición.

Normalización de datos categóricos

En ocasiones, los datos categóricos pueden aparecer con formatos distintos debido a errores tipográficos, variaciones de mayúsculas/minúsculas o espacios extras. pandas ofrece diversas herramientas para estandarizar estos valores fácilmente:

  • Convertir texto a minúsculas:
df['producto'] = df['producto'].str.lower()
  • Eliminar espacios en blanco:
df['producto'] = df['producto'].str.strip()

Esto asegura una coherencia en los datos categóricos, facilitando análisis posteriores.

Conversión de tipos de datos

Es habitual encontrar columnas con tipos de datos incorrectos, lo que dificulta realizar operaciones específicas como cálculos numéricos o filtrados por fechas. La conversión de tipos de datos en pandas es sencilla con astype():

df['edad'] = df['edad'].astype(int)

Para fechas, es preferible utilizar el método to_datetime():

df['fecha'] = pd.to_datetime(df['fecha'], format='%d-%m-%Y')

Renombrar columnas

Otra tarea básica en la limpieza de datos es renombrar columnas para facilitar su uso posterior. pandas proporciona el método rename() para esta función:

df_renombrado = df.rename(columns={'producto': 'nombre_producto', 'edad': 'edad_cliente'})

Esto facilita trabajar con nombres consistentes y fáciles de recordar.

Uso de expresiones regulares en pandas

Las expresiones regulares (regex) son especialmente útiles al corregir errores en textos complejos o formatos específicos como números de teléfono, códigos postales o correos electrónicos. pandas permite fácilmente usar expresiones regulares con métodos como str.replace():

df['telefono'] = df['telefono'].str.replace(r'\D+', '', regex=True)

Esta expresión elimina cualquier carácter no numérico de una columna de números telefónicos.

«Los datos limpios son tan importantes como un código eficiente; ambos influyen directamente en la calidad del análisis.» – Autor desconocido

Buenas prácticas en limpieza de datos

Finalmente, es recomendable seguir ciertas buenas prácticas al realizar limpieza de datos con pandas:

  • Realizar copias de seguridad antes de modificar el DataFrame original.
  • Documentar claramente las modificaciones realizadas.
  • Validar continuamente el efecto de cada cambio en los datos utilizando métodos de comprobación como df.head() o df.describe().

Estas prácticas garantizan un proceso transparente y replicable, esencial para análisis rigurosos en ciencia de datos.

Empezar curso de Pandas

Lecciones de este módulo de Pandas

Lecciones de programación del módulo Limpieza y preparación de datos del curso de Pandas.

Ejercicios de programación en este módulo de Pandas

Evalúa tus conocimientos en Limpieza y preparación de datos con ejercicios de programación Limpieza y preparación de datos de tipo Test, Puzzle, Código y Proyecto con VSCode.