PYSPARK -SUM- und AVG -Fensterfunktionen

PYSPARK -SUM- und AVG -Fensterfunktionen
Nach der Verteilung der Zeilen im PYSPARK -Datenrahmen ist es möglich, die Gesamtsumme und den Durchschnitt in jeder Partition zurückzugeben. Durch die Verwendung einiger aggregierter Funktionen in einem Partitionsfenster ist es möglich, die Gesamtsumme und den Durchschnitt zurückzusetzen. Zunächst werden wir sehen.

Pyspark Partition Ein Datenrahmen

Es ist möglich, die Zeilen im DataFrame mithilfe der Fensterfunktion zu partitionieren. Es ist in der erhältlich PYSPARK.sql.Fenster Modul. Es wird zwei Schritte geben, um die Zeilen in einem PYSPARK -Datenrahmen zu partitionieren.

Schritte

  1. Erstellen Sie einen PYSPARK -Datenframe mit ähnlichen Werten in mindestens einer Spalte.
  2. Partitionieren Sie die Daten mithilfe der Partitionby () -Methode, die in der Fensterfunktion verfügbar ist.

Syntax

Partition = Fenster.partitionby ("Spalte")

Wir können die partitionierten Daten mit der partitionierten Spalte oder einer anderen Spalte bestellen. Lassen Sie uns den Datenrahmen erstellen.

Beispiel
Hier erstellen wir einen pyspark -Datenrahmen mit 5 Spalten: ['Subjekt_ID', 'Name', 'Age', 'Technology1', 'Technology2'] mit 10 Zeilen.

pysspark importieren
aus pysspark.SQL Import SparkSession
aus pysspark.sql.Funktionen importieren *
Spark_app = SparkSession.Erbauer.App Name('_').Getorcreate ()
Schüler = [(4, 'Sravan', 23, 'Php', 'Testing'),
(4, 'Sravan', 23, 'php', 'testing'),
(46, 'Mounika', 22, ','.Net ',' html '),
(4, "Deepika", 21, "Oracle", "Html"),
(46, 'Mounika', 22, 'Oracle', 'Testing'),
(12, 'Chandrika', 22, 'Hadoop', 'C#'),
(12, "Chandrika", 22, "Oracle", "Testing"),
(4, 'sravan', 23, oracle ',' c#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, ','.Net ',' testing ')
]
DataFrame_OBJ = Spark_App.Createdataframe (Studenten, ['Subjekt_ID', 'Name', 'Alter', 'Technology1', 'Technology2'])
print ("---------- tatsächliche Datenfreque ----------")
DataFrame_OBJ.zeigen()

Ausgang:

PYSPARK SUM () Fensterfunktion

Die Summe () in der Fensterfunktion wird verwendet, um die Gesamtwerte der Werte in jeder Partition zurückzugeben. Daher ist es möglich, eine Summe nach der Verteilung des Datenrahmens zurückzugeben.

Syntax

DataFrame_OBJ.with column ("sum", sum (col ("spalte")).über (Partition))

Parameter:

sum (col ("Spalte"))

Hier das Summe() Die Funktion nimmt den Spaltennamen als Parameter. Daher gibt es die Wertsumme in dieser Spalte in jeder Partition zurück. Wir fügen das Ergebnis eine Summenspalte mit der hinzu with column () Funktion.

Beispiel 1
Jetzt haben wir einen Datenrahmen (oben erstellt). Lassen Sie es uns auf der Spalte Technology1 aufteilt und die Gesamtsumme aller Werte in der Spalte Subjekt_ID in jeder Partition erhalten.

# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#-Summe und col aus pyspark.sql.Funktionen
aus pysspark.sql.Funktionen importieren Summe, col
#Partition Der Datenrahmen basierend auf den Werten in der Spalte Technology1
Partition = Fenster.partitionby ("Technology1")
print ("---------- partitionierte Datenframe ----------")
#REIT Die Gesamtwerte der Werte in der Spalte Subjekt_ID für jede Partition
DataFrame_OBJ.withColumn ("sum", sum (col ("subjekt_id")).über (Partition)).zeigen()

Ausgang:

Erläuterung
Gesamtpartitionen: 4

Partition 1:
.Das Netz trat zweimal in der ersten Partition auf. Und die Summe der Subjekt -ID -Werte beträgt 46+46 = 92.

Partition 2:
Hadoop ereignete sich einmal in der zweiten Partition. Die Summe ist also 12.

Partition 3:
Oracle trat viermal in der Dritten Partition auf.
Und die Summe der Subjekt -ID -Werte beträgt 4+46+12+4 = 66.

Partition 4:
PHP trat dreimal in der vierten Partition auf.
Und die Summe der Subjekt -ID -Werte beträgt 4+4+4 = 12.

Beispiel 2
Jetzt haben wir einen Datenrahmen (oben erstellt). Lassen Sie es uns auf der Basis der Technologie1 -Spalte aufteilt und die Gesamtsumme aller Werte in der Altersspalte in jeder Partition erhalten.

# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#-Summe und col aus pyspark.sql.Funktionen
aus pysspark.sql.Funktionen importieren Summe, col
#Partition Der Datenrahmen basierend auf den Werten in der Spalte Technology1
Partition = Fenster.partitionby ("Technology1")
print ("---------- partitionierte Datenframe ----------")
#REIT Die Gesamtwerte der Werte in der Altersspalte für jede Partition
DataFrame_OBJ.WithColumn ("Sum", Summe (col ("Alter")).über (Partition)).zeigen()

Ausgang:

Erläuterung
Gesamtpartitionen: 4

Partition 1:
.Das Netz trat zweimal in der ersten Partition auf. Und die Summe der Alterswerte beträgt 22+22 = 92.

Partition 2:
Hadoop ereignete sich einmal in der zweiten Partition. Die Summe ist also 22.

Partition 3:
Oracle trat viermal in der Dritten Partition auf.
Und die Summe der Alterswerte beträgt 21+22+22+23 = 88.

Partition 4:
PHP trat dreimal in der vierten Partition auf.
Und die Summe der Alterswerte beträgt 23+23+21 = 67.

PYSPARK AVG () Fensterfunktion

Die AVG () in der Fensterfunktion wird verwendet, um den Gesamtdurchschnitt der Werte in jeder Partition zurückzugeben. Daher ist es möglich, den Durchschnitt nach der Verteilung des Datenrahmens zurückzugeben.

Syntax

DataFrame_OBJ.WithColumn ("Durchschnitt", AVG (col ("Spalte")).über (Partition))

Parameter:

AVG (col ("Spalte"))

Hier, avg () Nimmt den Spaltennamen als Parameter. Daher gibt es den Durchschnitt der Werte in dieser Spalte in jeder Partition zurück. Wir fügen das Ergebnis mit der durchschnittlichen Spalte hinzu with column () Funktion.

Beispiel 1
Jetzt haben wir einen Datenrahmen (oben erstellt). Lassen Sie es uns auf der Basis der Technologie1 -Spalte aufteilt und den Gesamtdurchschnitt aller Werte in der Spalte Subjekt_ID in jeder Partition erhalten.

# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#Amportieren Sie die AVG und COL von PYSPARK.sql.Funktionen
aus pysspark.sql.Funktionen importieren avg, col
#Partition Der Datenrahmen basierend auf den Werten in der Spalte Technology1
Partition = Fenster.partitionby ("Technology1")
print ("---------- partitionierte Datenframe ----------")
#REITEN SIE DEN Gesamtwert der Werte in der Spalte Subjekt_ID für jede Partition
DataFrame_OBJ.WithColumn ("Durchschnitt", avg (col ("subjekt_id")).über (Partition)).zeigen()

Ausgang:

Erläuterung
Gesamtpartitionen: 4

Partition 1:
.Das Netz trat zweimal in der ersten Partition auf. Und der Durchschnitt der Werte der Subjekt_ID (46+46)/2 = 46.0.

Partition 2:
Hadoop ereignete sich einmal in der zweiten Partition. Der Durchschnitt beträgt also 12.0.

Partition 3:
Oracle trat viermal in der Dritten Partition auf.
Und der Durchschnitt der Subjekt -ID -Werte beträgt (4+46+12+4)/4 = 16.5.

Partition 4:
PHP trat dreimal in der vierten Partition auf.
Und der Durchschnitt der Werte der Subjekt_ID (4+4+4)/3 = 4.0.

Beispiel 2
Jetzt haben wir einen Datenrahmen (oben erstellt). Lassen Sie es uns auf der Basis der Technologie1 -Spalte aufteilt und den Gesamtdurchschnitt aller Werte in der Altersspalte in jeder Partition erhalten.

# Importieren Sie die Fensterfunktion
aus pysspark.sql.Fensterimportfenster
#Amportieren Sie die AVG und COL von PYSPARK.sql.Funktionen
aus pysspark.sql.Funktionen importieren avg, col
#Partition Der Datenrahmen basierend auf den Werten in der Spalte Technology1
Partition = Fenster.partitionby ("Technology1")
print ("---------- partitionierte Datenframe ----------")
#Regeln Sie den Gesamtdurchschnitt der Werte in der Altersspalte für jede Partition
DataFrame_OBJ.WithColumn ("Durchschnitt", AVG (col ("Alter")).über (Partition)).zeigen()

Ausgang:

Erläuterung
Gesamtpartitionen: 4

Partition 1:
.Das Netz trat zweimal in der ersten Partition auf. Und der Durchschnittsalterwert beträgt (22+22)/2 = 22.0.

Partition 2:
Hadoop ereignete sich einmal in der zweiten Partition. Der Durchschnitt beträgt also 22.0.

Partition 3:
Oracle trat viermal in der Dritten Partition auf.
Und das Durchschnittsalter beträgt (21+22+22+23)/4 = 22.0.

Partition 4:
PHP trat dreimal in der vierten Partition auf.
Und der Durchschnittsalterwert beträgt (23+23+21)/3 = 22.333.

Abschluss

In diesem PYSPARK -Partitionierungs -Tutorial haben wir gesehen Summe() Funktion und die Durchschnittswerte in jedem partitionierten Fenster mit der Funktion AVG (). Wir haben das Ergebnis dem vorhandenen DataFrame als neue Spalte hinzugefügt. Es ist auch möglich, den Durchschnitt ähnlich wie das zu erhalten avg () Funktion verwenden bedeuten(). Die Dinge importieren aus PYSPARK.sql.Funktionen Modul und stellen Sie einfach sicher, dass Sie Summe und Durchschnitt aus demselben Modul importieren müssen.