GUÍA MAESTRA – SEMANA DOS

Visualización y EDA inicial con Python y R

Resumen ejecutivo

Esta semana consolida el hábito técnico más importante del curso: antes de modelar, se explora. El estudiante aprende a construir un flujo de visualización y EDA inicial que sea reproducible y comparable entre Python (en Colab) y R (en Posit Cloud). El enfoque se centra en: histogramas, densidades, boxplots, gráficos de dispersión, matrices de dispersión (pairplot/ggpairs), mapas de calor de correlación (heatmap), manejo de valores faltantes (NA) y transformaciones comunes (log, raíz), dejando trazabilidad del uso de IA mediante bitácora. La semana culmina con el Prompt Global para producir un resumen manuscrito de una sola hoja, como estrategia de consolidación del aprendizaje. fileciteturn0file0L21-L32

Objetivos de la semana

Al finalizar la semana, el estudiante debe poder:

  • Implementar un EDA inicial basado en visualización: distribución, dispersión, outliers, correlación y datos faltantes. citeturn0search5turn0search1turn0search16turn3search1turn0search22
  • Construir gráficas equivalentes en Python y R con funciones canónicas (p. ej., histplot/geom_histogram, kdeplot/geom_density, boxplot/geom_boxplot). citeturn0search5turn0search1turn0search3turn1search2
  • Detectar y tratar valores faltantes con operaciones estándar (isna, dropna, fillna, interpolate en pandas; is.na, drop_na, replace_na en tidyverse) sin perder trazabilidad de decisiones. citeturn0search29turn0search4turn2search0turn2search1turn3search0turn1search0turn3search10
  • Explicar, con criterio ingenieril, qué muestra cada gráfica y qué hipótesis exploratorias sugiere (no conclusiones causales). citeturn3search2turn1search2turn0search22
  • Aplicar transformaciones comunes y/o transformaciones de ejes cuando la distribución o la escala lo exijan (log, raíz), justificando el propósito. citeturn2search2turn0search18

Estructura semanal

La semana tiene dos sesiones de dos horas cada una. La lógica pedagógica es: Estudia y Aprende → Taller guiado → Producción reproducible → Cierre manuscrito. fileciteturn0file0L21-L32

timeline
  title Semana dos - Visualización y EDA inicial
  Sesión uno : Visualización como herramienta de EDA : distribuciones, boxplots, dispersión, NA y transformaciones
  Sesión dos : Taller reproducible en Python y R : pairplot/ggpairs, heatmap de correlación, limpieza mínima y mini-entregable

Uso de ChatBot: se recomienda el “GPT Estadística Aplicada – Python y R” por coherencia metodológica; sin embargo, puede usarse cualquier ChatBot siempre que se conserve bitácora y se respeten criterios de integridad académica (no fabricación de resultados; comprensión demostrable). fileciteturn0file0L55-L59

Sesión uno

Prompt de inicio para “Estudia y Aprende”

Use el ChatBot recomendado (o uno alternativo) y copie este prompt:

Actúa como docente universitario de Estadística Aplicada para ingeniería.
Enséñame un flujo de EDA inicial basado en visualización: histogramas, densidad, boxplot, scatter, matriz de dispersión y mapa de correlación.
Explícame qué pregunta responde cada gráfica, qué errores comunes debo evitar y cómo tratar NA sin inventar datos.
Al final, proponme una lista de verificación (checklist) para aplicar siempre con cualquier dataset.

Contenidos conceptuales

Visualización como instrumento de EDA.
En esta sesión la visualización se usa como “lupa” para identificar forma distribucional, variabilidad, asimetría, valores atípicos, relaciones y patrones preliminares. En Python, seaborn se usa para visualización estadística sobre matplotlib. citeturn2search35turn3search5

Distribuciones: histograma y densidad.
- Un histograma muestra distribución por conteo en bins; en seaborn se trabaja con histplot, que además permite normalizar y agregar curvas suaves tipo KDE. citeturn0search5
- La densidad (KDE) estima una curva continua análoga al histograma; seaborn documenta kdeplot como visualización de estimación de densidad. citeturn0search1turn0search9
- En R, geom_histogram() y geom_density() son equivalentes base de la gramática de gráficos. citeturn0search3turn0search18

Boxplot y outliers.
El boxplot resume la distribución y destaca outliers típicamente con base en IQR; seaborn describe explícitamente el criterio funcional (método dependiente del rango intercuartílico). citeturn0search16

Relación entre variables: scatterplot y semánticas.
scatterplot muestra relación entre x y y. Seaborn añade semánticas (hue, size, style), pero advierte que usar demasiadas semánticas puede dificultar la interpretación. citeturn3search2

Valores faltantes (NA) y decisiones mínimas.
- R define NA como indicador de valor faltante; is.na identifica faltantes. citeturn3search10
- pandas documenta qué se considera “missing” y cómo trabajar con ello; funciones clave incluyen isna, dropna, fillna e interpolación. citeturn0search0turn0search29turn0search4turn2search0turn2search1
- En tidyverse, drop_na() conserva solo filas completas (interpretación explícita en la documentación) y replace_na() reemplaza NA mediante un diccionario/lista por columnas. citeturn3search0turn1search0

Transformaciones (log/raíz) para clarificar patrones.
En ggplot2 existen escalas con transformación incorporada (scale_*_log10(), scale_*_sqrt()), documentadas como variantes de transformación de ejes. citeturn2search2

Micro-prompts para guiar explicaciones durante la sesión

Use cuando el estudiante ya tenga una gráfica y quiera interpretación (evitar respuestas genéricas):

  • Prompt para interpretar histograma + densidad
    > Interpreta este histograma y esta curva de densidad. Describe: asimetría, multimodalidad, dispersión, posibles outliers y qué transformación (si aplica) podría mejorar la visualización. No inventes valores ni conclusiones causales.

  • Prompt para interpretar boxplot
    > Explica este boxplot como si yo fuera estudiante de ingeniería: mediana, cuartiles, IQR, whiskers y outliers. ¿Qué decisiones de limpieza podrían estar justificadas y cuáles serían indebidas?

  • Prompt para interpretar scatter
    > Interpreta este scatterplot: tendencia, no linealidad, heterocedasticidad aparente, grupos. Señala al menos 3 hipótesis exploratorias, sin afirmar causalidad.

Actividad corta en clase

Con un dataset pequeño (real o simulado), el estudiante debe:

  • Construir un histograma y una densidad de una variable numérica. citeturn0search5turn0search1
  • Construir un boxplot de la misma variable y explicar outliers. citeturn0search16
  • Construir un scatterplot entre dos variables numéricas. citeturn3search2
  • Crear un “reporte verbal” de 90 segundos: qué observó y qué pregunta haría para la sesión dos.

image_group{“layout”:“carousel”,“aspect_ratio”:“16:9”,“query”:[“histogram example with kde overlay plot”,“boxplot outliers example plot IQR”,“scatterplot example engineering data”,“correlation heatmap example plot”],“num_per_query”:1}

Sesión dos

Prompt de inicio para “Estudia y Aprende”

Actúa como tutor práctico de Estadística Aplicada.
Dame una plantilla reproducible de EDA inicial en Python (pandas + seaborn + matplotlib) y en R (tidyverse + ggplot2):
1) cargar datos, 2) revisar tipos, 3) revisar NA, 4) visualizaciones univariadas, bivariadas y multivariadas, 5) correlación con heatmap, 6) transformación log o sqrt (si aplica).
Incluye código comentado y explica qué decisiones NO debo automatizar.

Datasets sugeridos

Elija uno, priorizando pertinencia de ingeniería. La guía funciona con cualquier dataset en CSV:

  • Ingeniería Civil: Concrete Compressive Strength (UCI), calidad del aire, tráfico/aforos (si se dispone).
  • Ingeniería Agrícola: suelo y textura, humedad del suelo, precipitación/temperatura (si se dispone).
  • Ingeniería Agroindustrial: calidad de producto, fermentación, rendimiento de proceso, energía/consumo (si se dispone).

Para demostración en clase (sin descargar archivos), se puede usar un dataset integrado de seaborn (p. ej., penguins) y uno integrado en R (p. ej., mtcars), únicamente para aprender el flujo.

Tabla de equivalencias esenciales R vs Python

Use esta tabla como “diccionario” para traducir el flujo entre lenguajes (se sugiere imprimirla o pegarla en el cuaderno de laboratorio).

