Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Aggregointi ja Ryhmittely Pythonissa | Tietojen Käsittely
Databricks Perusteet: Aloittelijan Opas

Aggregointi ja Ryhmittely Pythonissa

Pyyhkäise näyttääksesi valikon

Note
Määritelmä

Aggregointi tarkoittaa useiden tietorivien tiivistämistä yhdeksi merkitykselliseksi arvoksi, kuten summaksi, keskiarvoksi tai lukumääräksi. Ryhmittely mahdollistaa näiden tiivistelmien soveltamisen tiettyihin kategorioihin, esimerkiksi kunkin alueen kokonaismyynnin selvittämisen.

Harvoin on tarpeen tarkastella miljoonia yksittäisiä raakadatasta koostuvia rivejä. Yleensä halutaan nähdä "kokonaiskuva" – summat, keskiarvot tai lukumäärät per kategoria. Sparkissa tämä onnistuu yhdistämällä kaksi tehokasta menetelmää: groupBy() ja agg().

Perus groupBy-malli

Kun halutaan tiivistää tietoja tietyn kategorian mukaan, käytetään ensin groupBy()-metodia. Tämä ohjaa Sparkin kokoamaan kaikki rivit, joilla on sama arvo (kuten "cut" diamonds-taulussa), yhteen ryhmään. Pelkkä ryhmittely ei kuitenkaan tee mitään; sen jälkeen tarvitaan aggregointi.

# Group by cut and count how many rows are in each
count_df = df.groupBy("cut").count()

display(count_df)

Laskutoimitukset sum(), avg() ja max() -funktioilla

Kun olet ryhmitellyt datasi, voit käyttää matemaattisia funktioita numeerisiin sarakkeisiin. Jos haluat nähdä kokonaistuoton tuotetyypeittäin, käytät .sum()-funktiota.

# Total total_depth per cut category
total_depth = df.groupBy("cut").sum("x")

display(total_depth)

Huomaa, että Spark nimeää sarakkeen automaattisesti muotoon sum(x). Seuraavassa luvussa opimme, kuinka näistä nimistä saadaan ammattimaisemman näköisiä.

agg()-metodi useille mittareille

Jos tarvitsee laskea useampia asioita samanaikaisesti—esimerkiksi sekä keskimääräinen voitto että suurin liikevaihto kullekin alueelle—käytetään .agg() (aggregate) -metodia. Tämä on ammattimainen standardi monimutkaisten yhteenvetojen rakentamiseen.

from pyspark.sql import functions as F

# Calculate multiple metrics at once
summary_df = df.groupBy("cut").agg(
    F.sum("x"),
    F.avg("y"),
    F.max("z")
)

display(summary_df)
Note
Huomio

Tuodaan pyspark.sql.functions as F käyttöön näitä tehokkaita matemaattisia työkaluja varten.

Ryhmittely usean sarakkeen perusteella

Ryhmittely ei rajoitu vain yhteen kategoriaan. Voit antaa sarakkeiden listan nähdäksesi tiedot tarkemmalla tasolla, kuten kokonaisarvo x jokaiselle Color Type -arvolle jokaisessa Cut-luokassa.

multi_group_df = df.groupBy("cut", "color").sum("x")

display(multi_group_df)

Tulosten lajittelu

Aggregoitu data on usein helpompi lukea, kun se on lajiteltu. Voit ketjuttaa .orderBy()-metodin aggregoinnin loppuun nähdäksesi parhaiten suoriutuvat kategoriat listan kärjessä.

# Show highest profit categories first
sorted_df = summary_df.orderBy("sum(x)", ascending=False)

display(sorted_df)

1. Mikä metodi täytyy kutsua ENNEN kuin käytät sum()- tai avg()-funktiota, jos haluat tulokset jaoteltuna kategorioittain?

2. Mikä on .agg()-metodin etu verrattuna pelkkään .sum()-metodiin?

question mark

Mikä metodi täytyy kutsua ENNEN kuin käytät sum()- tai avg()-funktiota, jos haluat tulokset jaoteltuna kategorioittain?

Valitse oikea vastaus

question mark

Mikä on .agg()-metodin etu verrattuna pelkkään .sum()-metodiin?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 4. Luku 6
some-alt