Ejercicio 13: Agrupación y Transformaciones en Pandas con el Dataset Diamonds

Este ejercicio está diseñado para que los estudiantes practiquen operaciones avanzadas de Pandas, incluyendo el uso de funciones como groupby, aggregation, transformation, apply, filtrado flexible y mapping. Se trabajará con el dataset diamonds de Seaborn, explorando diferentes técnicas de manipulación y análisis de datos en una sola línea de código.

Objetivos

  • Practicar operaciones avanzadas de Pandas.
  • Aplicar técnicas de agrupación, transformación y cálculo personalizado.
  • Utilizar funciones avanzadas de Pandas en una sola línea de código.

Entrada de Datos

  • carat: Peso del diamante
  • cut: Calidad del corte (Fair, Good, Very Good, Premium, Ideal)
  • color: Clasificación del color (D a J, donde D es el mejor)
  • clarity: Nivel de claridad (IF, VVS1, VVS2, VS1, VS2, SI1, SI2, I1)
  • depth: Profundidad porcentual
  • table: Ancho de la parte superior del diamante
  • price: Precio en dólares
  • x, y, z: Dimensiones del diamante

Parte A: Carga y Exploración del Dataset

Tareas

  1. Cargar el dataset desde seaborn y visualizar sus primeras filas.
  2. Obtener un resumen estadístico con .describe().
  3. Verificar valores nulos y contar datos por categoría (cut, color, clarity).

Código Base

import seaborn as sns
import pandas as pd

# Cargar el dataset
diamonds = sns.load_dataset('diamonds')

# TODO: Implementar

Parte B: Agrupaciones y Cálculos Avanzados con One-Liners

Tareas

  1. Calcular la media de price agrupada por cut usando groupby y mean().
  2. Obtener el precio máximo de cada combinación de cut y color.
  3. Contar cuántos diamantes hay en cada grupo de clarity.
  4. Calcular la proporción de cada cut sobre el total de diamantes con .transform().
  5. Obtener el precio promedio por cut, pero solo si el grupo tiene más de 5000 observaciones.
  6. Aplicar una transformación para escalar los valores de price dentro de cada color usando lambda.
  7. Agregar múltiples estadísticas (min, max, mean) de price agrupadas por color.
  8. Filtrar solo los grupos donde la media de carat es mayor a 1.
  9. Crear una nueva columna price_per_carat y agrupar su media por cut.
  10. Aplicar map() para convertir cut en un puntaje numérico (Fair = 1, Good = 2, etc.).

Código Base

# TODO: Implementar

Parte C: Análisis de Transformaciones y Aplicaciones Flexibles

Tareas

  1. Aplicar una función personalizada con apply() para calcular una métrica no estándar por cut.
  2. Usar filter() para dejar solo los grupos de color con precio promedio mayor a $4000.
  3. Aplicar una transformación con applymap() para redondear todos los valores numéricos a 2 decimales.
  4. Usar map() para crear una nueva columna indicando si el carat es alto (>=1) o bajo (<1).
  5. Generar una tabla pivote con pivot_table() para comparar price por cut y clarity.

Código Base

# TODO: Implementar

Parte D: Visualización de Resultados

Tareas

  1. Crear un barplot con seaborn para mostrar el precio promedio por cut.
  2. Hacer un boxplot del precio según clarity para detectar outliers.
  3. Graficar la relación entre carat y price con un scatterplot.
  4. Generar un gráfico de calor (heatmap) de la matriz de correlación entre variables numéricas.

Código Base

import matplotlib.pyplot as plt

# TODO: Implementar

Entrega Esperada

  • Código limpio y estructurado resolviendo cada consigna en una sola línea de código.
  • Tablas con estadísticas calculadas correctamente.
  • Visualizaciones con seaborn para analizar los datos gráficamente.
  • Reflexiones sobre el uso de técnicas avanzadas de Pandas en análisis de datos.