Tarea de EDA Python (Colab) R (Posit Cloud)
Contar NA por columna df.isna().sum() citeturn0search29 colSums(is.na(df)) citeturn3search10
Eliminar filas con NA df.dropna() citeturn0search4 df %>% tidyr::drop_na() citeturn3search0
Reemplazar NA df.fillna(...) citeturn2search0 df %>% tidyr::replace_na(list(...)) citeturn1search0
Histograma sns.histplot(...) citeturn0search5 ggplot(df, aes(x)) + geom_histogram() citeturn0search3
Densidad sns.kdeplot(...) citeturn0search1 ggplot(df, aes(x)) + geom_density() citeturn0search18
Boxplot sns.boxplot(...) citeturn0search16 geom_boxplot() citeturn1search2
Scatter sns.scatterplot(...) citeturn3search2 geom_point() (en ggplot2) citeturn0search28
Pairplot / matriz dispersión sns.pairplot(...) citeturn0search22turn3search16 GGally::ggpairs(df) citeturn1search3
Correlación numérica df.corr() citeturn3search1 cor(df_num, use="pairwise.complete.obs") (estándar base)
Heatmap correlación sns.heatmap(df.corr()) citeturn2search3turn3search1 ggplot + geom_tile o paquetes especializados (opcional)

Taller reproducible en Python

Plantilla base en Colab

La guía usa seaborn (basado en matplotlib) y se apoya en estructuras de pandas. citeturn2search35turn3search5

# ============================================
# Semana 2 - EDA inicial (Plantilla reproducible)
# Entorno sugerido: Colab
# ============================================

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# Tema visual global (opcional, recomendado)
sns.set_theme(context="notebook", style="darkgrid")  # Ajusta defaults globales
# Documentación: set_theme modifica parámetros rcParams de matplotlib.
# (Se recomienda invocarlo una sola vez al inicio.)
# Fuente: seaborn.set_theme()
# ============================================

# 1) Cargar datos
# Reemplace por su archivo .csv si aplica:
# df = pd.read_csv("mi_dataset.csv")

# Dataset de ejemplo (solo para practicar el flujo)
df = sns.load_dataset("penguins")  # si está disponible en seaborn

# 2) Inspección rápida
print(df.head())
print("\nDimensiones:", df.shape)
print("\nTipos:\n", df.dtypes)

# 3) Diagnóstico de NA
na_por_col = df.isna().sum()
print("\nNA por columna:\n", na_por_col)

# Estrategia mínima (NO automática): decidir según contexto
# Ejemplo: eliminar filas con NA en columnas clave
df_clean = df.dropna(subset=["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"])

# 4) Visualización univariada: histograma + KDE
plt.figure(figsize=(7, 4))
sns.histplot(data=df_clean, x="body_mass_g", kde=True)  # histplot puede añadir KDE
plt.title("Distribución de masa corporal")
plt.show()

# 5) Boxplot: detección visual de outliers
plt.figure(figsize=(7, 4))
sns.boxplot(data=df_clean, x="body_mass_g")
plt.title("Boxplot - masa corporal")
plt.show()

# 6) Bivariada: scatterplot
plt.figure(figsize=(7, 4))
sns.scatterplot(data=df_clean, x="flipper_length_mm", y="body_mass_g", hue="species")
plt.title("Relación: aleta vs masa")
plt.show()

# 7) Multivariada: pairplot (usar subconjunto para legibilidad)
vars_num = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
sns.pairplot(df_clean[vars_num + ["species"]], hue="species", diag_kind="hist")
plt.show()

# 8) Correlación + heatmap
corr = df_clean[vars_num].corr()  # corr excluye NA por diseño
plt.figure(figsize=(6, 5))
sns.heatmap(corr, annot=True, fmt=".2f")
plt.title("Heatmap de correlación (Pearson)")
plt.show()

# 9) Transformación (ejemplo): log10
# Nota: sólo si la variable es positiva y la asimetría lo justifica
df_clean = df_clean.assign(log_body_mass=np.log10(df_clean["body_mass_g"]))
plt.figure(figsize=(7, 4))
sns.histplot(data=df_clean, x="log_body_mass", kde=True)
plt.title("Distribución log10(masa corporal)")
plt.show()

Referencias técnicas para el taller (qué respalda el código)

  • histplot describe histogramas y permite normalización y adición de curva suave KDE. citeturn0search5
  • kdeplot y el tutorial de distribuciones explican KDE como curva de densidad. citeturn0search1turn0search9
  • boxplot describe boxplot y tratamiento de outliers según IQR. citeturn0search16
  • pairplot documenta la matriz de relaciones y el comportamiento de la diagonal. citeturn0search22turn3search16
  • heatmap documenta representación matricial con codificación por color. citeturn2search3
  • DataFrame.corr especifica que la correlación se calcula excluyendo NA/null. citeturn3search1
  • set_theme cambia defaults globales mediante rcParams. citeturn4search2turn4search9
  • isna, dropna, fillna, interpolate son métodos estándar documentados para NA en pandas. citeturn0search29turn0search4turn2search0turn2search1

