Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Aggregazione e Raggruppamento in Python | Lavorare con i Dati
Fondamenti di Databricks: Guida per Principianti

Aggregazione e Raggruppamento in Python

Scorri per mostrare il menu

Note
Definizione

L'aggregazione è il processo di sintesi di più righe di dati in un singolo valore significativo, come una somma, una media o un conteggio. Il raggruppamento consente di applicare queste sintesi su categorie specifiche, ad esempio trovando le vendite totali per ciascuna regione distinta.

Raramente è necessario esaminare milioni di singole righe di dati grezzi. Solitamente si desidera avere una visione d'insieme: totali, medie o conteggi per categoria. In Spark, è possibile ottenere questo risultato combinando due metodi potenti: groupBy() e agg().

Schema base di groupBy

Per sintetizzare i dati in base a una categoria specifica, si utilizza innanzitutto il metodo groupBy(). Questo indica a Spark di raggruppare tutte le righe che condividono lo stesso valore (come "cut" nella tabella diamonds) in un gruppo. Tuttavia, il solo raggruppamento non produce alcun risultato; è necessario applicare successivamente un'aggregazione.

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

display(count_df)

Esecuzione di operazioni matematiche con sum(), avg() e max()

Dopo aver raggruppato i dati, è possibile applicare funzioni matematiche alle colonne numeriche. Per visualizzare il profitto totale per tipo di articolo, si utilizza .sum().

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

display(total_depth)

Nota che Spark rinomina automaticamente la colonna in sum(x). Nel prossimo capitolo, vedremo come rendere questi nomi più professionali.

Il metodo agg() per metriche multiple

Se è necessario calcolare più valori contemporaneamente—ad esempio, sia il profitto medio che il ricavo massimo per ogni regione—si utilizza il metodo .agg() (aggregate). Questo rappresenta lo standard professionale per costruire riepiloghi complessi.

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
Nota

Importazione di pyspark.sql.functions as F per accedere a questi potenti strumenti matematici.

Raggruppamento per più colonne

Non si è limitati a raggruppare per una sola categoria. È possibile passare un elenco di colonne per visualizzare i dati a un livello più dettagliato, come il totale x per ogni Color Type all'interno di ogni Cut.

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

display(multi_group_df)

Ordinamento dei risultati

I dati aggregati sono spesso più leggibili quando sono ordinati. È possibile concatenare il metodo .orderBy() alla fine dell'aggregazione per visualizzare le categorie con le migliori prestazioni in cima all'elenco.

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

display(sorted_df)

1. Quale metodo è necessario chiamare PRIMA di applicare sum() o avg() se si desidera che i risultati siano suddivisi per categoria?

2. Qual è il vantaggio di utilizzare il metodo .agg() invece di solo .sum()?

question mark

Quale metodo è necessario chiamare PRIMA di applicare sum() o avg() se si desidera che i risultati siano suddivisi per categoria?

Seleziona la risposta corretta

question mark

Qual è il vantaggio di utilizzare il metodo .agg() invece di solo .sum()?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 4. Capitolo 6
some-alt