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 diamantecut
: Calidad del corte (Fair
,Good
,Very Good
,Premium
,Ideal
)color
: Clasificación del color (D
aJ
, dondeD
es el mejor)clarity
: Nivel de claridad (IF
,VVS1
,VVS2
,VS1
,VS2
,SI1
,SI2
,I1
)depth
: Profundidad porcentualtable
: Ancho de la parte superior del diamanteprice
: Precio en dólaresx, y, z
: Dimensiones del diamante
Parte A: Carga y Exploración del Dataset
Tareas
- Cargar el dataset desde
seaborn
y visualizar sus primeras filas. - Obtener un resumen estadístico con
.describe()
. - 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
- Calcular la media de
price
agrupada porcut
usandogroupby
ymean()
. - Obtener el precio máximo de cada combinación de
cut
ycolor
. - Contar cuántos diamantes hay en cada grupo de
clarity
. - Calcular la proporción de cada
cut
sobre el total de diamantes con.transform()
. - Obtener el precio promedio por
cut
, pero solo si el grupo tiene más de 5000 observaciones. - Aplicar una transformación para escalar los valores de
price
dentro de cadacolor
usandolambda
. - Agregar múltiples estadísticas (
min
,max
,mean
) deprice
agrupadas porcolor
. - Filtrar solo los grupos donde la media de
carat
es mayor a 1. - Crear una nueva columna
price_per_carat
y agrupar su media porcut
. - Aplicar
map()
para convertircut
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
- Aplicar una función personalizada con
apply()
para calcular una métrica no estándar porcut
. - Usar
filter()
para dejar solo los grupos decolor
con precio promedio mayor a $4000. - Aplicar una transformación con
applymap()
para redondear todos los valores numéricos a 2 decimales. - Usar
map()
para crear una nueva columna indicando si elcarat
es alto (>=1
) o bajo (<1
). - Generar una tabla pivote con
pivot_table()
para compararprice
porcut
yclarity
.
Código Base
# TODO: Implementar
Parte D: Visualización de Resultados
Tareas
- Crear un
barplot
conseaborn
para mostrar el precio promedio porcut
. - Hacer un
boxplot
del precio segúnclarity
para detectar outliers. - Graficar la relación entre
carat
yprice
con unscatterplot
. - 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.