GuíaBásico

Guía de Python para Data Engineering

Aprende a convertir un script de datos plano en un paquete Python de producción para data engineering: empaquetado con uv, tests con pytest, logging estructurado en JSON, reintentos con tenacity, y DuckDB y Polars como motores de transformación. Es la continuación de la Guía de Fundamentos de Data Engineering (el curso anterior de este ecosistema), donde construiste este pipeline como script plano: mismo caso de Kiosko, mismo pipeline, mismos datos de `orders` y `events` — lo que cambia es cómo está escrito el código que los procesa. Esta guía toma el script plano de foundations y lo convierte, módulo a módulo, en un paquete Python de producción: empaquetado con `uv` (`pyproject.toml`, layout `src/`, `uv.lock`), tests con `pytest` sobre cada función del pipeline, logging estructurado en JSON en vez de `print`, reintentos deterministas con `tenacity` para fallas transitorias, y DuckDB y Polars a fondo como los dos motores de transformación diaria que reemplazan los loops de Python puro y `sqlite3` de foundations. Nunca se usa pandas. Cierra con un capstone que ensambla el paquete completo — instalable, testeado, logueado, resiliente — y compara las tres implementaciones de la misma transformación (loop en Python, SQL con DuckDB, `LazyFrame` con Polars) para probar que producen exactamente el mismo resultado.

64
lecciones
8
módulos
Inglés · Español
disponible en
certificado
Gratis
acceso
NIEVA

Resultados

Lo que vas a poder hacer

  • Convertir un script plano en un paquete instalable con `uv`: `pyproject.toml`, layout `src/`, `uv.lock`, y `uv run` como forma de ejecutarlo
  • Escribir tests con `pytest` (fixtures, parametrize, arrange-act-assert) sobre las funciones de extracción, transformación y calidad heredadas de foundations
  • Reemplazar cada `print()` por logging estructurado en JSON con contexto (`run_id`, `partition_date`) usando el módulo `logging` y `structlog`
  • Distinguir errores que deben reintentarse de errores que deben ir a cuarentena, e implementar reintentos deterministas con `tenacity` (backoff, jitter, cuándo rendirse), probados sin usar `random`
  • Usar DuckDB como motor de trabajo diario: SQL directo sobre Parquet/CSV, la API relacional en Python, y persistencia en archivo o en memoria
  • Usar Polars a fondo: DataFrames eager vs `LazyFrame`, el plan de consulta optimizado con `.explain()`, expresiones, `group_by`/`agg` y joins
  • Decidir con criterio cuándo usar DuckDB y cuándo Polars, y por qué ambos desplazaron a pandas en pipelines de producción
  • Ensamblar un paquete final con entry point de línea de comandos, configuración sin valores hardcodeados, y un test de integración que prueba idempotencia con `assert`, no a ojo

Antes de empezar

Qué necesitas traer

Es para ti si...

  • Quien ya completó `data-engineering-foundations-guide` (o tiene un pipeline equivalente escrito como script plano) y quiere llevarlo a nivel de producción
  • Data engineers junior que escriben pipelines funcionales pero sin tests, sin logging estructurado y sin manejo de reintentos
  • Developers que siguen usando pandas por costumbre y quieren migrar a DuckDB/Polars con criterio, no por moda
  • Cualquiera que necesite entregar un pipeline de datos que un equipo de ingeniería real aceptaría revisar

Requisitos y materiales

  • `data-engineering-foundations-guide` completada (o equivalente: el pipeline de extracción, calidad, transformación y carga de Kiosko funcionando como script plano)
  • Python intermedio: funciones, manejo de excepciones, comprensión de listas
  • Laptop propia con Python 3 y `uv` instalables — todo corre local y con $0

Contenido

El temario, módulo por módulo

Abre cualquiera para ver sus lecciones.

Dónde encaja

Esta guía es parte de algo más grande

Se estudia dentro de estos programas, con acompañamiento y fechas.

Dudas frecuentes

Lo que suele preguntarse

Empieza cuando quieras

Reseñas

Lo que dicen los estudiantes

Estas reseñas son de estudiantes inscritos que completaron al menos el 50% del curso. Moderamos las reseñas solo por motivos de contenido (spam, lenguaje ofensivo, datos personales), nunca por ser críticas o negativas.

Aún no hay reseñas aprobadas.

¡Sé el primero en compartir tu experiencia!