RETOS DE INGENIERÍA

Módulo 1: Python Core & Visualización

Logo USTA
EVALUACIÓN PRÁCTICA

Formato

Un único archivo .ipynb (Jupyter Notebook) con celdas de Markdown explicando tus hallazgos.

Dataset

Usa nyc-train-trip o train.csv disponible en el repositorio. ¡Son datos reales!

Evaluación

Se evalúa: Reducción de Memoria (>50%), Limpieza de Código y Storytelling Visual.

1

Reto Pandas Pro

Optimización de Memoria y Procesamiento Vectorizado

Fase 1: Diagnóstico y Memoria

  • 1.
    Inspección Profunda: df.info() miente. Usa memory_usage='deep' para ver el peso real de los strings. Compara el antes y el después.
  • 2.
    Downcasting Numérico: ¿Necesitas 64 bits para contar hasta 6 pasajeros? Convierte passenger_count a int8 usando pd.to_numeric(..., downcast='integer').
  • 3.
    Categoricals: Convierte columnas repetitivas como store_and_fwd_flag a tipo category. Verifica la reducción masiva de RAM.

Fase 2: Vectorización y Tiempo

  • 4.
    Parsing Explícito: Acelera to_datetime especificando el format.
  • 5.
    Accessors (.dt): Extrae hora y día usando .dt.hour. ¡Cero bucles for!
  • 6.
    Lógica NumPy: Reemplaza apply + if/else por el ultra-rápido np.where para crear la columna trip_type.
  • 7.
    Geoespacial Vectorizado: Implementa la fórmula Haversine usando funciones trigonométricas de NumPy sobre las columnas de lat/lon completas.

Fase 3: Código Elegante (Method Chaining)

  • 8.
    .query(): Filtra datos usando strings limpios tipo SQL.
  • 9.
    .assign(): Crea la columna velocidad_kph al vuelo dentro de una cadena.
  • 10.
    .clip(): Maneja outliers en duración limitando los valores extremos sin borrar filas.
  • 11.
    .pipe(): Inyecta una función personalizada de etiquetado de tráfico en tu cadena.

Fase 4: Agregaciones Avanzadas

  • 12.
    Named Aggregation: Groupby con nombres de columnas personalizados.
  • 13.
    .transform(): Window functions en Pandas. Agrega el promedio del grupo a cada fila original.
  • 14.
    Filter Groups: Elimina horas del día con poca actividad estadística.
  • 15.
    Binning (qcut): Crea categorías de distancia ("Corto", "Largo") basadas en cuantiles.

Fase 5: Time Series & Export

  • 16.
    Resample: Agrupa temporalmente por Día ('D').
  • 17.
    Rolling Windows: Suaviza la serie temporal con una media móvil de 7 días.
  • 18.
    Scatter Alpha: Usa transparencia para revelar densidad en gráficos masivos.
  • 19.
    Correlaciones: Heatmap de Seaborn para variables numéricas.
  • 20.
    Parquet: Guarda el resultado final en formato eficiente .parquet.
2

Reto Visualización Pro

Storytelling y Automatización de Reportes

Fase 1: Fundamentos Pro

  • 1. Escala Logarítmica: Revela datos ocultos en distribuciones sesgadas (salarios, precios).
  • 2. Orden Visual: Jamás ordenes por orden alfabético. Ordena por magnitud.
  • 3. Matplotlib OO API: Usa fig, ax = plt.subplots() para control total.
  • 4. Títulos Activos: El título debe ser la conclusión ("Las ventas cayeron"), no la descripción.

Fase 2: Big Data Viz

  • 5. Overplotting: Arregla scatterplots sólidos usando alpha=0.05 y puntos pequeños.
  • 6. Hexbins: Usa sns.jointplot(kind="hex") para ver densidad en lugar de puntos.
  • 7. Geoespacial Rápido: Dibuja el mapa de NYC usando solo Lat/Lon como ejes X/Y.

Fase 3: Relaciones Complejas

  • 8. Heatmaps Temporales: Pivota tablas para ver patrones Día vs Hora.
  • 9. Small Multiples: Usa FacetGrid para comparar histogramas por categoría.
  • 10. Boxplots: Compara distribuciones y outliers, no solo promedios.

Fase 4: Estética de Reporte

  • 11. No Chartjunk: Usa sns.despine(). Menos es más.
  • 12. Color Semántico: Rojo para "malo", Verde para "bueno". No uses colores aleatorios.
  • 13. Anotaciones: Señala el insight directamente en el gráfico con flechas.
  • 14. Alta Resolución: Guarda con dpi=300 para que se vea nítido en PDF.
CAPSTONE FINAL

Fase 5: Automatización PDF

El objetivo final: Un script que genere el reporte sin que tú muevas un dedo.

  • 15. Setup FPDF: Inicializa el documento PDF.
  • 16. Generar Assets: Función que crea y guarda gráficos temporalmente.
  • 17. Tablas a Texto: Convierte Dataframes resumen a strings.
  • 18. Integración: Usa pdf.image() para insertar los gráficos.
  • 19. Narrativa Dinámica: Usa f-strings para insertar métricas calculadas en el texto del reporte.