Haaste: Ensimmäinen Tietojen Puhdistustehtävä
Pyyhkäise näyttääksesi valikon
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")
)
.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?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme