Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Din Första Datarensningsuppgift | Arbeta med data
Databricks-Grunder: En Nybörjarguide

Utmaning: Din Första Datarensningsuppgift

Svep för att visa menyn

Note
Definition

Ett datapipeline följer vanligtvis ett mönster: Ladda, Rensa, Transformera och Spara. I detta miniprojekt tillämpar vi dessa steg på en specifik datamängd för att gå från rådata till en ren, aggregerad sammanfattning redo för affärsrapportering.

För att avsluta avsnitt 4, låt oss omsätta allt du har lärt dig i praktiken. Du kan tillämpa dessa steg på valfri datamängd, men vi kommer att demonstrera lösningen med den populära Diamonds-datamängden. Denna datamängd innehåller priser och attribut (slipning, färg, klarhet, etc.) för nästan 54 000 diamanter.

Du kan följa med i videon och utföra uppgiften själv med samma datamängd (allmänt tillgänglig från Kaggle som diamonds.csv) eller välja en egen datamängd och tillämpa samma princip genom att sätta ett liknande mål.

Pausa gärna videon eller sluta läsa texten efter att du har läst målet. Försök att genomföra projektet på egen hand, oavsett hur bekväm du känner dig med dina kunskaper i Databricks. Även ett enkelt försök kommer att vara mycket mer givande än att bara läsa igenom lösningen. Om du har ont om tid, fortsätt gärna läsa lösningen och prova detta hemma vid ett senare tillfälle som en övning ändå.

Målet

Målet är att identifiera genomsnittligt pris och genomsnittliga carat för "Premium"-slipade diamanter, grupperade efter deras färg, och spara endast de högvärdiga resultaten (där genomsnittspriset överstiger $4,000) till en ny tabell.

Steg 1: Ladda och inspektera

Börja med att ladda in datan och kontrollera vårt schema för att säkerställa att priser och carat är igenkända som numeriska värden.

# 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()

Steg 2: Filtrera och välj

Du behöver inte alla kolumner, och du är endast intresserad av "Premium"-diamanter för denna specifika uppgift:

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

Steg 3: Aggregation och gruppering

Nu kan du beräkna medelvärdena. Använd biblioteket pyspark.sql.functions för att säkerställa att våra beräkningar är korrekta.

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
Notering

.alias() byter helt enkelt namn på en kolumn i din frågeresultat — som ett tillfälligt smeknamn. Det ändrar inte den faktiska tabellen, bara hur kolumnen visas i utdata.

Tänk på det som AS i SQL — SELECT price AS price_in_usd.

Användbart när kolumnnamn är långa, otydliga eller när du skapar en beräknad kolumn och behöver ge den ett läsbart namn.

Steg 4: Slutlig filtrering och sortering

Vi vill endast behålla de högvärdeskategorier där medelpriset överstiger 4 000. Vi kommer också att sortera resultaten så att det högsta medelpriset visas överst.

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

display(final_df)

Du kanske inte har stött på funktionen F.col() ännu.

F.col() används för att referera till en kolumn med dess namn i PySpark. F är bara ett alias för pyspark.sql.functions — importerat högst upp i din notebook så här:

from pyspark.sql import functions as F

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

Det motsvarar ofta att bara skriva kolumnnamnet som en sträng, men F.col() föredras eftersom det gör det möjligt att kedja operationer direkt på kolumnen:

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

Tänk på F.col("price") som att säga "ge mig kolumnen price som ett objekt jag faktiskt kan arbeta med."

Steg 5: Spara resultatet

Slutligen, spara denna rensade rapport "High-Value Premium Diamonds" i vår katalog så att analysteamet kan använda den.

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

1. I steg 3, varför använde du metoden .alias() inom aggregeringen?

2. Om du vill använda detta projekt på din egen datamängd, vilken del av koden måste du ändra först?

question mark

I steg 3, varför använde du metoden .alias() inom aggregeringen?

Vänligen välj det korrekta svaret

question mark

Om du vill använda detta projekt på din egen datamängd, vilken del av koden måste du ändra först?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 9

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 4. Kapitel 9
some-alt