Semana 10: Entregable Final — Informe de EDA de Students Performance
🎯 Objetivos de aprendizaje
Al final de esta semana podrás:
- Planificar y ejecutar de forma independiente un proyecto de EDA completo sobre un dataset nuevo, desde formular preguntas hasta los gráficos finales.
- Producir un informe escrito corto que combine hallazgos, evidencia (gráficos/estadísticas) e interpretación apropiadamente cautelosa.
- Identificar las limitaciones del mundo real de este dataset y qué conclusiones no puede respaldar.
- Ensamblar una estructura de informe completa a partir de las técnicas individuales de las Semanas 6 a 9.
Lección
El dataset: Students Performance in Exams
students-performance.csv (créditos aquí) es uno de los datasets de EDA para principiantes más usados de Kaggle, con 8 columnas: gender, race_ethnicity, parental_level_of_education, lunch, test_preparation_course, y tres columnas de resultado numéricas — math_score, reading_score, writing_score.
El entregable requerido
Produce un informe corto de EDA (un notebook con celdas de markdown explicando cada paso, o un resumen escrito junto a tu código) que incluya, como mínimo:
- Perfil del dataset (Semana 6): forma, dtypes, datos faltantes, distribuciones básicas de cada columna.
- Al menos 3 preguntas formuladas, escritas antes de analizarlas, cubriendo tanto:
- una pregunta univariada (Semana 7) — p. ej. "¿cómo se ve la distribución de math_score?"
- una pregunta bivariada o multivariada (Semana 8/9) — p. ej. "¿se asocia test_preparation_course con las calificaciones, y eso se mantiene entre géneros?"
- Un análisis de correlación (Semana 8) de las tres columnas de calificación, con un mapa de calor.
- Al menos un gráfico narrativo facetado o anotado (Semana 9).
- Una conclusión escrita corta para cada pregunta: qué encontraste, cuánta confianza tienes (referenciando el tamaño de muestra por grupo, según la Semana 6), y una explicación alternativa plausible que no puedes descartar (según la discusión de correlación-no-es-causalidad de la Semana 8).
El kit de herramientas completo, de un vistazo
Cada técnica de esta sección se corresponde con una parte del informe:
| Sección del informe | Técnicas (de) |
|---|---|
| Perfil del dataset | .shape, .dtypes, .isna().sum(), .value_counts(), comprobación de sesgo media-mediana (Semana 6) |
| Pregunta univariada | Histograma, diagrama de caja, gráfico de barras, sensibilidad al número de bins (Semana 7) |
| Pregunta bivariada/multivariada | .corr(), mapa de calor, diagrama de dispersión con hue, diagrama de caja agrupado, pd.crosstab (Semana 8) |
| Gráfico narrativo | Facetado (col=/row=), orden deliberado, paleta apta para daltónicos, anotación (Semana 9) |
| Conclusión | Hallazgo + confianza (tamaño de muestra) + explicación alternativa, por pregunta |
Trata esta tabla como el esquema de tu informe antes de escribir una sola celda — la misma disciplina de "formular la estructura antes de sumergirse" que la Semana 6 introdujo para preguntas individuales, ahora aplicada a todo el entregable.
Un ejemplo resuelto inicial
Aquí hay un mini-ejemplo completo del patrón que debería seguir cada una de tus preguntas — perfilar → visualizar → interpretar con precaución apropiada:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("students-performance.csv")
# Question: does completing test preparation associate with a higher average score
# across all three subjects?
df["average_score"] = df[["math_score", "reading_score", "writing_score"]].mean(axis=1)
summary = df.groupby("test_preparation_course")["average_score"].agg(["mean", "count"])
print(summary)
sns.boxplot(data=df, x="test_preparation_course", y="average_score")
plt.title("Average score by test preparation status")
plt.show()
Hallazgo: Los estudiantes que completaron la preparación del examen tuvieron una calificación promedio más alta que los que no, basándose en una muestra de tamaño razonable en ambos grupos (ver
count). Advertencia: Esto es una asociación, no una prueba de que la preparación del examen causó la diferencia — los estudiantes suficientemente motivados como para completar una preparación opcional del examen podrían diferir de los que no lo hicieron en otros aspectos (p. ej. hábitos generales de estudio, apoyo familiar) que afectan las calificaciones de forma independiente.
.mean(axis=1) calcula una media por fila a través de las tres columnas de calificación (axis=1 significa "a través de las columnas, para cada fila" — a diferencia del axis=0 por defecto, "a lo largo de cada columna"), produciendo un average_score combinado por estudiante.
Un segundo ejemplo resuelto: un gráfico narrativo multivariado
Combinando el trabajo de correlación de la Semana 8 con el facetado de la Semana 9 en una sola figura lista para el informe:
sns.relplot(
data=df, x="reading_score", y="writing_score",
col="test_preparation_course", hue="lunch", palette="colorblind",
)
plt.show()
Hallazgo: La fuerte relación positiva entre las calificaciones de lectura y escritura se mantiene en ambos paneles de preparación del examen, sugiriendo que no es específica de ninguno de los dos grupos — probablemente reflejando un factor subyacente compartido (habilidad verbal/alfabetización general) en lugar de que la calificación de una materia influya directamente en la otra. Advertencia: Facetar por dos variables categóricas (
colyhue) a la vez empieza a forzar cuánto puede asimilar un lector de una sola figura — vale la pena una frase reconociendo eso, y considerar si esto sería más claro dividido en dos figuras más simples para un informe real.
Cerrando: lo que este dataset no puede decirte
Antes de finalizar tu informe, anota explícitamente qué conclusiones este dataset no respalda: es una única instantánea (no un estudio a lo largo del tiempo), la población exacta y la metodología de recolección no se especifican en la versión del dataset usada aquí, y —como se enfatizó a lo largo de las Semanas 8-9— ninguna de estas asociaciones establece causalidad. Un informe de EDA riguroso es honesto sobre estos límites, no solo sobre lo que encontró.
⚠️ Errores comunes
- Saltarse el paso de perfilado porque el dataset "se ve limpio". Siempre ejecuta primero los pasos de perfilado de la Semana 6, incluso en un dataset que parece ordenado — confirmar que no falta nada ni está mal codificado es parte del entregable, no una formalidad opcional.
- Escribir conclusiones antes de comprobar los tamaños de muestra. Una diferencia que se ve dramática en un subgrupo pequeño (p. ej. una categoría de
race_ethnicitycon pocos estudiantes) merece una advertencia sobre el tamaño de muestra, la misma disciplina de la Semana 6. - Tratar "correlación no es causalidad" como una nota al pie en lugar de algo central. Cada hallazgo en el entregable requerido necesita su propia advertencia honesta, no un único descargo genérico al final que lo cubra todo.
- Quedarse sin tiempo para el pulido antes de terminar el contenido requerido. Las 5 piezas del entregable (perfil, 3 preguntas, análisis de correlación, gráfico narrativo, conclusiones) importan más que hacer perfecto un solo gráfico — consigue primero un borrador completo, y luego mejóralo.
🧩 Retos
Responde esta pregunta para tu informe: ¿se asocia parental_level_of_education con average_score? Sigue el patrón completo — tabla resumen, gráfico, hallazgo y advertencia.
Extiende la pregunta de preparación del examen del ejemplo resuelto para comprobar si el efecto se ve igual entre gender — ¿parece la preparación del examen asociarse con una mayor ganancia de calificación para un género que para el otro?
Produce el mapa de calor de correlación requerido para las tres columnas de calificación, y escribe una frase interpretando la correlación por pares más fuerte, siendo explícito sobre qué implica y qué no.
Escribe un párrafo para la conclusión de tu informe, listando al menos una limitación específica de este dataset que debería hacer que un lector sea cauteloso al generalizar tus hallazgos más allá de él.
Completa la sección requerida de "perfil del dataset" para tu informe: usa la comprobación de sesgo media-vs-mediana y el conteo de valores atípicos por IQR de la Semana 6 sobre la columna average_score, y confirma lo que encuentres con un histograma de la Semana 7.
Ensambla todo lo de los retos de esta semana en una sola narrativa escrita continua (no solo una lista de celdas de código separadas) que un lector pueda seguir de principio a fin sin necesitar ver tu código.
🤔 Preguntas socráticas
- A lo largo de todo tu informe, ¿en qué hallazgo te sientes más seguro, y en cuál te sientes menos seguro? ¿Qué específicamente (tamaño de muestra, tamaño del efecto, plausibilidad de una variable de confusión) impulsa esa diferencia de confianza?
- Si tuvieras que elegir solo un gráfico de todo tu informe para mostrarle a alguien con 10 segundos de atención, ¿cuál sería, y por qué? ¿Qué te dice esa elección sobre cuál hallazgo es realmente el más importante?
- Ahora has completado un ciclo completo de EDA —pregunta, evidencia, interpretación honesta— sobre un dataset con forma real. ¿En qué material de qué semana específica (de la 6 a la 9) te apoyaste más personalmente al hacerlo? ¿Coincide eso con lo que esperabas al empezar?
- La advertencia del segundo ejemplo resuelto admite que facetar por dos variables a la vez podría ya ser "demasiado" para una figura. Mirando hacia atrás en tu propio informe, ¿hay algún gráfico que hiciste que ahora considerarías simplificar, habiendo pasado por todo este proceso?
- Ahora que has construido un informe de EDA completo desde cero, ¿cómo explicarías la diferencia entre "análisis exploratorio de datos" y "solo hacer algunos gráficos" a alguien que no ha tomado este curso — con tus propias palabras, no las de la lección?
✅ Cuestionario semanal
✅ Cuestionario semanal
🎉 Completaste el track Difícil de Pandas y Análisis de Datos — y todo el curso, si tomaste Difícil/Difícil o cualquier combinación entre ambas secciones. Ve a Mi Progreso para ver tus insignias y, si terminaste cada semana, desbloquea el proyectos Capstone: instalar Python de verdad y construir tu primer agente de IA.