Fonctions Pyspark Sum et AVG

Fonctions Pyspark Sum et AVG
Après partitionner les lignes dans le Pyspark DataFrame, il est possible de retourner la somme totale et la moyenne dans chaque partition. En utilisant certaines fonctions agrégées sur une fenêtre de partition, il est possible de retourner la somme totale et la moyenne. Tout d'abord, nous verrons comment partitionner le DataFrame dans Pyspark.

Pyspark partitionne un cadre de données

Il est possible de partitionner les lignes dans le dataframe à l'aide de la fonction de fenêtre. Il est disponible dans le pyspark.SQL.fenêtre module. Il y aura deux étapes pour partitionner les lignes dans un pyspark dataframe.

Pas

  1. Créez un Pyspark DataFrame avec des valeurs similaires dans au moins une colonne.
  2. Partition Les données à l'aide de la méthode partition () disponible dans la fonction de fenêtre.

Syntaxe

partition = fenêtre.partitionby («colonne»)

Nous pouvons commander les données partitionnées avec la colonne partitionnée ou toute autre colonne. Créons le dataframe.

Exemple
Ici, nous allons créer un pyspark dataframe qui a 5 colonnes: [«sujet_id», «nom», «âge», «Technology1», «Technology2»] avec 10 lignes.

Importer Pyspark
de Pyspark.SQL IMPORT SPARKSESSE
de Pyspark.SQL.Fonctions Import *
Spark_App = Sparkcession.constructeur.nom de l'application('_').getorCreate ()
étudiants = [(4, «sravan», 23, «php», «test»),
(4, «sravan», 23, «php», «test»),
(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 ',' test ')
]]
dataframe_obj = spark_app.CreatedataFrame (étudiants, [«sujet_id», «nom», «âge», «technologie1», «technologie2»])
Imprimer ("---------- réelle DataFrame ----------")
dataframe_obj.montrer()

Sortir:

Fonction de fenêtre pyspark sum ()

La sum () dans la fonction de fenêtre est utilisée pour renvoyer la somme totale des valeurs dans chaque partition. Il est donc possible de retourner une somme après le partitionnement du dataframe.

Syntaxe

dataframe_obj.withColumn ("sum", sum (col ("colonne")).sur (partition))

Paramètre:

sum (col ("colonne"))

Ici le somme() La fonction prend le nom de la colonne comme paramètre. Donc, il renvoie la somme des valeurs dans cette colonne dans chaque partition. Nous ajoutons le résultat dans une colonne de somme en utilisant le withColumn () fonction.

Exemple 1
Maintenant, nous avons un dataframe (créé ci-dessus). Levons-le en fonction de la colonne Technology1 et obtenons la somme totale de toutes les valeurs dans la colonne Subject_id dans chaque partition.

# Importer la fonction de fenêtre
de Pyspark.SQL.Fenêtre d'importation de fenêtre
# importer la somme et le col de Pyspark.SQL.les fonctions
de Pyspark.SQL.Fonctions Import Sum, col
#Partition le dataframe en fonction des valeurs de la colonne Technology1
partition = fenêtre.partitionby ("Technology1")
print ("---------- partitionné DataFrame ----------")
#Return la somme totale des valeurs dans la colonne subdate_id pour chaque partition
dataframe_obj.withColumn ("sum", sum (col ("suject_id")).sur (partition)).montrer()

Sortir:

Explication
Partitions totales: 4

Partition 1:
.Le filet s'est produit deux fois dans la première partition. Et la somme des valeurs sujets_id est de 46 + 46 = 92.

Partition 2:
Hadoop s'est produit une fois dans la deuxième partition. Donc, la somme est 12.

Partition 3:
Oracle s'est produit quatre fois dans la troisième partition.
Et la somme des valeurs sujets est 4 + 46 + 12 + 4 = 66.

Partition 4:
PHP s'est produit trois fois dans la quatrième partition.
Et la somme des valeurs sujets_id est 4 + 4 + 4 = 12.

Exemple 2
Maintenant, nous avons un dataframe (créé ci-dessus). Letons-le en fonction de la colonne Technology1 et obtenons la somme totale de toutes les valeurs dans la colonne d'âge dans chaque partition.

# Importer la fonction de fenêtre
de Pyspark.SQL.Fenêtre d'importation de fenêtre
# importer la somme et le col de Pyspark.SQL.les fonctions
de Pyspark.SQL.Fonctions Import Sum, col
#Partition le dataframe en fonction des valeurs de la colonne Technology1
partition = fenêtre.partitionby ("Technology1")
print ("---------- partitionné DataFrame ----------")
#return la somme totale des valeurs dans la colonne d'âge pour chaque partition
dataframe_obj.WithColumn ("SUM", SUM (Col ("Age")).sur (partition)).montrer()

Sortir:

Explication
Partitions totales: 4

