Limpieza de datos con Pandas

Cleaning data with Pandas

 

Introducción

 

Si te dedicas a la Ciencia de Datos, entonces el término “limpieza de datos” te resultará familiar. Si no, déjame explicártelo. Nuestros datos a menudo provienen de múltiples recursos y no están limpios. Pueden contener valores faltantes, duplicados, formatos incorrectos o no deseados, etc. Ejecutar tus experimentos con estos datos desordenados puede llevar a resultados incorrectos. Por lo tanto, es necesario preparar tus datos antes de alimentarlos a tu modelo. Esta preparación de los datos mediante la identificación y resolución de los errores potenciales, inexactitudes e inconsistencias se denomina Limpieza de Datos.

En este tutorial, te guiaré a través del proceso de limpieza de datos utilizando Pandas.

 

Conjunto de Datos

 

Trabajaré con el famoso conjunto de datos Iris. El conjunto de datos Iris contiene medidas de cuatro características de tres especies de flores Iris: longitud del sépalo, ancho del sépalo, longitud del pétalo y ancho del pétalo. Utilizaremos las siguientes bibliotecas:

  • Pandas: Potente biblioteca para la manipulación y análisis de datos
  • Scikit-learn: Proporciona herramientas para el preprocesamiento de datos y el aprendizaje automático

 

Pasos para la Limpieza de Datos

 

1. Cargando el Conjunto de Datos

 

Carga el conjunto de datos Iris utilizando la función read_csv() de Pandas:

column_names = ['id', 'longitud_del_sépalo', 'ancho_del_sépalo', 'longitud_del_pétalo', 'ancho_del_pétalo', 'especie']
datos_iris = pd.read_csv('data/Iris.csv', names=column_names, header=0)
datos_iris.head()

 

Output:

id longitud_del_sépalo ancho_del_sépalo longitud_del_pétalo ancho_del_pétalo especie
1 5.1 3.5 1.4 0.2 Iris-setosa
2 4.9 3.0 1.4 0.2 Iris-setosa
3 4.7 3.2 1.3 0.2 Iris-setosa
4 4.6 3.1 1.5 0.2 Iris-setosa
5 5.0 3.6 1.4 0.2 Iris-setosa

 

El parámetro header=0 indica que la primera fila del archivo CSV contiene los nombres de las columnas (encabezado).

 

2. Explorar el conjunto de datos

 

Para obtener información sobre nuestro conjunto de datos, imprimiremos información básica utilizando las funciones incorporadas en pandas

print(iris_data.info())
print(iris_data.describe())

 

Salida:

Rango de índice: 150 entradas, 0 a 149
Columnas de datos (total de 6 columnas):
 #   Columna        Conteo sin nulos  Tipo de datos  
---  ------        --------------  -----  
 0   id            150 no nulos    int64  
 1   sepal_length  150 no nulos    float64
 2   sepal_width   150 no nulos    float64
 3   petal_length  150 no nulos    float64
 4   petal_width   150 no nulos    float64
 5   especie       150 no nulos    object 
dtypes: float64(4), int64(1), object(1)
uso de memoria: 7.2+ KB
None

 

 

La función info() es útil para comprender la estructura general del marco de datos, el número de valores no nulos en cada columna y el uso de memoria. Mientras que las estadísticas de resumen proporcionan una visión general de las características numéricas en su conjunto de datos.

 

3. Verificar la distribución de clases

 

Este es un paso importante para comprender cómo se distribuyen las clases en columnas categóricas, que es una tarea importante para la clasificación. Puede realizar este paso utilizando la función value_counts() en pandas.

print(iris_data['especie'].value_counts())

 

Salida:

Iris-setosa        50
Iris-versicolor    50
Iris-virginica     50
Name: especie, dtype: int64

 

Nuestros resultados muestran que el conjunto de datos está equilibrado con un número igual de representaciones de cada especie. Esto establece la base para una evaluación y comparación justa en las 3 clases.

 