Taller reproducible en R

Plantilla base en Posit Cloud

En R, la visualización con ggplot2 se basa en gramática de gráficos y el flujo recomendado de aprendizaje aparece de forma canónica en recursos como R for Data Science. citeturn0search28

# ============================================
# Semana 2 - EDA inicial (Plantilla reproducible)
# Entorno sugerido: Posit Cloud
# ============================================

# 1) Paquetes
# Instalar si es necesario (ejecutar solo una vez):
# install.packages(c("tidyverse", "GGally"))

library(tidyverse)

# 2) Cargar datos
# Reemplace por su CSV si aplica:
# df <- read.csv("mi_dataset.csv")

# Dataset de ejemplo (solo para practicar el flujo)
df <- mtcars

# 3) Inspección rápida
head(df)
str(df)
summary(df)

# 4) Diagnóstico de NA
colSums(is.na(df))  # is.na identifica valores faltantes (NA)

# 5) Histograma (ejemplo variable mpg)
ggplot(df, aes(x = mpg)) +
  geom_histogram() +
  labs(title = "Histograma de mpg", x = "mpg", y = "Conteo")

# 6) Densidad
ggplot(df, aes(x = mpg)) +
  geom_density() +
  labs(title = "Densidad de mpg", x = "mpg", y = "Densidad")

# 7) Boxplot
ggplot(df, aes(x = "", y = mpg)) +
  geom_boxplot() +
  labs(title = "Boxplot de mpg", x = "", y = "mpg")

# 8) Scatterplot
ggplot(df, aes(x = wt, y = mpg)) +
  geom_point() +
  labs(title = "Scatter: wt vs mpg", x = "wt", y = "mpg")

# 9) Transformación de eje (log10) cuando aplique
# Si se requiere transformar ejes de una forma estándar:
ggplot(df, aes(x = wt, y = mpg)) +
  geom_point() +
  scale_x_log10() +
  labs(title = "Scatter (x en log10): wt vs mpg", x = "wt (log10)", y = "mpg")

# 10) Matriz de dispersión (opcional, útil en multivariada)
# Requiere GGally (si se usa, instalar antes)
# library(GGally)
# GGally::ggpairs(df)

Referencias técnicas para el taller en R

  • geom_histogram() documenta histogramas en ggplot2. citeturn0search3
  • geom_boxplot() documenta qué resume el boxplot y cómo se muestran outliers. citeturn1search2
  • scale_*_log10() y scale_*_sqrt() se documentan como transformaciones comunes de escalas continuas. citeturn2search2
  • NA e is.na se definen en documentación base como indicadores y detectores de valores faltantes. citeturn3search10
  • drop_na elimina filas con faltantes; replace_na reemplaza faltantes por columna con lista nombrada. citeturn3search0turn1search0
  • GGally::ggpairs() se documenta como matriz de visualizaciones pareadas (equivalente avanzado de “pairs plot”). citeturn1search3
  • Un itinerario didáctico estándar para ggplot2 (scatter, distribuciones y relaciones) se presenta en R4DS. citeturn0search28

Prompts para generación de código y explicación de gráficos

Use estos prompts cuando el estudiante necesite ayuda técnica, cuidando que el ChatBot no “invente resultados” y solo produzca código ejecutable:

  • Prompt para generar código (Python)
    > Genera código en Python (pandas + seaborn + matplotlib) para:
    > (a) contar NA por columna, (b) hacer histograma con KDE, (c) boxplot, (d) scatter con etiqueta por categoría, (e) pairplot y (f) heatmap de correlación.
    > Usa un DataFrame llamado df y deja comentarios. No calcules resultados: solo el código.

  • Prompt para generar código (R)
    > Genera código en R (tidyverse + ggplot2) para:
    > (a) contar NA por columna, (b) histograma, (c) densidad, (d) boxplot, (e) scatter y (f) transformación log10 de eje x con scale_x_log10.
    > Usa un data.frame llamado df, deja comentarios y no inventes resultados.

  • Prompt para explicar “qué significa” un heatmap de correlación
    > Explícame este heatmap de correlación: cómo leerlo, qué significa un valor cercano a 1, 0 o -1, qué limitaciones tiene y por qué no implica causalidad.

Mini-entregable y criterios de evaluación

Entregable evaluable

