Ejercicio 50: Creación de un Reporte Exploratorio con Python y Markdown
En este ejercicio, los estudiantes realizarán un análisis exploratorio de datos (EDA) utilizando un dataset abierto. El objetivo es documentar el dataset, realizar el análisis y exportar el reporte en formatos PDF y HTML. Este ejercicio está diseñado para estudiantes de nivel avanzado en ciencia de datos.
Objetivos
- Seleccionar y documentar un dataset abierto.
- Describir las variables y la estructura del dataset.
- Realizar un análisis exploratorio con al menos un cuadro y dos gráficos.
- Generar un reporte en Jupyter Notebook usando Markdown y Python.
- Exportar el reporte a formatos PDF y HTML.
Parte A: Selección y Documentación del Dataset
Cada estudiante deberá elegir un dataset abierto y documentarlo correctamente.
Tareas
Elegir un dataset disponible públicamente. Algunas fuentes recomendadas:
- Kaggle Datasets
- Data.gov
- UCI Machine Learning Repository
- World Bank Open Data
Documentar el dataset en una celda Markdown del notebook.
- Explicar el origen y contexto del dataset.
- Describir las columnas y su significado.
- Incluir cualquier información relevante sobre su calidad o limitaciones.
Ejemplo de Markdown para la documentación
### Documentación del Dataset
#### Descripción
Este dataset proviene de [fuente X] y contiene información sobre [tema].
Se utiliza para analizar [propósito].
#### Variables
| Variable | Descripción |
|----------|------------|
| `col1` | Describe... |
| `col2` | Representa... |
#### Consideraciones
- Hay valores faltantes en `colX`, que deben ser tratados.
- Algunas variables están en diferentes escalas y pueden requerir normalización.
Parte B: Análisis Exploratorio de Datos (EDA)
Se realizará un primer análisis para entender la distribución de los datos.
Tareas
- Cargar el dataset en un
DataFrame
de Pandas y mostrar información general. - Explorar los datos con
df.describe()
,df.info()
ydf.head()
. - Detectar valores faltantes y duplicados.
- Generar al menos:
- Un cuadro resumen (
df.describe()
,df.value_counts()
, etc.). - Dos gráficos (
sns.histplot()
,sns.boxplot()
,plt.scatter()
, etc.).
- Un cuadro resumen (
Ejemplo de código para el análisis
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Cargar dataset
df = pd.read_csv("ruta_al_dataset.csv")
# Información general
df.info()
# Resumen estadístico
df.describe()
# Detección de valores nulos
print(df.isnull().sum())
# Gráfico 1: Histograma
plt.figure(figsize=(6,4))
sns.histplot(df['columna_interes'], bins=30, kde=True)
plt.title("Distribución de la Variable X")
plt.xlabel("Valor")
plt.ylabel("Frecuencia")
plt.grid(True)
plt.show()
# Gráfico 2: Boxplot
plt.figure(figsize=(6,4))
sns.boxplot(x=df["columna_interes"])
plt.title("Boxplot de Variable X")
plt.grid(True)
plt.show()
Parte C: Exportación del Reporte a PDF y HTML
El notebook debe exportarse en dos formatos finales bien formateados.
Tareas
Ajustar el notebook para una exportación limpia.
- Asegurar que los gráficos y tablas se vean correctamente.
- Incluir títulos y descripciones claras en Markdown.
Exportar a PDF y HTML con
nbconvert
opandoc
.
Método 1: Usando nbconvert
(recomendado)
jupyter nbconvert --to pdf reporte.ipynb
jupyter nbconvert --to html reporte.ipynb
- Verificar que los formatos exportados se vean correctamente.
Entrega esperada
- Un notebook Jupyter (.ipynb) bien documentado con Markdown y Python.
- Un archivo PDF con el reporte formateado.
- Un archivo HTML con el reporte navegable.
- Un análisis exploratorio claro con al menos un cuadro y dos gráficos.
- Reflexión sobre la experiencia de generar reportes en diferentes formatos.