Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Din Første Datarensningsopgave | Arbejde med Data
Databricks Grundlæggende: En Begyndervejledning

Udfordring: Din Første Datarensningsopgave

Stryg for at vise menuen

Note
Definition

Et datapipeline følger typisk et mønster: Indlæs, Rens, Transformér og Gem. I dette mini-projekt anvender vi disse trin på et specifikt datasæt for at gå fra rå data til et rent, aggregeret sammendrag klar til forretningsrapportering.

For at afslutte afsnit 4, lad os omsætte alt det, du har lært, til praksis. Selvom du kan anvende disse trin på et hvilket som helst datasæt, vil vi demonstrere løsningen ved hjælp af det populære Diamonds-datasæt. Dette datasæt indeholder priser og attributter (cut, color, clarity osv.) for næsten 54.000 diamanter.

Du kan følge med i videoen og udføre opgaven selv ved at bruge det samme datasæt (bredt tilgængeligt fra Kaggle som diamonds.csv), eller du kan vælge et hvilket som helst datasæt og anvende samme princip ved at sætte et lignende mål.

Pause gerne videoen eller læsningen af teksten, når du har læst målet. Prøv projektet selv, uanset hvor tryg du føler dig med din viden om Databricks. Selv et simpelt forsøg vil være langt mere givende end blot at læse løsningen igennem. Hvis du mangler tid, så fortsæt med at læse løsningen og prøv dette derhjemme som en øvelse på et senere tidspunkt alligevel.

Målet

Målet er at identificere gennemsnitsprisen og gennemsnitlige carat for "Premium"-slibede diamanter, grupperet efter deres farve, og kun gemme de resultater med høj værdi (hvor gennemsnitsprisen er over $4.000) i en ny tabel.

Trin 1: Indlæs og inspicér

Først indlæses dataene, og skemaet kontrolleres for at sikre, at priser og carat genkendes som numeriske værdier.

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

Trin 2: Filtrer og vælg

Ikke alle kolonner er nødvendige, og kun "Premium" diamanter er relevante for denne specifikke opgave:

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

Trin 3: Aggregér og grupper

Nu kan du beregne gennemsnittene. Brug biblioteket pyspark.sql.functions for at sikre, at vores beregninger er korrekte.

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
Bemærk

.alias() omdøber blot en kolonne i dit forespørgselsresultat — som et midlertidigt kaldenavn. Det ændrer ikke selve tabellen, kun hvordan kolonnen vises i outputtet.

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

Nyttigt når kolonnenavne er lange, uklare, eller når du opretter en beregnet kolonne og har brug for at give den et læsbart navn.

Trin 4: Endelig filtrering og sortering

Vi ønsker kun at beholde de højværdikategorier, hvor gennemsnitsprisen overstiger 4.000. Resultaterne sorteres, så den dyreste gennemsnitspris vises øverst.

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

display(final_df)

Du er måske endnu ikke stødt på funktionen F.col().

F.col() bruges til at referere til en kolonne ved navn i PySpark. F er blot et alias for pyspark.sql.functions — importeret øverst i din notebook således:

from pyspark.sql import functions as F

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

Det svarer i mange tilfælde til blot at skrive kolonnenavnet som en streng, men F.col() foretrækkes, fordi det gør det muligt at kæde operationer direkte på kolonnen:

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

Tænk på F.col("price") som at sige "giv mig price-kolonnen som et objekt, jeg faktisk kan arbejde videre med."

Trin 5: Gem resultatet

Til sidst skal denne rensede "High-Value Premium Diamonds"-rapport gemmes i vores katalog, så analyseteamet kan bruge den.

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

1. Hvorfor brugte du .alias()-metoden i trin 3 under aggregeringen?

2. Hvis du vil anvende dette projekt på dit eget datasæt, hvilken del af koden skal du ændre først?

question mark

Hvorfor brugte du .alias()-metoden i trin 3 under aggregeringen?

Vælg det korrekte svar

question mark

Hvis du vil anvende dette projekt på dit eget datasæt, hvilken del af koden skal du ændre først?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 9

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 4. Kapitel 9
some-alt