Pyspark - distinct

Pyspark - distinct
Dans Python, Pyspark est un module Spark utilisé pour fournir un type de traitement similaire comme Spark en utilisant DataFrame.

Distinct () dans Pyspark supprime les lignes / données en double et renvoie les lignes uniques du dataframe.

En utilisant distinct (), nous pouvons supprimer les lignes en double dans le pyspark dataframe.

Nous pouvons supprimer les colonnes de la dataframe de deux manières.

Avant cela, nous devons créer Pyspark DataFrame pour la démonstration.

Exemple:

Nous allons créer un dataframe avec 8 lignes et 6 colonnes et l'afficher à l'aide de 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 LE COUNTFONCTION
de Pyspark.SQL.Fonctions Count d'importation
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 8 lignes et 6 attributs
étudiants = ['rollno': '001', 'name': 'sravan', 'Âge': 23, 'height': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37, 'height': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#display le dataframe
df.montrer()

Sortir:

Dans ce DataFrame, les données en double sont RollNo - 2, 3 et 4 . Ce sont des données en double car ils se sont produits deux fois. Nous devons donc supprimer ce double et retourner les lignes restantes en utilisant la fonction distincte (). Cette méthode renverra les noms de colonne avec son type de données.

Scénario -1: Obtenez des données distinctes de l'ensemble des données

Nous obtiendrons les données distinctes de l'ensemble des données en utilisant une fonction distincte ()

Syntaxe:

df.distinct()

Où df est l'entrée pyspark dataframe

Enfin, nous devons utiliser la méthode Collect () pour renvoyer toutes les lignes de DataFrame.

Exemple :

Dans cet exemple, nous obtiendrons les données distinctes de l'ensemble des données.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LE COUNTFONCTION
de Pyspark.SQL.Fonctions Count d'importation
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 8 lignes et 6 attributs
étudiants = ['rollno': '001', 'name': 'sravan', 'Âge': 23, 'height': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37, 'height': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#get les lignes distinctes
Imprimer (DF.distinct().collecter())

Sortir:

[Row (adresse = 'guntur', âge = 23, hauteur = 5.79, name = 'sravan', rollno = '001', poids = 67),
Ligne (adresse = 'hyd', âge = 9, hauteur = 3.69, name = 'rohith', rollno = '004', poids = 28),
Ligne (adresse = 'patna', âge = 7, hauteur = 2.79, name = 'gnanesh chowdary', rollno = '003', poids = 17),
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)]

Dans l'exemple ci-dessus, nous verrons que les lignes en double sont supprimées.

Scénario - 2: Obtenez des données distinctes de colonnes particulières dans le dataframe.

Nous utiliserons la méthode Select () pour obtenir les lignes distinctes des colonnes sélectionnées, la méthode SELECT () est utilisée pour sélectionner les colonnes, et après cela, nous devons utiliser la fonction distincte () pour renvoyer des valeurs uniques de la colonne sélectionnée , et enfin, nous devons utiliser la méthode collection () pour faire renvoyer les lignes par la fonction distincte ().

Syntaxe:

df.SELECT ("Column_name").distinct()

Où,

  1. df est l'entrée pyspark dataframe
  2. Column_name est la colonne.

Exemple :

Dans cet exemple, nous obtiendrons séparément les lignes distinctes de la colonne RollNo, Name and Address.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LE COUNTFONCTION
de Pyspark.SQL.Fonctions Count d'importation
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 8 lignes et 6 attributs
étudiants = ['rollno': '001', 'name': 'sravan', 'Âge': 23, 'height': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37, 'height': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#get les lignes distinctes de la colonne Rollno
Imprimer (DF.sélectionnez ("rollno").distinct().collecter())
#get les lignes distinctes de la colonne du nom
Imprimer (DF.sélectionnez ("nom").distinct().collecter())
#get les lignes distinctes de la colonne d'adresse
Imprimer (DF.sélectionnez ("adresse").distinct().collecter())

Sortir:

[Row (rollno = '003'), row (rollno = '001'), row (rollno = '004'), row (rollno = '002'), row (rollno = '005')]]
[Row (name = 'rohith'), row (name = 'gnanesh chowdary'), row (name = 'sravan'), row (name = 'ojaswi'), row (name = 'sridevi')]]
[Row (adresse = 'patna'), row (adresse = 'hyd'), row (adresse = 'guntur')]]

Dans l'exemple ci-dessus, nous avons renvoyé les lignes distinctes de la colonne RollNo, Nom et Address

Scénario - 3: Obtenez des données distinctes de plusieurs colonnes dans le dataframe.

Nous utiliserons la méthode Select () pour obtenir les lignes distinctes des plusieurs colonnes sélectionnées à la fois. colonnes, la méthode select () est utilisée pour sélectionner les colonnes, et après cela, nous devons utiliser la fonction distincte () pour renvoyer des valeurs uniques de la colonne sélectionnée. Enfin, nous devons utiliser la méthode collection () pour faire retourner les lignes par la fonction distincte ().

Syntaxe:

df.SELECT ("Column_name", "Column_name",…, "Column_name").distinct()

Où,

  1. df est l'entrée pyspark dataframe
  2. Column_name est la colonne.

Exemple :

Dans cet exemple, nous obtiendrons les lignes distinctes de la colonne RollNo, Nom et Address à la fois.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
#IMPORT LE COUNTFONCTION
de Pyspark.SQL.Fonctions Count d'importation
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Créer des données étudiants avec 8 lignes et 6 attributs
étudiants = ['rollno': '001', 'name': 'sravan', 'Âge': 23, 'height': 5.79, «poids»: 67, «adresse»: «guntur»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '002', 'name': 'ojaswi', 'Âge': 16, 'height': 3.79, «poids»: 34, «adresse»: «hyd»,
'rollno': '003', 'name': 'gnanesh chowdary', 'Âge': 7, 'height': 2.79, «poids»: 17, «adresse»: «patna»,
'rollno': '004', 'name': 'rohith', 'Âge': 9, 'height': 3.69, «poids»: 28, «adresse»: «hyd»,
'rollno': '005', 'name': 'sridevi', 'Âge': 37, 'height': 5.59, «poids»: 54, «adresse»: «hyd»]
# Créer le DataFrame
df = spark_app.CreatedataFrame (étudiants)
#get les lignes distinctes des colonnes RollNo, Name and Address
Imprimer (DF.sélectionnez ("rollno", "nom", "adresse").distinct().collecter())

Sortir:

[Row (rollno = '002', name = 'ojaswi', adresse = 'hyd'), row (rollno = '004', name = 'rohith', adresse = 'hyd'), row (rolno = '001' , name = 'sravan', adresse = 'guntur'), ​​row (rollno = '003', name = 'gnanesh chowdary', adresse = 'patna'), row (rollno = '005', name = 'sridevi', adresse = 'hyd')]

Dans l'exemple ci-dessus, nous avons renvoyé les lignes distinctes de la colonne RollNo, Nom et Address

Si nous voulons obtenir le nombre total de lignes distinctes, nous devons utiliser la fonction Count () après la fonction distincte ().

Syntaxe:

df.distinct().compter()

Exemple:

Dans cet exemple, nous renvoyons le nombre de lignes uniques.

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

Sortir:

5

Conclusion:

Nous avons discuté de la façon d'obtenir des données distinctes de l'ensemble des données et des colonnes uniques / multiples. Pour obtenir le nombre de valeurs uniques, nous utilisons la méthode Count () et distinct ().