Somma Pyspark e funzioni della finestra AVG

Somma Pyspark e funzioni della finestra AVG
Dopo aver diviso le righe nel frame dati Pyspark, è possibile restituire la somma totale e la media in ciascuna partizione. Utilizzando alcune funzioni aggregate su una finestra di partizione, è possibile restituire la somma totale e la media. Innanzitutto, vedremo come suddividere il frame dati in pyspark.

Pyspark Partition Un frame di dati

È possibile partizione delle righe nel frame dati utilizzando la funzione della finestra. È disponibile in pyspark.SQL.finestra modulo. Ci saranno due passaggi per partizionare le righe in un frame dati pyspark.

Passi

  1. Crea un frame dati pyspark con valori simili in almeno una colonna.
  2. Partizione I dati utilizzando il metodo di partizione () disponibile nella funzione finestra.

Sintassi

partizione = finestra.Partitionby ("colonna")

Possiamo ordinare i dati partizionati con la colonna partizionata o qualsiasi altra colonna. Creiamo il frame dati.

Esempio
Qui, creeremo un frame dati pyspark che ha 5 colonne: ["soggetto_id", "nome", "age", "tecnologia1", "tecnologia2"] con 10 righe.

importare pyspark
da pyspark.SQL Importazione di importazione
da pyspark.SQL.funzioni importanti *
Spark_app = SparkSession.costruttore.nome dell'applicazione('_').getOrCreate ()
Studenti = [(4, "Sravan", 23, "Php", "Test"),
(4, "Sravan", 23, "Php", "Test"),
(46, "Mounika", 22, ".Net ',' html '),
(4, "Deepika", 21, "Oracle", "HTML"),
(46, "Mounika", 22, "Oracle", "Test"),
(12, "Chandrika", 22, "Hadoop", "C#"),
(12, "Chandrika", 22, "Oracle", "Test"),
(4, "Sravan", 23, "Oracle", "C#"),
(4, "Deepika", 21, "Php", "C#"),
(46, "Mounika", 22, ".Net ',' test ')
"
DataFrame_obj = Spark_app.CreateAtaFrame (Students, ['soggetto_id', 'name', 'age', 'technology1', 'technology2'])
print ("---------- Frame dati effettivo ----------")
dataframe_obj.spettacolo()

Produzione:

Funzione di finestra Pyspark Sum ()

La somma () nella funzione della finestra viene utilizzata per restituire la somma totale dei valori in ciascuna partizione. Quindi, è possibile restituire una somma dopo aver diviso il frame dati.

Sintassi

dataframe_obj.WithColumn ("Sum", Sum (Col ("Colonna")).Over (partizione))

Parametro:

somma (col ("colonna"))

Qui, il somma() La funzione prende il nome della colonna come parametro. Quindi, restituisce la somma dei valori in questa colonna in ogni partizione. Aggiungiamo il risultato in una colonna di somma usando il withColumn () funzione.

Esempio 1
Ora abbiamo un frame dati (creato sopra). Partizione in base alla colonna Technology1 e otteniamo la somma totale di tutti i valori nella colonna soggetto_id in ogni partizione.

# Importa la funzione della finestra
da pyspark.SQL.finestra di importazione della finestra
#Import the Sum e Col da Pyspark.SQL.funzioni
da pyspark.SQL.funzioni Somma importazione, col
#partition Il frame dati in base ai valori nella colonna
partizione = finestra.Partitionby ("Technology1")
print ("---------- DataFrame partizionato ----------")
#RETURN La somma totale dei valori nella colonna soggetto_id per ogni partizione
dataframe_obj.withColumn ("somma", somma (col ("soggetto_id").Over (partizione)).spettacolo()

Produzione:

Spiegazione
Partizioni totali: 4

Partizione 1:
.La rete si è verificata due volte nella prima partizione. E la somma dei valori soggetti_id è 46+46 = 92.

Partizione 2:
Hadoop si è verificato una volta nella seconda partizione. Quindi, la somma è 12.

Partizione 3:
Oracle si è verificato quattro volte nella terza partizione.
E la somma dei valori soggetti_id è 4+46+12+4 = 66.

Partizione 4:
PHP si è verificato tre volte nella quarta partizione.
E la somma dei valori soggetti_id è 4+4+4 = 12.

Esempio 2
Ora abbiamo un frame dati (creato sopra). Partitioniamo in base alla colonna Technology1 e otteniamo la somma totale di tutti i valori nella colonna di età in ogni partizione.

# Importa la funzione della finestra
da pyspark.SQL.finestra di importazione della finestra
#Import the Sum e Col da Pyspark.SQL.funzioni
da pyspark.SQL.funzioni Somma importazione, col
#partition Il frame dati in base ai valori nella colonna
partizione = finestra.Partitionby ("Technology1")
print ("---------- DataFrame partizionato ----------")
#RETURN La somma totale dei valori nella colonna di età per ogni partizione
dataframe_obj.WithColumn ("somma", somma (col ("età").Over (partizione)).spettacolo()

Produzione:

Spiegazione
Partizioni totali: 4

Partizione 1:
.La rete si è verificata due volte nella prima partizione. E la somma dei valori di età è 22+22 = 92.

Partizione 2:
Hadoop si è verificato una volta nella seconda partizione. Quindi, la somma è 22.

Partizione 3:
Oracle si è verificato quattro volte nella terza partizione.
E la somma dei valori di età è 21+22+22+23 = 88.

Partizione 4:
PHP si è verificato tre volte nella quarta partizione.
E la somma dei valori di età è 23+23+21 = 67.

Funzione di finestra Pyspark Avg ()

L'avg () nella funzione della finestra viene utilizzato per restituire la media totale dei valori in ciascuna partizione. Quindi, è possibile restituire la media dopo aver diviso il frame dati.

Sintassi

dataframe_obj.WithColumn ("Medio", AVG (col ("colonna")).Over (partizione))

Parametro:

AVG (col ("colonna"))

Qui, avg () prende il nome della colonna come parametro. Quindi, restituisce la media dei valori in questa colonna in ogni partizione. Stiamo aggiungendo il risultato nella colonna media usando il withColumn () funzione.

Esempio 1
Ora abbiamo un frame dati (creato sopra). Partizioni in base alla colonna Technology1 e otteniamo la media totale di tutti i valori nella colonna soggetto_id in ogni partizione.

# Importa la funzione della finestra
da pyspark.SQL.finestra di importazione della finestra
#IMPORT AVG e Col di Pyspark.SQL.funzioni
da pyspark.SQL.funzioni importano avg, col
#partition Il frame dati in base ai valori nella colonna
partizione = finestra.Partitionby ("Technology1")
print ("---------- DataFrame partizionato ----------")
#Trenturn La media totale dei valori nella colonna soggetto_id per ogni partizione
dataframe_obj.WithColumn ("Medio", AVG (col ("soggetto_id")).Over (partizione)).spettacolo()

Produzione:

Spiegazione
Partizioni totali: 4

Partizione 1:
.La rete si è verificata due volte nella prima partizione. E la media dei valori soggetti_id è (46+46)/2 = 46.0.

Partizione 2:
Hadoop si è verificato una volta nella seconda partizione. Quindi, la media è 12.0.

Partizione 3:
Oracle si è verificato quattro volte nella terza partizione.
E la media dei valori soggetti_id è (4+46+12+4)/4 = 16.5.

Partizione 4:
PHP si è verificato tre volte nella quarta partizione.
E la media dei valori soggetti_id è (4+4+4)/3 = 4.0.

Esempio 2
Ora abbiamo un frame dati (creato sopra). Partizioniamo in base alla colonna Technology1 e otteniamo la media totale di tutti i valori nella colonna di età in ogni partizione.

# Importa la funzione della finestra
da pyspark.SQL.finestra di importazione della finestra
#IMPORT AVG e Col di Pyspark.SQL.funzioni
da pyspark.SQL.funzioni importano avg, col
#partition Il frame dati in base ai valori nella colonna
partizione = finestra.Partitionby ("Technology1")
print ("---------- DataFrame partizionato ----------")
#Trenturn La media totale dei valori nella colonna di età per ogni partizione
dataframe_obj.WithColumn ("Media", AVG (col ("età")).Over (partizione)).spettacolo()

Produzione:

Spiegazione
Partizioni totali: 4

Partizione 1:
.La rete si è verificata due volte nella prima partizione. E il valore medio di età è (22+22)/2 = 22.0.

Partizione 2:
Hadoop si è verificato una volta nella seconda partizione. Quindi, la media è 22.0.

Partizione 3:
Oracle si è verificato quattro volte nella terza partizione.
E l'età media è (21+22+22+23)/4 = 22.0.

Partizione 4:
PHP si è verificato tre volte nella quarta partizione.
E il valore medio di età è (23+23+21)/3 = 22.333.

Conclusione

In questo tutorial di partizionamento Pyspark, abbiamo visto come restituire la somma dei valori in ciascuna finestra partizionata usando il somma() funzione e i valori medi in ciascuna finestra partizionata usando la funzione AVG (). Abbiamo aggiunto il risultato al frame dati esistente come nuova colonna. È anche possibile ottenere la media simile a avg () funzione usando Significare(). Le cose che importano significano pyspark.SQL.funzioni modulo e assicurati semplicemente di dover importare somma e media dallo stesso modulo.