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. fileciteturn0file0L21-L32
Al finalizar la semana, el estudiante debe poder:
histplot/geom_histogram,
kdeplot/geom_density,
boxplot/geom_boxplot).
citeturn0search5turn0search1turn0search3turn1search2isna, dropna, fillna,
interpolate en pandas; is.na,
drop_na, replace_na en tidyverse) sin perder
trazabilidad de decisiones.
citeturn0search29turn0search4turn2search0turn2search1turn3search0turn1search0turn3search10La 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. fileciteturn0file0L21-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). fileciteturn0file0L55-L59
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.
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.
citeturn2search35turn3search5
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. citeturn0search5
- La densidad (KDE) estima una curva continua análoga al histograma;
seaborn documenta kdeplot como visualización de estimación
de densidad. citeturn0search1turn0search9
- En R, geom_histogram() y geom_density() son
equivalentes base de la gramática de gráficos.
citeturn0search3turn0search18
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). citeturn0search16
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.
citeturn3search2
Valores faltantes (NA) y decisiones mínimas.
- R define NA como indicador de valor faltante;
is.na identifica faltantes. citeturn3search10
- pandas documenta qué se considera “missing” y cómo trabajar con ello;
funciones clave incluyen isna, dropna,
fillna e interpolación.
citeturn0search0turn0search29turn0search4turn2search0turn2search1
- 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. citeturn3search0turn1search0
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.
citeturn2search2
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.
Con un dataset pequeño (real o simulado), el estudiante debe:
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}
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.
Elija uno, priorizando pertinencia de ingeniería. La guía funciona con cualquier dataset en CSV:
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.
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() citeturn0search29 |
colSums(is.na(df)) citeturn3search10 |
| Eliminar filas con NA | df.dropna() citeturn0search4 |
df %>% tidyr::drop_na() citeturn3search0 |
| Reemplazar NA | df.fillna(...) citeturn2search0 |
df %>% tidyr::replace_na(list(...))
citeturn1search0 |
| Histograma | sns.histplot(...) citeturn0search5 |
ggplot(df, aes(x)) + geom_histogram()
citeturn0search3 |
| Densidad | sns.kdeplot(...) citeturn0search1 |
ggplot(df, aes(x)) + geom_density()
citeturn0search18 |
| Boxplot | sns.boxplot(...) citeturn0search16 |
geom_boxplot() citeturn1search2 |
| Scatter | sns.scatterplot(...) citeturn3search2 |
geom_point() (en ggplot2) citeturn0search28 |
| Pairplot / matriz dispersión | sns.pairplot(...)
citeturn0search22turn3search16 |
GGally::ggpairs(df) citeturn1search3 |
| Correlación numérica | df.corr() citeturn3search1 |
cor(df_num, use="pairwise.complete.obs") (estándar
base) |
| Heatmap correlación | sns.heatmap(df.corr())
citeturn2search3turn3search1 |
ggplot + geom_tile o paquetes
especializados (opcional) |
La guía usa seaborn (basado en matplotlib) y se apoya en estructuras de pandas. citeturn2search35turn3search5
# ============================================
# 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()
histplot describe histogramas y permite normalización y
adición de curva suave KDE. citeturn0search5kdeplot y el tutorial de distribuciones explican KDE
como curva de densidad. citeturn0search1turn0search9boxplot describe boxplot y tratamiento de outliers
según IQR. citeturn0search16pairplot documenta la matriz de relaciones y el
comportamiento de la diagonal. citeturn0search22turn3search16heatmap documenta representación matricial con
codificación por color. citeturn2search3DataFrame.corr especifica que la correlación se calcula
excluyendo NA/null. citeturn3search1set_theme cambia defaults globales mediante
rcParams. citeturn4search2turn4search9isna, dropna, fillna,
interpolate son métodos estándar documentados para NA en
pandas. citeturn0search29turn0search4turn2search0turn2search1En 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. citeturn0search28
# ============================================
# 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)
geom_histogram() documenta histogramas en ggplot2.
citeturn0search3geom_boxplot() documenta qué resume el boxplot y cómo
se muestran outliers. citeturn1search2scale_*_log10() y scale_*_sqrt() se
documentan como transformaciones comunes de escalas continuas.
citeturn2search2NA e is.na se definen en documentación
base como indicadores y detectores de valores faltantes.
citeturn3search10drop_na elimina filas con faltantes;
replace_na reemplaza faltantes por columna con lista
nombrada. citeturn3search0turn1search0GGally::ggpairs() se documenta como matriz de
visualizaciones pareadas (equivalente avanzado de “pairs plot”).
citeturn1search3Use 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.
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:
| 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 |
Para ver ejemplos “con forma final” de las gráficas (útiles para comparar con lo que producen en clase), se recomienda consultar:
pairplot, heatmap, distribuciones).
citeturn0search13turn3search16turn2search32heatmap y ejemplo de heatmap
anotado (estructura general y parámetros).
citeturn2search3turn2search32DataFrame.plot, útil para exploración rápida).
citeturn4search3turn4search20Guarde 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):
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. fileciteturn0file0L40-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. fileciteturn0file0L40-L54