Pandas
Tutorial Pandas: Identificar y corregir errores y duplicados
Pandas: Aprende a identificar y corregir errores y duplicados en DataFrames. Domina técnicas para manejar valores NaN, tipos erróneos y datos duplicados en tus análisis de datos.
Aprende Pandas GRATIS y certifícate¿Qué son los valores erróneos en un DataFrame?
En el contexto de un DataFrame de Pandas, los valores erróneos hacen referencia a datos que no son válidos o que no se ajustan al formato esperado para una columna específica. Estos valores pueden surgir por diversas razones, como errores de entrada de datos, errores de medición, problemas de conversión de tipos, entre otros. Identificar y gestionar estos valores es crucial para mantener la integridad y calidad de los análisis de datos.
Algunos ejemplos comunes de valores erróneos incluyen:
- Valores
NaN
(Not a Number): Representan datos faltantes en un DataFrame. Pandas utilizaNaN
de NumPy para denotar valores ausentes en datos numéricos yNone
para datos no numéricos.
import pandas as pd
import numpy as np
data = {'A': [1, 2, np.nan, 4], 'B': [np.nan, 'foo', 'bar', 'baz']}
df = pd.DataFrame(data)
print(df)
- Valores fuera de rango: Datos que no se encuentran dentro del rango esperado. Por ejemplo, una columna que representa edades no debería tener valores negativos o extremadamente altos.
data = {'Edad': [25, 30, -5, 200]}
df = pd.DataFrame(data)
print(df)
- Valores con formato incorrecto: Por ejemplo, fechas que no siguen el formato esperado o cadenas de texto en una columna numérica.
data = {'Fecha': ['2024-01-01', '2024-02-30', '2024-03-15']}
df = pd.DataFrame(data)
print(df)
- Errores de tipo de datos: Datos que no coinciden con el tipo esperado para una columna específica, como texto en una columna numérica.
data = {'Salario': [50000, 60000, 'no disponible', 70000]}
df = pd.DataFrame(data)
print(df)
La identificación y gestión de estos valores es un paso fundamental en la limpieza de datos. Pandas proporciona varias funciones para detectar y tratar valores erróneos:
- Detección de valores
NaN
: Utilizando funciones comoisna()
yisnull()
.
print(df.isna())
print(df.isnull())
- Detección de valores fuera de rango: Mediante operaciones lógicas y funciones como
between()
.
print(df[df['Edad'] < 0])
print(df[df['Edad'] > 150])
- Corrección de formatos de fecha: Utilizando
to_datetime()
para convertir cadenas a objetos de fecha.
df['Fecha'] = pd.to_datetime(df['Fecha'], errors='coerce')
print(df)
- Conversión de tipos de datos: Utilizando
astype()
para convertir los datos a los tipos esperados.
df['Salario'] = pd.to_numeric(df['Salario'], errors='coerce')
print(df)
Estos métodos permiten identificar y manejar valores erróneos de manera eficiente, asegurando que los datos sean adecuados para análisis y modelos posteriores.
Formas de corregir valores erróneos en DataFrames
Para corregir valores erróneos en DataFrames de Pandas, se pueden utilizar diferentes técnicas y funciones que permiten limpiar y transformar los datos de manera eficiente.
A continuación se describen algunas de las formas más comunes y efectivas para realizar estas correcciones:
- Eliminación de valores erróneos: La eliminación de filas o columnas con valores erróneos es una de las técnicas más simples. Esto puede hacerse utilizando los métodos
dropna()
para eliminar filas o columnas con valoresNaN
, ydrop()
para eliminar valores específicos.
import pandas as pd
import numpy as np
data = {'A': [1, 2, np.nan, 4], 'B': [np.nan, 'foo', 'bar', 'baz']}
df = pd.DataFrame(data)
# Eliminar filas con valores NaN
df_cleaned = df.dropna()
print(df_cleaned)
# Eliminar columnas con valores NaN
df_cleaned = df.dropna(axis=1)
print(df_cleaned)
- Imputación de valores faltantes: La imputación consiste en reemplazar los valores erróneos o faltantes con valores específicos, como la media, mediana, moda, o un valor constante. Utilizando el método
fillna()
se pueden realizar estas imputaciones.
data = {'A': [1, 2, np.nan, 4], 'B': [np.nan, 'foo', 'bar', 'baz']}
df = pd.DataFrame(data)
# Reemplazar NaN con la media de la columna
df['A'] = df['A'].fillna(df['A'].mean())
print(df)
# Reemplazar NaN con un valor constante
df['B'] = df['B'].fillna('desconocido')
print(df)
- Corrección de valores fuera de rango: Para corregir valores fuera de rango, se pueden utilizar técnicas como la sustitución de valores que superan ciertos umbrales por valores límites o por valores más apropiados según el contexto.
data = {'Edad': [25, 30, -5, 200]}
df = pd.DataFrame(data)
# Reemplazar valores negativos y extremadamente altos
def adjust_age(x):
if x < 0:
return 0
elif x > 100:
return 100
else:
return x
df['Edad'] = df['Edad'].apply(adjust_age)
print(df)
- Conversión de tipos de datos: La conversión de tipos de datos es crucial cuando los valores erróneos son causados por tipos incorrectos en una columna específica. Esto suele ocurrir cuando se mezclan tipos de datos (por ejemplo, cadenas de texto en una columna que debería ser numérica). Pandas ofrece varias formas de realizar estas conversiones de manera segura y eficiente:
astype()
: Se utiliza para convertir una columna a un tipo de datos específico. Sin embargo, este método asume que todos los valores son convertibles, lo que puede generar errores si hay datos no válidos.pd.to_numeric()
: Este método es más flexible y permite manejar valores no convertibles de manera controlada. Al usar el parámetroerrors='coerce'
, los valores que no se pueden convertir se reemplazarán porNaN
en lugar de provocar un error, lo que facilita la limpieza de datos sin interrupciones.
data = {'Salario': [50000, 60000, '70000', 80000]}
df = pd.DataFrame(data)
# Convertir la columna 'Salario' a tipo float usando astype()
df['Salario'] = df['Salario'].astype(float)
print(df)
data = {'Salario': [50000, 60000, 'no disponible', 70000]}
df = pd.DataFrame(data)
# Convertir la columna 'Salario' a numérica, forzando errores a NaN
df['Salario'] = pd.to_numeric(df['Salario'], errors='coerce')
print(df)
- Corrección de formatos de fecha: Cuando los valores erróneos son causados por formatos de fecha incorrectos, el método
to_datetime()
puede ser utilizado para convertir cadenas de texto a objetos de fecha, gestionando errores de conversión.
data = {'Fecha': ['2024-01-01', '2024-02-30', '2024-03-15']}
df = pd.DataFrame(data)
# Convertir la columna 'Fecha' a tipo datetime, forzando errores a NaT
df['Fecha'] = pd.to_datetime(df['Fecha'], errors='coerce')
print(df)
- Uso de expresiones regulares para limpieza de texto: Las expresiones regulares permiten identificar y corregir patrones erróneos en columnas de texto. Utilizando el método
str.replace()
se pueden aplicar estas correcciones.
data = {'Correo': ['user@domain.com', 'user2@domain', 'user3@domain.com']}
df = pd.DataFrame(data)
# Corregir correos electrónicos incorrectos
df['Correo'] = df['Correo'].str.replace(r'@domain$', '@domain.com', regex=True)
print(df)
Estas técnicas permiten corregir diversos tipos de errores en los datos, mejorando la calidad y la integridad del DataFrame antes de su análisis.
¿Qué son y cómo corregir valores duplicados en DataFrames?
En Pandas, los valores duplicados pueden surgir cuando se combinan múltiples fuentes de datos, se realizan operaciones de concatenación o simplemente se introducen errores en los datos. La presencia de duplicados puede distorsionar los análisis y afectar la calidad de los resultados. Es esencial identificar y gestionar estos duplicados para asegurar la integridad de los datos.
Para identificar valores duplicados en un DataFrame, Pandas proporciona el método duplicated()
, que devuelve un booleano indicando si una fila es un duplicado o no.
import pandas as pd
data = {'Nombre': ['Alice', 'Bob', 'Alice', 'Charlie'],
'Edad': [25, 30, 25, 35]}
df = pd.DataFrame(data)
# Identificar filas duplicadas
duplicados = df.duplicated()
print(duplicados)
El método duplicated()
tiene varios parámetros útiles:
subset
: Especifica las columnas que se deben considerar para identificar duplicados. Si se omite, se consideran todas las columnas.keep
: Determina cuál de los duplicados se marcará comoFalse
. Puede ser'first'
(predeterminado),'last'
oFalse
para marcar todos los duplicados comoTrue
.
# Identificar duplicados considerando solo la columna 'Nombre'
duplicados_nombre = df.duplicated(subset=['Nombre'])
print(duplicados_nombre)
# Identificar duplicados y marcar todos como True
duplicados_todos = df.duplicated(keep=False)
print(duplicados_todos)
Para eliminar valores duplicados, se utiliza el método drop_duplicates()
, que elimina las filas duplicadas del DataFrame.
# Eliminar filas duplicadas, manteniendo la primera ocurrencia
df_sin_duplicados = df.drop_duplicates()
print(df_sin_duplicados)
# Eliminar duplicados considerando solo la columna 'Nombre'
df_sin_duplicados_nombre = df.drop_duplicates(subset=['Nombre'])
print(df_sin_duplicados_nombre)
# Eliminar todas las filas duplicadas
df_sin_duplicados_todos = df.drop_duplicates(keep=False)
print(df_sin_duplicados_todos)
En algunos casos, es posible que desees eliminar duplicados basándote en una combinación de columnas. Esto se puede lograr especificando varias columnas en el parámetro subset
.
data = {'Nombre': ['Alice', 'Bob', 'Alice', 'Charlie', 'Alice'],
'Edad': [25, 30, 25, 35, 25],
'Ciudad': ['Madrid', 'Barcelona', 'Madrid', 'Valencia', 'Madrid']}
df = pd.DataFrame(data)
# Identificar duplicados basados en 'Nombre' y 'Edad'
duplicados_combinados = df.duplicated(subset=['Nombre', 'Edad'])
print(duplicados_combinados)
# Eliminar duplicados basados en 'Nombre' y 'Edad'
df_sin_duplicados_combinados = df.drop_duplicates(subset=['Nombre', 'Edad'])
print(df_sin_duplicados_combinados)
Finalmente, en situaciones donde los duplicados no deben ser eliminados, sino corregidos o marcados, se pueden realizar transformaciones adicionales utilizando métodos como groupby()
y apply()
para consolidar la información.
# Agrupar por 'Nombre' y consolidar edades tomando la media
df_agrupado = df.groupby('Nombre').agg({'Edad': 'mean', 'Ciudad': 'first'}).reset_index()
print(df_agrupado)
Estas herramientas y métodos permiten gestionar y corregir valores duplicados en DataFrames de Pandas de manera eficiente, asegurando que los datos sean adecuados para análisis posteriores.
Ejercicios de esta lección Identificar y corregir errores y duplicados
Evalúa tus conocimientos de esta lección Identificar y corregir errores y duplicados con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Introducción e instalación de pandas
Operaciones de filtrado, búsqueda y ordenación
Operaciones de cadena de texto y categóricas
Tratamiento de valores faltantes
Manipulación de DataFrames
Codificación de variables categóricas a numéricas
Tipos de datos en DataFrames
Identificar y corregir errores y duplicados
Operaciones matemáticas y estadísticas
Evaluación código conocimiento general de Pandas
Evaluación multirespuesta Conocimiento general de Pandas
Integración de Pandas con Matplotlib
Operaciones con fechas
Entrada de datos externos y salida de datos con Pandas
Análisis de datos de eventos deportivos con Pandas en Python
Identificar y corregir outliers
Series
Integración de Pandas con Seaborn
Operaciones de conjuntos
Identificación de valores faltantes
DataFrames
Análisis de datos de ventas con Numpy y Pandas
Todas las lecciones de Pandas
Accede a todas las lecciones de Pandas y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción E Instalación De Pandas
Introducción Y Entorno
Series
Estructuras De Datos
Dataframes
Estructuras De Datos
Tipos De Datos En Dataframes
Estructuras De Datos
Manipulación De Dataframes
Manipulación De Datos
Operaciones De Filtrado, Búsqueda Y Ordenación
Manipulación De Datos
Operaciones De Cadena De Texto Y Categóricas
Manipulación De Datos
Operaciones Matemáticas Y Estadísticas
Manipulación De Datos
Operaciones Con Fechas
Manipulación De Datos
Operaciones De Conjuntos
Manipulación De Datos
Identificación De Valores Faltantes
Limpieza Y Preparación De Datos
Tratamiento De Valores Faltantes
Limpieza Y Preparación De Datos
Identificar Y Corregir Errores Y Duplicados
Limpieza Y Preparación De Datos
Identificar Y Corregir Outliers
Limpieza Y Preparación De Datos
Codificación De Variables Categóricas A Numéricas
Limpieza Y Preparación De Datos
Entrada De Datos Externos Y Salida De Datos Con Pandas
Integraciones
Integración De Pandas Con Matplotlib
Integraciones
Integración De Pandas Con Seaborn
Integraciones
Evaluación Multirespuesta Conocimiento General De Pandas
Evaluación Pandas
Evaluación Código Conocimiento General De Pandas
Evaluación Pandas
Certificados de superación de Pandas
Supera todos los ejercicios de programación del curso de Pandas y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
Identificar y gestionar valores
NaN
en DataFrames.Detectar y corregir valores fuera de rango.
Corregir y convertir formatos incorrectos de datos.
Manejar y transformar datos de tipos erróneos.
Identificar y eliminar valores duplicados.
Aplicar técnicas de imputación para valores faltantes.
Utilizar expresiones regulares para limpiar datos de texto.
Consolidar información mediante agrupaciones y agregaciones.