Pyspark - filtre

Pyspark - filtre
Dans Python, Pyspark est un module Spark utilisé pour fournir un type de traitement similaire comme Spark en utilisant DataFrame. À Pyspark, filtre() est utilisé pour filtrer les lignes dans le dataframe. Il renverra le nouveau DataFrame en filtrant les lignes dans le dataframe existant. Nous démontrerons quatre façons d'utiliser le filtre() fonction dans cet article:
  1. Méthode - 1: filtre () avec des opérateurs relationnels
  2. Méthode - 2: filter () avec des opérateurs relationnels utilisant la fonction col
  3. Méthode - 3: filter () avec des opérateurs relationnels sur plusieurs conditions
  4. Méthode - 4: filter () avec expression SQL

Créons d'abord un pyspark dataframe que nous pouvons utiliser pour les exemples.

Exemple:

Dans cet exemple, nous allons créer le Pyspark DataFrame avec 5 lignes et 6 colonnes et afficher en utilisant la méthode Show ().

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LA FONCTION COL
de Pyspark.SQL.Fonctions Import Col
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 5 lignes et 6 attributs
étudiants = [
'rollno': '001', 'name': 'sravan', 'Âge': 23,
'Hauteur': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16,
'Hauteur': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7,
'Hauteur': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9,
'Hauteur': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37,
'Hauteur': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#display dataframe
df.montrer()

Sortir:

Méthode - 1: filtre () avec des opérateurs relationnels

Ici, nous utilisons la fonction filtre () pour filtrer le pyspark dataframe avec des opérateurs relationnels comme>, < . == etc.

Syntaxe:

trame de données.filtre (dataframe.Column_name Operator Value)

Ici, Filter () accepte trois paramètres.

  1. trame de données.Column_name est la colonne où le filtrage est appliqué.
  2. L'opérateur est l'opérateur relationnel.
  3. la valeur est la valeur string / numérique par rapport aux valeurs de colonne.

Exemple:

Dans cet exemple, nous allons filtrer le dataframe en fonction des colonnes d'âge, de taille, de poids et de noms avec différents opérateurs relationnels et afficher les lignes filtrées à l'aide de la méthode Collect ().

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LA FONCTION COL
de Pyspark.SQL.Fonctions Import Col
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 5 lignes et 6 attributs
étudiants = [
'rollno': '001', 'name': 'sravan', 'Âge': 23,
'Hauteur': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16,
'Hauteur': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7,
'Hauteur': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9,
'Hauteur': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37,
'Hauteur': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#display dataframe
# par âge de filtrage à 23 ans
Imprimer (DF.filtre (df.Âge == 23).collecter())
imprimer("---------------------------")
#display dataframe
# par la hauteur de filtrage comme 2.79
Imprimer (DF.filtre (df.hauteur == 2.79).collecter())
imprimer("---------------------------")
#display dataframe
# par filtrage du poids supérieur à 30
Imprimer (DF.filtre (df.poids> 30).collecter())
imprimer("---------------------------")
#display dataframe
#By Filtrage Nom comme Sravan
Imprimer (DF.filtre (df.name == 'sravan').collecter())

Sortir:

[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]
---------------------------
[Row (adresse = 'patna', âge = 7, hauteur = 2.79, name = "gnanesh chowdary", rollno = "003", poids = 17)]
---------------------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67), ligne (adresse = 'hyd', âge = 16, hauteur = 3.79, name = "ojaswi", rollno = "002", poids = 34), ligne (adresse = 'hyd', âge = 37, hauteur = 5.59, name = "sridevi", rollno = "005", poids = 54)]
---------------------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]

Méthode - 2: filter () avec des opérateurs relationnels utilisant la fonction col

Ici, nous utilisons la fonction filtre () pour filtrer le pyspark dataframe avec des opérateurs relationnels comme>, < . == etc. through col function.

Syntaxe:

trame de données.Valeur de l'opérateur Filter (Col ("Column_name"))

Ici, où () accepte trois paramètres.

  1. trame de données.Column_name est la colonne où le filtrage est appliqué.
  2. L'opérateur est l'opérateur relationnel.
  3. la valeur est la valeur string / numérique par rapport aux valeurs de colonne.

Exemple:

Dans cet exemple, nous allons filtrer le dataframe en fonction des colonnes d'âge, de taille, de poids et de noms avec différents opérateurs relationnels et afficher les lignes filtrées à l'aide de la méthode Collect ().

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LA FONCTION COL
de Pyspark.SQL.Fonctions Import Col
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 5 lignes et 6 attributs
étudiants = [
'rollno': '001', 'name': 'sravan', 'Âge': 23,
'Hauteur': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16,
'Hauteur': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7,
'Hauteur': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9,
'Hauteur': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37,
'Hauteur': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#display dataframe
# par âge de filtrage à 23 ans
Imprimer (DF.filtre (col ('Âge') == 23).collecter())
imprimer("---------------------------")
#display dataframe
# par la hauteur de filtrage comme 2.79
Imprimer (DF.filtre (col ('height') == 2.79).collecter())
imprimer("---------------------------")
#display dataframe
# par filtrage du poids supérieur à 30
Imprimer (DF.filtre (col ('poids')> 30).collecter())
imprimer("---------------------------")
#display dataframe
#By Filtrage Nom comme Sravan
Imprimer (DF.filtre (col ('name') == 'sravan').collecter())

Sortir:

[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]
---------------------------
[Row (adresse = 'patna', âge = 7, hauteur = 2.79, name = "gnanesh chowdary", rollno = "003", poids = 17)]
---------------------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67), ligne (adresse = 'hyd', âge = 16, hauteur = 3.79, name = "ojaswi", rollno = "002", poids = 34), ligne (adresse = 'hyd', âge = 37, hauteur = 5.59, name = "sridevi", rollno = "005", poids = 54)]
---------------------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]

Méthode - 3: filter () avec des opérateurs relationnels sur plusieurs conditions

Ici, nous utilisons la fonction filtre () pour filtrer le pyspark dataframe avec des opérateurs relationnels comme>, < . == etc with multiple conditions.

Syntaxe:

trame de données.Filtre ((conditin1) opérateur (condition2)… .)

Ici, Filter () accepte trois paramètres.

  1. trame de données.Column_name est la colonne où le filtrage est appliqué.
  2. L'opérateur est l'opérateur relationnel.
  3. la valeur est la valeur string / numérique par rapport aux valeurs de colonne.
  4. Condition Spécifie - (DataFrame.Column_name Operator Value).

Exemple:

Dans cet exemple, nous allons filtrer le dataframe en fonction de la colonne d'âge avec ou (|) et (&) opérateur et afficher les lignes filtrées à l'aide de la méthode collection ().

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LA FONCTION COL
de Pyspark.SQL.Fonctions Import Col
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 5 lignes et 6 attributs
étudiants = [
'rollno': '001', 'name': 'sravan', 'Âge': 23,
'Hauteur': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16,
'Hauteur': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7,
'Hauteur': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9,
'Hauteur': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37,
'Hauteur': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#display dataframe
# par âge de filtrage supérieur à 10 et moins de 21
Imprimer (DF.filtre ((df.Âge> 10) & (df.âge <21)).collect())
imprimer("---------------------------")
#display dataframe
# par âge de filtrage supérieur à 10 ou moins de 21 ans
Imprimer (DF.filtre ((df.Âge> 10) | (df.âge <21)).collect())

Sortir:

[Row (adresse = 'hyd', âge = 16, hauteur = 3.79, name = "ojaswi", rollno = "002", poids = 34)]
---------------------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67), ligne (adresse = 'hyd', âge = 16, hauteur = 3.79, name = "ojaswi", rollno = "002", poids = 34), ligne (adresse = 'patna', âge = 7, hauteur = 2.79, name = "Gnanesh Chowdary", rollno = "003", poids = 17), ligne (adresse = 'hyd', âge = 9, hauteur = 3.69, name = "rohith", rollno = "004", poids = 28), ligne (adresse = 'hyd', âge = 37, hauteur = 5.59, name = "sridevi", rollno = "005", poids = 54)]

Méthode - 4: filter () avec expression SQL

Ici, nous utilisons la fonction Filter () pour filtrer le Pyspark DataFrame avec l'expression de SQL. La condition est enfermée par «». Cependant, nous pouvons spécifier l'opérateur relationnel comme condition.

Syntaxe:

trame de données.Filtre («DataFrame.Column_name Operator Value ”)

Ici, Filter () accepte trois paramètres.

  1. trame de données.Column_name est la colonne où le filtrage est appliqué.
  2. L'opérateur est l'opérateur relationnel.
  3. la valeur est la valeur string / numérique par rapport aux valeurs de colonne.

Exemple:

Dans cet exemple, nous allons filtrer le dataframe en fonction des colonnes d'âge, de taille, de poids et de noms avec différents opérateurs relationnels et afficher les lignes filtrées à l'aide de la méthode Collect ().

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LA FONCTION COL
de Pyspark.SQL.Fonctions Import Col
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 5 lignes et 6 attributs
étudiants = [
'rollno': '001', 'name': 'sravan', 'Âge': 23,
'Hauteur': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16,
'Hauteur': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7,
'Hauteur': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9,
'Hauteur': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37,
'Hauteur': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#display dataframe
# par âge de filtrage à 23 ans
#Using SQL Expression
Imprimer (DF.filtre ("âge == 23").collecter())
imprimer("---------------------------")
#display dataframe
# par la hauteur de filtrage comme 2.79
#Using SQL Expression
Imprimer (DF.filtre ("hauteur == 2.79 ").collecter())
imprimer("---------------------------")
#display dataframe
# par filtrage du poids supérieur à 30
#Using SQL Expression
Imprimer (DF.filtre ("poids> 30").collecter())
imprimer("---------------------------")
#display dataframe
#By Filtrage Nom comme Sravan
#Using SQL Expression
Imprimer (DF.filtre ("name == 'sravan'").collecter())

Sortir:

[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]
---------------------------
[Row (adresse = 'patna', âge = 7, hauteur = 2.79, name = "gnanesh chowdary", rollno = "003", poids = 17)]
---------------------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67), ligne (adresse = 'hyd', âge = 16, hauteur = 3.79, name = "ojaswi", rollno = "002", poids = 34), ligne (adresse = 'hyd', âge = 37, hauteur = 5.59, name = "sridevi", rollno = "005", poids = 54)]
---------------------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]

Méthode - 4: filtre () avec méthodes de chaîne

Ici, nous utilisons la fonction Filter () pour filtrer le Pyspark DataFrame avec des méthodes de chaîne. Ceux-ci sont appliqués sur les colonnes dont le type de données est la chaîne. Ils sont:

commence avec() - Vérifiez le caractère de départ dans les données données

Syntaxe:

trame de données.filtre (dataframe.nom de colonne.Startwith ("personnage")

Ici nom de colonne La colonne où le filtrage est appliqué où la valeur commence par le caractère donné.

se termine par() - Vérifiez le caractère final dans les données données.

Syntaxe:

trame de données.filtre (dataframe.nom de colonne.Endswith ("personnage")

Ici nom de colonne La colonne où le filtrage est appliqué où la valeur se termine avec le caractère donné.

contient() - Vérifiez que le caractère contient dans les données données.

Syntaxe:

trame de données.filtre (dataframe.nom de colonne.contient ("caractère")

Ici nom de colonne La colonne où le filtrage est appliqué où la valeur contient avec le caractère donné.

Exemple:

Dans cet exemple, nous allons filtrer en fonction de la colonne d'adresse.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LA FONCTION COL
de Pyspark.SQL.Fonctions Import Col
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 5 lignes et 6 attributs
étudiants = [
'rollno': '001', 'name': 'sravan', 'Âge': 23,
'Hauteur': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16,
'Hauteur': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7,
'Hauteur': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9,
'Hauteur': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37,
'Hauteur': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#display dataframe
Adresse de filtrage # par
#starts avec 'h'
Imprimer (DF.filtre (df.adresse.startSwith ("h")).collecter())
imprimer("-----------------")
#display dataframe
Adresse de filtrage # par
#end avec 'r'
Imprimer (DF.filtre (df.adresse.Endswith ("r")).collecter())
imprimer("-----------------")
#display dataframe
Adresse de filtrage # par
#comntains 'Tu'
Imprimer (DF.filtre (df.adresse.contient ("r")).collecter())

Sortir:

[Row (adresse = 'hyd', âge = 16, hauteur = 3.79, name = "ojaswi", rollno = "002", poids = 34), ligne (adresse = 'hyd', âge = 9, hauteur = 3.69, name = "rohith", rollno = "004", poids = 28), ligne (adresse = 'hyd', âge = 37, hauteur = 5.59, name = "sridevi", rollno = "005", poids = 54)]
-----------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]
-----------------
[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = "sravan", rollno = "001", poids = 67)]

Conclusion

Dans cet article, nous avons discuté de la façon d'utiliser une fonction filtrante () avec plusieurs méthodes sur le pyspark dataframe en python. Et nous avons également inclus toutes les conditions avec les expressions SQL.