4. Eliminación de valores faltantes

 

Dado que es evidente a partir del método info() que tenemos 5 columnas sin valores faltantes, omitiremos este paso. Pero si encuentra algún valor faltante, utilice el siguiente comando para manejarlos:

iris_data.dropna(inplace=True)

 

5. Eliminación de duplicados

 

Los duplicados pueden distorsionar nuestro análisis, por lo que los eliminamos de nuestro conjunto de datos. Primero verificaremos su existencia utilizando el siguiente comando:

duplicate_rows = iris_data.duplicated()
print("Número de filas duplicadas:", duplicate_rows.sum())

 

Salida:

Número de filas duplicadas: 0

 

No tenemos ningún duplicado para este conjunto de datos. No obstante, los duplicados se pueden eliminar mediante la función drop_duplicates().

iris_data.drop_duplicates(inplace=True)

 

6. Codificación one-hot

 

Para el análisis categórico, realizaremos una codificación one-hot en la columna de especies. Este paso se realiza debido a la tendencia de los algoritmos de aprendizaje automático a funcionar mejor con datos numéricos. El proceso de codificación one-hot transforma variables categóricas en un formato binario (0 o 1).

encoded_species = pd.get_dummies(iris_data['especie'], prefix='especie', drop_first=False).astype('int')
iris_data = pd.concat([iris_data, encoded_species], axis=1)
iris_data.drop(columns=['especie'], inplace=True)

 

 

7. Normalización de las columnas de valores float

 

La normalización es el proceso de escalar características numéricas para que tengan una media de 0 y una desviación estándar de 1. Este proceso se realiza para asegurar que las características contribuyan de manera equitativa al análisis. Normalizaremos las columnas de valores float para una escala consistente.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
cols_to_normalize = ['longitud_sepalo', 'ancho_sepalo', 'longitud_petalo', 'ancho_petalo']
datos_normalizados = scaler.fit(iris_datos[cols_to_normalize])
iris_datos[cols_to_normalize] = scaler.transform(iris_datos[cols_to_normalize])

 

 

8. Guardar el dataset limpio

 

Guarda el dataset limpio en un nuevo archivo CSV.

iris_datos.to_csv('iris_limpio.csv', index=False)

 

Conclusión

 

¡Felicidades! Has limpiado exitosamente tu primer dataset utilizando pandas. Es posible que te encuentres con desafíos adicionales al tratar con datasets complejos. Sin embargo, las técnicas fundamentales mencionadas aquí te ayudarán a comenzar y preparar tus datos para el análisis.

    Kanwal Mehreen es una aspirante a desarrolladora de software con un gran interés en la ciencia de datos y las aplicaciones de la inteligencia artificial en medicina. Kanwal fue seleccionada como la Google Generation Scholar 2022 para la región de APAC. A Kanwal le encanta compartir conocimientos técnicos escribiendo artículos sobre temas de tendencia y está apasionada por mejorar la representación de las mujeres en la industria tecnológica.  

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce a SeamlessM4T el nuevo modelo base de Meta AI para la traducción de voz

El habla se está convirtiendo rápidamente en una de las próximas fronteras de los modelos fundamentales. Aunque los d...

Inteligencia Artificial

6 Comandos Mágicos para Jupyter Notebooks en Ciencia de Datos con Python

En el campo de los proyectos de Ciencia de Datos basados en Python, la utilización de los Cuadernos de Jupyter es omn...

Inteligencia Artificial

El Lado Oscuro de la IA - ¿Cómo pueden ayudar los creadores?!

No pasa un solo día en estos tiempos sin que nos enteremos de algo sorprendente que haya hecho una herramienta de IA....

Inteligencia Artificial

California acaba de abrir las compuertas para los coches autónomos

Después de una decisión de la junta reguladora estatal, San Francisco tendrá robotaxis las 24 horas del día, los 7 dí...