Introducción
En este proyecto, aprenderás a limpiar y purificar datos CSV eliminando datos incompletos, incorrectos e inválidos. El objetivo es crear un conjunto de datos limpio a partir de los datos brutos, que se puede utilizar para análisis o procesamiento posteriores.
🎯 Tareas
En este proyecto, aprenderás:
- Cómo configurar el entorno del proyecto y preparar los archivos necesarios
- Cómo importar las bibliotecas necesarias para la limpieza de datos
- Cómo leer y procesar los datos brutos, comprobando diferentes tipos de datos sucios
- Cómo escribir los datos limpios en un nuevo archivo CSV
🏆 Logros
Después de completar este proyecto, podrás:
- Utilizar Python y su biblioteca estándar para trabajar con datos CSV
- Aplicar técnicas para validar y limpiar datos, como comprobar valores faltantes, formatos inválidos y datos poco realistas
- Implementar un proceso de limpieza de datos para crear un conjunto de datos de alta calidad
- Generar un nuevo archivo CSV con los datos limpios
Comprendiendo el Formato de los Datos
En este paso, entenderás los datos antes del proceso de limpieza de datos.
- Navega hasta el directorio
/home/labex/project. - Dentro del directorio del proyecto, deberías encontrar un archivo
raw_data.csv. Este archivo contiene los datos brutos que necesitan ser limpiados. - Abre el archivo
raw_data.csv, puedes ver todas las columnas, y su formato correcto debería ser:- Columna de Nombre: Con más de una palabra.
- Columna de Género: Espera 'F' o 'M'.
- Columna de Fecha de Nacimiento: Formateada como
%Y-%m-%d. - Columna de Email: Conforme a
username@domain.com.
Importar las Librerías Necesarias
En este paso, importarás las bibliotecas necesarias para el proceso de limpieza de datos.
Abre el archivo
data_clean.pyen un editor de texto.Agrega el siguiente código al principio del archivo:
import csv
import re
from datetime import datetime
Estas bibliotecas se utilizarán para trabajar con archivos CSV, expresiones regulares y operaciones de fecha/hora.
Inicializar la Lista de Datos Limpios
En este paso, crearás una lista vacía para almacenar los datos limpios.
- En el archivo
data_clean.py, agrega el siguiente código debajo de las importaciones:
## Initialize an empty list to store cleaned data
clean_data = []
Esta lista se utilizará para almacenar las filas de datos limpios.
Leer y Procesar los Datos Brutos
En este paso, leerás los datos brutos del archivo raw_data.csv, procesarás cada fila y agregarás las filas válidas a la lista clean_data.
- En el archivo
data_clean.py, agrega el siguiente código debajo de la inicialización de la listaclean_data:
## Open and read the raw data CSV file
with open("raw_data.csv", "r") as f:
reader = csv.DictReader(f) ## Use DictReader for easy access to columns by name
for row in reader:
## Extract relevant fields from each row
name = row["name"]
sex = row["gender"]
date = row["birth date"]
mail = row["mail"]
## Check if the name field is empty and skip the row if it is
if len(name) < 1:
continue
## Check if the gender field is valid (either 'M' or 'F') and skip the row if not
if sex not in ["M", "F"]:
continue
## Attempt to parse the birth date and calculate age; skip the row if parsing fails
try:
date = datetime.strptime(date, "%Y-%m-%d")
except ValueError:
continue
age = datetime.now().year - date.year
## Skip the row if the calculated age is unrealistic (less than 0 or more than 200)
if age < 0 or age > 200:
continue
## Define a regex pattern for validating email addresses
r = r"^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$"
## Check if the email field matches the regex pattern and skip the row if it doesn't
if not re.match(r, mail):
continue
## If all checks pass, append the row to the cleaned data list
clean_data.append(row)
Este código lee los datos brutos del archivo raw_data.csv, procesa cada fila y agrega las filas válidas a la lista clean_data.
Escribir los Datos Limpios en un Nuevo Archivo Csv
En este paso, escribirás los datos limpios de la lista clean_data en un nuevo archivo CSV llamado clean_data.csv.
- En el archivo
data_clean.py, agrega el siguiente código debajo de la sección de procesamiento de datos:
## Write the cleaned data to a new CSV file
with open("clean_data.csv", "w", newline="") as f:
writer = csv.DictWriter(
f, fieldnames=row.keys()
) ## DictWriter para escribir usando los nombres de columna
writer.writeheader() ## Escribe la fila de encabezado
writer.writerows(clean_data) ## Escribe todas las filas limpias
Este código crea un nuevo archivo CSV llamado clean_data.csv y escribe los datos limpios de la lista clean_data en él.
Ejecutar el Script de Limpieza de Datos
En este último paso, ejecutarás el script data_clean.py para generar el archivo clean_data.csv.
Guarda el archivo
data_clean.py.En la terminal, navega hasta el directorio
/home/labex/projectsi aún no lo has hecho.Ejecuta el siguiente comando para ejecutar el script de limpieza de datos:
python data_clean.py
Después de ejecutar el script, deberías encontrar un nuevo archivo clean_data.csv en el directorio /home/labex/project, que contiene los datos limpios.
¡Felicitaciones! Has completado con éxito el proyecto de purificación de datos CSV.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



