Utfordring: Din Første Oppgave med Datarensing
Sveip for å vise menyen
En datapipeline følger vanligvis et mønster: Last inn, Rens, Transformer og Lagre. I dette mini-prosjektet anvender vi disse stegene på et spesifikt datasett for å gå fra rådata til et rent, aggregert sammendrag klart for forretningsrapportering.
For å avslutte seksjon 4, la oss sette alt du har lært ut i praksis. Selv om du kan bruke disse stegene på hvilket som helst datasett du ønsker, vil vi demonstrere løsningen ved å bruke det populære Diamonds-datasettet. Dette datasettet inneholder priser og attributter (cut, color, clarity, osv.) for nesten 54 000 diamanter.
Du kan følge videoen og gjøre oppgaven selv ved å bruke det samme datasettet (bredt tilgjengelig fra Kaggle som diamonds.csv), eller du kan velge et annet datasett og bruke samme prinsipp ved å sette et lignende mål.
Vennligst, om mulig, sett videoen på pause eller stopp lesingen etter å ha lest målet. Prøv prosjektet på egen hånd, uansett hvor komfortabel du føler deg med kunnskapen din om Databricks. Selv et enkelt forsøk vil være langt mer nyttig enn bare å lese gjennom løsningen. Hvis du mangler tid, kan du fortsette å lese løsningen og prøve dette hjemme som en øvelse senere uansett.
Målet
Målet er å identifisere gjennomsnittspris og gjennomsnittlig karat for diamanter med "Premium" slip, gruppert etter farge, og lagre kun de høyverdige resultatene (der gjennomsnittsprisen er over $4,000) i en ny tabell.
Steg 1: Last inn og inspiser
Først, last inn dataene og sjekk skjemaet for å sikre at prisene og karatene er gjenkjent som numeriske verdier.
# 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: Filtrer og velg
Du trenger ikke alle kolonnene, og du er kun interessert i "Premium"-diamanter for denne oppgaven:
# Filter for Premium cut and select relevant columns
premium_df = df.filter(df.cut == "Premium").select("color", "price", "carat")
Steg 3: Aggregere og gruppere
Nå kan du beregne gjennomsnittene. Bruk pyspark.sql.functions-biblioteket for å sikre at utregningene blir 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")
)
.alias() gir bare et nytt navn til en kolonne i spørringsresultatet — som et midlertidig kallenavn. Det endrer ikke selve tabellen, bare hvordan kolonnen vises i utdataene.
Tenk på det som AS i SQL — SELECT price AS price_in_usd.
Nyttig når kolonnenavn er lange, uklare, eller når du lager en beregnet kolonne og trenger et lesbart navn.
Steg 4: Siste filtrering og sortering
Vi ønsker kun å beholde de høyverdige kategoriene der gjennomsnittsprisen overstiger 4 000. Vi vil også sortere resultatene slik at den dyreste gjennomsnittsprisen vises øverst.
final_df = summary_df.filter(F.col("avg_price") > 4000).orderBy("avg_price", ascending=False)
display(final_df)
Du har kanskje ikke støtt på funksjonen F.col() ennå.
F.col() brukes for å referere til en kolonne ved navn i PySpark. F er bare et alias for pyspark.sql.functions — importert øverst i notatboken slik:
from pyspark.sql import functions as F
df.select(F.col("price"))
Dette tilsvarer ofte å skrive kolonnenavnet som en streng, men F.col() foretrekkes fordi det lar deg kjede operasjoner direkte på kolonnen:
F.col("price") * 1.1
F.col("cut").alias("diamond_cut")
Tenk på F.col("price") som å si "gi meg price-kolonnen som et objekt jeg faktisk kan gjøre ting med."
Steg 5: Lagre resultatet
Til slutt, lagre denne rensede rapporten "High-Value Premium Diamonds" i vårt katalog slik at analyseteamet kan bruke den.
final_df.write.mode("overwrite").saveAsTable("main.default.high_value_premium_diamonds")
1. I steg 3, hvorfor brukte du metoden .alias() i aggregeringen?
2. Hvis du vil bruke dette prosjektet på ditt eget datasett, hvilken del av koden må du endre først?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår