Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Tu Primera Tarea de Limpieza de Datos | Trabajando con Datos
Fundamentos de Databricks: Guía Para Principiantes

Desafío: Tu Primera Tarea de Limpieza de Datos

Desliza para mostrar el menú

Note
Definición

Una canalización de datos suele seguir un patrón: Cargar, Limpiar, Transformar y Guardar. En este mini-proyecto, aplicamos estos pasos a un conjunto de datos específico para pasar de datos en bruto a un resumen limpio y agregado listo para informes empresariales.

Para concluir la Sección 4, pongamos en práctica todo lo que has aprendido. Aunque puedes aplicar estos pasos a cualquier conjunto de datos que elijas, demostraremos la solución utilizando el popular conjunto de datos Diamonds. Este conjunto contiene los precios y atributos (corte, color, claridad, etc.) de casi 54,000 diamantes.

Puedes seguir el video y realizar la tarea por tu cuenta utilizando el mismo conjunto de datos (disponible ampliamente en Kaggle como diamonds.csv) o puedes seleccionar cualquier conjunto de datos de tu preferencia y aplicar el mismo principio estableciendo un objetivo similar.

Por favor, si es posible, pausa el video o la lectura del texto después de leer el objetivo. Intenta realizar el proyecto por tu cuenta, sin importar tu nivel de comodidad con tus conocimientos de Databricks. Incluso un intento sencillo será mucho más beneficioso que simplemente leer la solución. Si no dispones de tiempo, continúa leyendo la solución y prueba esto en casa más adelante como ejercicio de todas formas.

El objetivo

El objetivo es identificar el precio promedio y los quilates promedio para los diamantes de corte "Premium", agrupados por su color, y guardar solo los resultados de alto valor (donde el precio promedio sea superior a $4,000) en una nueva tabla.

Paso 1: Cargar e inspeccionar

Primero, cargar los datos y revisar el esquema para asegurar que los precios y los quilates sean reconocidos como valores numéricos.

# Assuming the diamonds CSV was uploaded to a Volume
df = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my_volume/diamonds.csv")

df.printSchema()

Paso 2: Filtrar y seleccionar

No se necesitan todas las columnas, y solo interesan los diamantes de tipo "Premium" para esta tarea específica:

# Filter for Premium cut and select relevant columns
premium_df = df.filter(df.cut == "Premium").select("color", "price", "carat")

Paso 3: Agregar y Agrupar

Ahora puedes calcular los promedios. Utiliza la biblioteca pyspark.sql.functions para asegurar que los cálculos sean precisos.

from pyspark.sql import functions as F

# Group by color and calculate averages
summary_df = premium_df.groupBy("color").agg(
    F.avg("price").alias("avg_price"),
    F.avg("carat").alias("avg_carat")
)
Note
Nota

.alias() simplemente renombra una columna en el resultado de la consulta, como un apodo temporal. No cambia la tabla real, solo cómo aparece la columna en la salida.

Piénsalo como AS en SQL — SELECT price AS price_in_usd.

Útil cuando los nombres de las columnas son largos, poco claros o cuando creas una columna calculada y necesitas darle un nombre legible.

Paso 4: Filtro final y ordenamiento

Solo se deben conservar las categorías de alto valor donde el precio promedio supera los 4,000. También se ordenarán los resultados para que el promedio más caro aparezca en la parte superior.

final_df = summary_df.filter(F.col("avg_price") > 4000).orderBy("avg_price", ascending=False)

display(final_df)

Es posible que aún no hayas encontrado la función F.col().

F.col() es la forma de referenciar una columna por nombre en PySpark. La F es simplemente el alias para pyspark.sql.functions, importado al inicio del notebook de la siguiente manera:

from pyspark.sql import functions as F

df.select(F.col("price"))

En muchos casos, es equivalente a escribir el nombre de la columna como una cadena, pero se prefiere F.col() porque permite encadenar operaciones directamente sobre ella:

F.col("price") * 1.1
F.col("cut").alias("diamond_cut")

Se puede pensar en F.col("price") como "dame la columna price como un objeto con el que realmente puedo trabajar."

Paso 5: Guardar el resultado

Finalmente, guardar este informe limpio de "High-Value Premium Diamonds" en nuestro Catálogo para que el equipo de análisis pueda utilizarlo.

final_df.write.mode("overwrite").saveAsTable("main.default.high_value_premium_diamonds")

1. En el Paso 3, ¿por qué se utilizó el método .alias() dentro de la agregación?

2. Si deseas aplicar este proyecto a tu propio conjunto de datos, ¿qué parte del código debes cambiar primero?

question mark

En el Paso 3, ¿por qué se utilizó el método .alias() dentro de la agregación?

Selecciona la respuesta correcta

question mark

Si deseas aplicar este proyecto a tu propio conjunto de datos, ¿qué parte del código debes cambiar primero?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 9

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 4. Capítulo 9
some-alt