Documento de máximo dos páginas (formato APA) titulado:

“EDA inicial y visualización comparativa en Python y R”

Debe incluir, como mínimo:

  • Descripción breve del dataset (origen, variables clave, tamaño).
  • Diagnóstico de NA y decisión mínima (qué se hizo y por qué). citeturn0search4turn2search0turn3search0turn1search0
  • Cuatro visualizaciones mínimas:
    • histograma con KDE o histograma + densidad, citeturn0search5turn0search1turn0search3turn0search18
    • boxplot, citeturn0search16turn1search2
    • scatterplot, citeturn3search2turn0search28
    • heatmap de correlación o matriz de dispersión. citeturn2search3turn0search22turn1search3
  • Una transformación aplicada o justificación de por qué no se aplicó. citeturn2search2
  • Evidencia de reproducibilidad: referencia al Notebook (Colab) y al script/RMarkdown (Posit Cloud), sin copiar todo el código en el documento (solo fragmentos esenciales). citeturn4search3

Criterios de evaluación breve

Criterio Evidencia mínima Escala sugerida
Corrección técnica de gráficas Gráficas coherentes con variables y escalas 1 a 5
Manejo de NA con justificación Conteo de NA + decisión (drop/replace/otra) 1 a 5
Interpretación EDA Explicación clara de al menos 3 hallazgos exploratorios 1 a 5
Reproducibilidad Código ejecutable y organizado + referencia a archivos 1 a 5
Uso responsable de IA Bitácora completa; comprensión demostrable 1 a 5

Recursos recomendados y visualizaciones de referencia

Para ver ejemplos “con forma final” de las gráficas (útiles para comparar con lo que producen en clase), se recomienda consultar:

  • Galería de ejemplos de seaborn (incluye pairplot, heatmap, distribuciones). citeturn0search13turn3search16turn2search32
  • Tutorial de distribuciones de seaborn (cuándo usar histogramas, KDE y funciones asociadas). citeturn0search9
  • Documentación de heatmap y ejemplo de heatmap anotado (estructura general y parámetros). citeturn2search3turn2search32
  • Tutorial de paletas para entender criterios de paletas secuenciales y su pertinencia para heatmaps. citeturn2search36
  • Matplotlib Gallery (ejemplos y código para figuras típicas). citeturn0search10turn4search11
  • Guía de visualización de pandas (gráficas rápidas desde DataFrame.plot, útil para exploración rápida). citeturn4search3turn4search20
  • R for Data Science – Visualización (ruta didáctica recomendada para ggplot2). citeturn0search28

Cierre cognitivo y bitácora IA

Plantilla de bitácora de IA

Guarde la bitácora en un archivo de texto/Markdown (o en el cuaderno), con una entrada por sesión:

Bitácora IA - Semana dos

Fecha:
Sesión (uno o dos):
ChatBot utilizado (recomendado: GPT Estadística Aplicada - Python y R / otro):
Objetivo de la consulta:
Prompt(s) literal(es) usado(s):
Resumen breve de la respuesta del ChatBot:
Qué validé ejecutando código (sí/no + evidencia):
Qué corregí o ajusté y por qué:
Qué entendí realmente (en mis palabras):
Qué NO debo repetir (errores/alertas):

Prompt Global para resumen manuscrito de una sola hoja

Al finalizar la segunda sesión, el estudiante debe usar el siguiente prompt global (copiar y pegar tal cual) y luego escribir a mano, en una sola hoja, un resumen del tema trabajado. fileciteturn0file0L40-L54

Actúa como un tutor experto en [NOMBRE DE LA ASIGNATURA] y aprendizaje profundo.
Con base en el tema que acabamos de estudiar, elabora un RESUMEN BREVE, claro y estructurado, que cumpla las siguientes condiciones:
1. Debe caber en UNA SOLA HOJA DE PAPEL escrita a mano.
2. Debe estar redactado en lenguaje claro, técnico pero comprensible.
3. Debe incluir:
- Idea central del tema
- Conceptos clave explicados con palabras sencillas
- Relaciones importantes entre conceptos
- Al menos un ejemplo aplicado a ingeniería
4. NO debe ser una copia literal de libros ni definiciones extensas.
5. Debe estar pensado para que un estudiante pueda escribirlo A MANO, seleccionando lo esencial y comprendiendo lo que escribe.
Al final, incluye una frase breve que ayude al estudiante a reflexionar sobre qué aprendió realmente con este tema. fileciteturn0file0L40-L54