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ícateLa 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()
odf.describe()
.
Estas prácticas garantizan un proceso transparente y replicable, esencial para análisis rigurosos en ciencia de datos.
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.