Partition 1:
.Le filet s'est produit deux fois dans la première partition. Et la somme des valeurs d'âge est de 22 + 22 = 92.

Partition 2:
Hadoop s'est produit une fois dans la deuxième partition. Donc, la somme est 22.

Partition 3:
Oracle s'est produit quatre fois dans la troisième partition.
Et la somme des valeurs d'âge est de 21 + 22 + 22 + 23 = 88.

Partition 4:
PHP s'est produit trois fois dans la quatrième partition.
Et la somme des valeurs d'âge est de 23 + 23 + 21 = 67.

Fonction de fenêtre Pyspark AVG ()

La fonction avg () dans la fenêtre est utilisée pour renvoyer la moyenne totale des valeurs dans chaque partition. Il est donc possible de retourner la moyenne après le partitionnement du dataframe.

Syntaxe

dataframe_obj.WithColumn ("moyen", avg (col ("colonne")).sur (partition))

Paramètre:

avg (col ("colonne"))

Ici, avg () prend le nom de la colonne comme paramètre. Donc, il renvoie la moyenne des valeurs dans cette colonne dans chaque partition. Nous ajoutons le résultat dans la colonne moyenne en utilisant le withColumn () fonction.

Exemple 1
Maintenant, nous avons un dataframe (créé ci-dessus). Levons-le en fonction de la colonne Technology1 et obtenons la moyenne totale de toutes les valeurs dans la colonne Subject_id dans chaque partition.

# Importer la fonction de fenêtre
de Pyspark.SQL.Fenêtre d'importation de fenêtre
#IMPORT L'AVG et le COL de Pyspark.SQL.les fonctions
de Pyspark.SQL.Fonctions Import Avg, Col
#Partition le dataframe en fonction des valeurs de la colonne Technology1
partition = fenêtre.partitionby ("Technology1")
print ("---------- partitionné DataFrame ----------")
#return la moyenne totale des valeurs dans la colonne Subject_id pour chaque partition
dataframe_obj.WithColumn ("moyen", avg (col ("sujet_id")).sur (partition)).montrer()

Sortir:

Explication
Partitions totales: 4

Partition 1:
.Le filet s'est produit deux fois dans la première partition. Et la moyenne des valeurs sujets_id est (46 + 46) / 2 = 46.0.

Partition 2:
Hadoop s'est produit une fois dans la deuxième partition. Donc, la moyenne est de 12.0.

Partition 3:
Oracle s'est produit quatre fois dans la troisième partition.
Et la moyenne des valeurs sujets_id est (4 + 46 + 12 + 4) / 4 = 16.5.

Partition 4:
PHP s'est produit trois fois dans la quatrième partition.
Et la moyenne des valeurs sujets_id est (4 + 4 + 4) / 3 = 4.0.

Exemple 2
Maintenant, nous avons un dataframe (créé ci-dessus). Letons-le en fonction de la colonne Technology1 et obtenons la moyenne totale de toutes les valeurs dans la colonne d'âge dans chaque partition.

# Importer la fonction de fenêtre
de Pyspark.SQL.Fenêtre d'importation de fenêtre
#IMPORT L'AVG et le COL de Pyspark.SQL.les fonctions
de Pyspark.SQL.Fonctions Import Avg, Col
#Partition le dataframe en fonction des valeurs de la colonne Technology1
partition = fenêtre.partitionby ("Technology1")
print ("---------- partitionné DataFrame ----------")
#return la moyenne totale des valeurs dans la colonne d'âge pour chaque partition
dataframe_obj.WithColumn ("moyen", avg (col ("âge")).sur (partition)).montrer()

Sortir:

Explication
Partitions totales: 4

Partition 1:
.Le filet s'est produit deux fois dans la première partition. Et la valeur d'âge moyenne est (22 + 22) / 2 = 22.0.

Partition 2:
Hadoop s'est produit une fois dans la deuxième partition. Donc, la moyenne est de 22.0.

Partition 3:
Oracle s'est produit quatre fois dans la troisième partition.
Et l'âge moyen est (21 + 22 + 22 + 23) / 4 = 22.0.

Partition 4:
PHP s'est produit trois fois dans la quatrième partition.
Et la valeur d'âge moyenne est (23 + 23 + 21) / 3 = 22.333.

Conclusion

Dans ce didacticiel de partitionnement Pyspark, nous avons vu comment renvoyer la somme des valeurs dans chaque fenêtre partitionnée en utilisant le somme() fonction et les valeurs moyennes dans chaque fenêtre partitionnée à l'aide de la fonction avg (). Nous avons ajouté le résultat au DataFrame existant en tant que nouvelle colonne. Il est également possible d'obtenir la moyenne similaire à avg () fonction en utilisant moyenne(). Les choses que cela signifie pyspark.SQL.les fonctions module et assurez-vous simplement que vous devez importer la somme et la moyenne du même module.