Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Sua Primeira Tarefa de Limpeza de Dados | Trabalhando com Dados
Fundamentos do Databricks: Um Guia para Iniciantes

Desafio: Sua Primeira Tarefa de Limpeza de Dados

Deslize para mostrar o menu

Note
Definição

Um pipeline de dados normalmente segue um padrão: Carregar, Limpar, Transformar e Salvar. Neste mini-projeto, aplicamos essas etapas a um conjunto de dados específico para passar de dados brutos a um resumo limpo e agregado, pronto para relatórios de negócios.

Para concluir a Seção 4, vamos colocar em prática tudo o que você aprendeu. Embora seja possível aplicar essas etapas a qualquer conjunto de dados de sua escolha, demonstraremos a solução utilizando o popular conjunto de dados Diamonds. Esse conjunto contém os preços e atributos (corte, cor, clareza, etc.) de quase 54.000 diamantes.

Você pode acompanhar o vídeo e realizar a tarefa por conta própria utilizando o mesmo conjunto de dados (amplamente disponível no Kaggle como diamonds.csv) ou pode selecionar qualquer conjunto de dados de sua preferência e aplicar o mesmo princípio, definindo um objetivo semelhante.

Por favor, se possível, pause o vídeo/leitura do texto após ler o objetivo. Tente realizar o projeto por conta própria, independentemente do seu nível de familiaridade com o Databricks. Mesmo uma tentativa simples será muito mais proveitosa do que apenas ler a solução. Caso não tenha tempo, continue lendo a solução e tente realizar este exercício em outro momento.

O Objetivo

Identificar o preço médio e os quilates médios para diamantes com corte "Premium", agrupados por cor, e salvar apenas os resultados de alto valor (onde o preço médio é superior a $4.000) em uma nova tabela.

Etapa 1: Carregar e Inspecionar

Primeiro, carregar os dados e verificar o schema para garantir que os campos de preço e quilates sejam reconhecidos 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()

Etapa 2: Filtrar e Selecionar

Nem todas as colunas são necessárias, e o foco está apenas nos diamantes "Premium" para esta tarefa específica:

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

Etapa 3: Agregação e Agrupamento

Agora é possível calcular as médias. Utilize a biblioteca pyspark.sql.functions para garantir precisão nos cálculos.

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() apenas renomeia uma coluna no resultado da consulta — como um apelido temporário. Não altera a tabela real, apenas como a coluna aparece na saída.

Pense nisso como AS em SQL — SELECT price AS price_in_usd.

Útil quando os nomes das colunas são longos, pouco claros ou quando se cria uma coluna calculada e é necessário atribuir um nome legível.

Etapa 4: Filtro Final e Ordenação

Manter apenas as categorias de alto valor onde o preço médio excede 4.000. Os resultados serão ordenados para que o maior preço médio fique no topo.

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

display(final_df)

Talvez você ainda não tenha encontrado a função F.col().

F.col() é a forma de referenciar uma coluna pelo nome no PySpark. O F é apenas o alias para pyspark.sql.functions — importado no início do notebook assim:

from pyspark.sql import functions as F

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

Em muitos casos, é equivalente a digitar apenas o nome da coluna como uma string, mas F.col() é preferido porque permite encadear operações diretamente:

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

Considere F.col("price") como "me dê a coluna price como um objeto com o qual posso realmente trabalhar."

Etapa 5: Salvar o Resultado

Por fim, registre este relatório limpo de "High-Value Premium Diamonds" em nosso Catálogo para que a equipe de análise possa utilizá-lo.

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

1. Na Etapa 3, por que você utilizou o método .alias() dentro da agregação?

2. Se você quiser aplicar este projeto ao seu próprio conjunto de dados, qual parte do código deve ser alterada primeiro?

question mark

Na Etapa 3, por que você utilizou o método .alias() dentro da agregação?

Selecione a resposta correta

question mark

Se você quiser aplicar este projeto ao seu próprio conjunto de dados, qual parte do código deve ser alterada primeiro?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 9

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 4. Capítulo 9
some-alt