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

  1. Elegir un dataset disponible públicamente. Algunas fuentes recomendadas:

    • Kaggle Datasets
    • Data.gov
    • UCI Machine Learning Repository
    • World Bank Open Data
  2. 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

  1. Cargar el dataset en un DataFrame de Pandas y mostrar información general.
  2. Explorar los datos con df.describe(), df.info() y df.head().
  3. Detectar valores faltantes y duplicados.
  4. Generar al menos:
    • Un cuadro resumen (df.describe(), df.value_counts(), etc.).
    • Dos gráficos (sns.histplot(), sns.boxplot(), plt.scatter(), etc.).

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

  1. 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.
  2. Exportar a PDF y HTML con nbconvert o pandoc.

Método 1: Usando nbconvert (recomendado)

jupyter nbconvert --to pdf reporte.ipynb
jupyter nbconvert --to html reporte.ipynb
  1. 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.