PySpark SelectExpr()

Pyspark Selectexpr



En utilisant la fonction selectExpr() dans PySpark, nous pouvons directement évaluer une expression sans créer de TABLE ou de VIEW. Cette fonction est disponible dans le module pyspark.sql.DataFrame qui est similaire à la méthode select(). Avec selectExpr(), nous pouvons afficher les colonnes, appliquer les fonctions sur les colonnes, évaluer les expressions, effectuer les opérations d'agrégations, etc. Il est également possible d'évaluer/spécifier plusieurs colonnes à la fois.

Pyspark.sql.DataFrame.selectExpr()

La fonction selectexpr() prend les colonnes/ensemble d'expressions et renvoie le DataFrame en fonction des expressions/colonnes spécifiées. Plusieurs expressions peuvent être spécifiées dans cette fonction qui est séparée par une virgule. Pour afficher le DataFrame, nous pouvons utiliser les fonctions show()/collect().

Syntaxe:







pyspark_DataFrame_object.selectExpr('Colonnes'/'Expressions')

Ici, le pyspark_DataFrame_object est le PySpark DataFrame d'entrée.



Scénario 1 : sélectionnez les colonnes

Dans ce scénario, nous verrons comment sélectionner les colonnes particulières du PySpark DataFrame à l'aide de la fonction selectExpr().



L'expression utilisée est « colonne_existante comme nouveau_nom ». Ici, existing_column est le nom de la colonne qui est présent dans le DataFrame et il est affiché en tant que new_name (Aliasing).





Exemple:

Créez un DataFrame PySpark nommé 'agri_df' avec 5 lignes et colonnes. Obtenez les colonnes 'Soil_status' et 'Soil_Type' comme 'STATUS' et 'TYPE'.

importer pyspark

depuis pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()

# données agricoles avec 5 lignes et 5 colonnes

agricole =[{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 2500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 3500 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'Inde' },

{ 'Le type de sol' : Aucun , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 210 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ROYAUME-UNI' },

{ 'Le type de sol' : 'Autre' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 1000 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Sable' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'Inde' }]



# créer le dataframe à partir des données ci-dessus

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Obtenez le Soil_status et le Soil_Type comme 'STATUS' et 'TYPE'.

agri_df.selectExpr( 'Soil_status as STATUS' , 'Type de sol comme TYPE' ).montrer()

Sortir:



Scénario 2 : Spécification des expressions conditionnelles

Dans ce scénario, nous verrons comment évaluer les conditions dans la fonction selectExpr().

L'expression utilisée est 'valeur de l'opérateur de colonne existante'. Ici, existing_column est le nom de la colonne qui est présent dans le DataFrame et nous comparons chaque valeur de cette colonne avec la chaîne/valeur.

Exemple 1:

Vérifiez si le pays est 'USA' ou non. L'opérateur égal à (=) est utilisé ici.

importer pyspark

depuis pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()

# données agricoles avec 5 lignes et 5 colonnes

agricole =[{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 2500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 3500 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'Inde' },

{ 'Le type de sol' : Aucun , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 210 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ROYAUME-UNI' },

{ 'Le type de sol' : 'Autre' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 1000 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Sable' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'Inde' }]



# créer le dataframe à partir des données ci-dessus

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Vérifiez si le pays est 'USA' ou non.

agri_df.selectExpr( 'Pays = 'États-Unis'' ).montrer()

Sortir:

Exemple 2 :

Vérifiez si Soil_Type est NULL ou non. Le mot clé NULL vérifie si la valeur est NULL ou non. S'il est nul, true est renvoyé. Sinon, false est renvoyé. L'expression finale est 'Soil_Type IS NULL'

importer pyspark

depuis pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()

# données agricoles avec 5 lignes et 5 colonnes

agricole =[{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 2500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 3500 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'Inde' },

{ 'Le type de sol' : Aucun , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 210 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ROYAUME-UNI' },

{ 'Le type de sol' : 'Autre' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 1000 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Sable' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'Inde' }]



# créer le dataframe à partir des données ci-dessus

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Vérifiez si Soil_Type est NULL ou non.

agri_df.selectExpr( 'Type_de_sol EST NULL' ).montrer()

Sortir:

Scénario 3 : évaluer les expressions

Dans ce scénario, nous verrons comment spécifier les expressions mathématiques. L'expression utilisée est 'expression_mathématique_colonne_existante'.

Exemple:

  1. Affichez la colonne 'Acres' réelle.
  2. Ajoutez 100 à la colonne 'Acres'.
  3. Soustrayez 100 de la colonne 'Acres'.
  4. Multipliez 100 avec la colonne 'Acres'.
  5. Divisez la colonne 'Acres' par 100.
importer pyspark

depuis pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()

# données agricoles avec 5 lignes et 5 colonnes

agricole =[{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 2500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 3500 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'Inde' },

{ 'Le type de sol' : Aucun , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 210 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ROYAUME-UNI' },

{ 'Le type de sol' : 'Autre' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 1000 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Sable' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'Inde' }]



# créer le dataframe à partir des données ci-dessus

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Écrivez 4 expressions pour soustraire, additionner, diviser et multiplier la colonne Acres.

agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).montrer()

Sortir:

Scénario 4 : Application des fonctions d'agrégation

SOMME(nom_colonne) – Il évalue la valeur totale dans la colonne spécifiée.

MOYEN(nom_colonne) – Il évalue la valeur moyenne dans la colonne spécifiée.

MIN(nom_colonne) – Il renvoie l'élément minimum parmi tous les éléments de la colonne spécifiée.

MAX(nom_colonne) – Il renvoie l'élément maximum parmi tous les éléments de la colonne spécifiée.

Exemple:

  1. Trouvez le total, la moyenne, le nombre, le minimum et le maximum des éléments de 'Acres'.
  2. Trouvez les éléments minimum et maximum dans la colonne 'Soil_status'.
importer pyspark

depuis pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()

# données agricoles avec 5 lignes et 5 colonnes

agricole =[{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 2500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Noir' , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 3500 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'Inde' },

{ 'Le type de sol' : Aucun , 'Irrigation_disponibilité' : 'Oui' , 'Acres' : 210 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'ROYAUME-UNI' },

{ 'Le type de sol' : 'Autre' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 1000 , 'Statut_du_sol' : 'Humide' ,
'Pays' : 'ETATS-UNIS' },

{ 'Le type de sol' : 'Sable' , 'Irrigation_disponibilité' : 'Non' , 'Acres' : 500 , 'Statut_du_sol' : 'Sec' ,
'Pays' : 'Inde' }]



# créer le dataframe à partir des données ci-dessus

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Opérations agrégées

agri_df.selectExpr( 'SOMME(Acres)' , « MOYENNE (acres) » , 'COMPTER (acres)' , « MOY (acres) » , 'MIN(Acres)' ,
« MAX (acres) » ).montrer()

agri_df.selectExpr( « MIN(état_du_sol) » , « MAX(état_du_sol) » ).montrer()

Sortir:

Conclusion

Nous avons discuté de la fonction selectExpr() qui prend les colonnes/ensembles d'expressions et renvoie le DataFrame en fonction des expressions/colonnes spécifiées. Dans le cadre de cela, nous avons appris les quatre principaux scénarios dans lesquels le selectExpr () est applicable. Plusieurs expressions peuvent être spécifiées dans cette fonction, séparées par une virgule. Il n'est pas nécessaire de créer une VUE TEMPORAIRE pour utiliser la fonction selectExpr().