Convertir insights de un Jupyter Notebook en un proceso reproducible marca la diferencia entre un Data Scientist y un Data Engineer. Aquí se explica, con claridad y foco práctico, cómo pasar de pruebas manuales a una recipe automatizada en Python que limpia y estandariza datos de noticias, generalizable más allá de El Universal.
¿Qué diferencia al data engineer en la transformación de datos?
Las dos disciplinas exploran datos con Jupyter Notebooks para entender su estructura y detectar vacíos. Sin embargo, el perfil de Data Engineer debe automatizar esos hallazgos en un script que ejecute transformaciones paso a paso sobre múltiples datasets con formato similar. La idea: crear una recipe que reciba un archivo y devuelva un dataset limpio.
Uso de Jupyter Notebooks para obtener insights, luego traducidos a código automatizado.
Creación de un script reutilizable para muchos sitios, no solo El Universal.
Transformaciones declarativas y trazables con logging.
¿Cómo construir la recipe en Python paso a paso?
El flujo central: definir punto de entrada, parsear argumentos, configurar logging, leer datos con pandas, extraer el identificador del diario desde el nombre del archivo, añadirlo como columna y obtener el host de cada URL.
¿Cómo se define el punto de entrada y los argumentos con argparse?
Punto de entrada en Python con if name == "main".
Un argumento obligatorio: filename, el path al archivo con datos “sucios”.
Validación básica usando la opción de ayuda antes de ejecutar.
import argparse
import logging
from urllib.parse import urlparse
import pandas as pd
logging.basicConfig(level=logging.INFO)logger = logging.getLogger(__name__)defmain(filename:str): logger.info("iniciando proceso de limpiado") df = read_data(filename) newspaper_uid = extract_newspaper_uid(filename) df = add_newspaper_uid_column(df, newspaper_uid) df = extract_host(df)return df
if __name__ =="__main__": parser = argparse.ArgumentParser() parser.add_argument("filename",help="el path a los datos sucios",type=str) args = parser.parse_args() df = main(args.filename)print(df)
¿Qué funciones implementan la receta con pandas y urlparse?
Lectura del CSV a dataframe con pandas.
Extracción del identificador del diario desde el nombre del archivo: la primera parte antes del guion bajo.
Creación de la columna "newspaper_uid" en el dataframe.
Obtención del host de cada URL con urlparse y lambda.