Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Ensimmäinen Tietojen Puhdistustehtävä | Tietojen Käsittely
Databricks Perusteet: Aloittelijan Opas

Haaste: Ensimmäinen Tietojen Puhdistustehtävä

Pyyhkäise näyttääksesi valikon

Note
Määritelmä

Tietoputki noudattaa tyypillisesti kaavaa: Lataa, Puhdista, Muunna ja Tallenna. Tässä miniprojektissa sovellamme näitä vaiheita tiettyyn aineistoon siirtyäksemme raakadatan käsittelystä puhtaaseen, yhteenvedettyyn raportointivalmiiseen tietoon.

Osion 4 lopuksi sovelletaan opittuja asioita käytännössä. Voit käyttää näitä vaiheita mihin tahansa valitsemaasi aineistoon, mutta ratkaisun esimerkkinä käytämme suosittua Diamonds-aineistoa. Tämä aineisto sisältää lähes 54 000 timantin hinnat ja ominaisuudet (hionta, väri, kirkkaus jne.).

Voit seurata videota ja tehdä tehtävän itse käyttäen samaa aineistoa (laajasti saatavilla Kagglesta nimellä diamonds.csv) tai valita minkä tahansa muun aineiston ja soveltaa samaa periaatetta asettamalla vastaavan tavoitteen.

Pysähdy mielellään videon katselussa tai tekstin lukemisessa heti tavoitteen luettuasi. Kokeile projektia itsenäisesti, riippumatta siitä, kuinka varmalta tunnet olosi Databricksin käytössä. Jo pelkkä yritys on huomattavasti hyödyllisempää kuin pelkän ratkaisun läpikäynti. Jos sinulla ei ole aikaa, jatka ratkaisun lukemista ja kokeile tätä myöhemmin kotona harjoituksena.

Tavoite

Tavoitteena on tunnistaa "Premium"-leikkausluokan timanttien keskihinta ja keskimääräinen karaattimäärä, ryhmiteltynä värin mukaan, ja tallentaa vain arvokkaimmat tulokset (joissa keskihinta ylittää 4 000 $) uuteen tauluun.

Vaihe 1: Lataa ja tarkastele

Lataa ensin data ja tarkista skeema varmistaaksesi, että hinnat ja karaatit tunnistetaan numeerisiksi arvoiksi.

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

Vaihe 2: Suodatus ja valinta

Kaikkia sarakkeita ei tarvita, ja tässä tehtävässä keskitytään vain "Premium"-timantteihin:

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

Vaihe 3: Aggregointi ja ryhmittely

Nyt voit laskea keskiarvot. Käytä pyspark.sql.functions -kirjastoa varmistaaksesi laskutoimitusten tarkkuuden.

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
Huomio

.alias() nimeää sarakkeen uudelleen kyselyn tuloksessa — kuin väliaikainen lempinimi. Se ei muuta varsinaista taulua, vaan ainoastaan sen, miten sarake näkyy tuloksessa.

Ajattele sitä kuten AS SQL:ssä — SELECT price AS price_in_usd.

Hyödyllinen, kun sarakkeiden nimet ovat pitkiä, epäselviä tai kun luot laskennallisen sarakkeen ja haluat antaa sille selkeän nimen.

Vaihe 4: Lopullinen suodatus ja lajittelu

Pidämme vain ne korkean arvon kategoriat, joissa keskihinta ylittää 4 000. Tulokset lajitellaan siten, että kallein keskihinta on ylimpänä.

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

display(final_df)

Et ehkä ole vielä törmännyt F.col()-funktioon.

F.col() on tapa viitata sarakkeeseen nimen perusteella PySparkissa. F on vain alias pyspark.sql.functions -kirjastolle, joka tuodaan notebookin alkuun näin:

from pyspark.sql import functions as F

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

Se vastaa monissa tapauksissa sarakkeen nimen kirjoittamista merkkijonona, mutta F.col() on suositeltavampi, koska sen avulla voit ketjuttaa toimintoja suoraan siihen:

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

Ajattele F.col("price") -kutsua kuin "anna minulle price-sarake objektina, jolla voin tehdä asioita."

Vaihe 5: Tallenna tulos

Lopuksi tallenna tämä puhdistettu "High-Value Premium Diamonds" -raportti Catalogiin, jotta analytiikkatiimi voi käyttää sitä.

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

1. Miksi käytit vaiheessa 3 .alias()-metodia aggregoinnin yhteydessä?

2. Jos haluat soveltaa tätä projektia omaan tietojoukkoosi, mitä osaa koodista sinun tulee muuttaa ensin?

question mark

Miksi käytit vaiheessa 3 .alias()-metodia aggregoinnin yhteydessä?

Valitse oikea vastaus

question mark

Jos haluat soveltaa tätä projektia omaan tietojoukkoosi, mitä osaa koodista sinun tulee muuttaa ensin?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 9

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 9
some-alt