Pyspark - distinkt

Pyspark - distinkt
I Python er Pyspark en Spark -modul som brukes til å gi en lignende type prosessering som Spark ved hjelp av DataFrame.

distinkt () i pyspark fjerner dupliserte rader/data og returnerer de unike radene fra DataFrame.

Ved å bruke distinkt () kan vi fjerne dupliserte rader i Pyspark DataFrame.

Vi kan slippe kolonnene fra DataFrame på to måter.

Før det må vi lage Pyspark DataFrame for demonstrasjon.

Eksempel:

Vi vil lage en DataFrame med 8 rader og 6 kolonner og vise den ved hjelp av Show () -metoden.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Import tellingsfunksjonen
Fra Pyspark.SQL.Funksjoner importtall
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 8 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
df.forestilling()

Produksjon:

I denne DataFrame er duplikatdataene Rollno - 2, 3 og 4 . De er duplikatdata fordi de skjedde to ganger. Så vi må fjerne denne duplikatet og returnere de gjenværende radene ved å bruke den distinkte () funksjonen. Denne metoden vil returnere kolonnenavnene sammen med datatypen.

Scenario -1: Få tydelige data fra hele DataFrame

Vi vil få de distinkte dataene fra hele DataFrame ved å bruke distinkt () -funksjon

Syntaks:

df.distinkt()

Hvor DF er inngangen Pyspark DataFrame

Til slutt må vi bruke Collect () -metoden for å returnere alle radene fra DataFrame.

Eksempel:

I dette eksemplet vil vi få de forskjellige dataene fra hele DataFrame.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Import tellingsfunksjonen
Fra Pyspark.SQL.Funksjoner importtall
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 8 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Få de distinkte radene
trykk (df.distinkt().samle inn())

Produksjon:

[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, navn = 'Sravan', Rollno = '001', vekt = 67),
Rad (adresse = 'hyd', alder = 9, høyde = 3.69, navn = 'Rohith', rollno = '004', vekt = 28),
Rad (adresse = 'patna', alder = 7, høyde = 2.79, navn = 'Gnanesh Chowdary', Rollno = '003', vekt = 17),
Rad (adresse = 'hyd', alder = 16, høyde = 3.79, navn = 'Ojaswi', rollno = '002', vekt = 34),
Rad (adresse = 'hyd', alder = 37, høyde = 5.59, name = 'Sridevi', rollno = '005', vekt = 54)]

I eksemplet ovenfor vil vi se at dupliserte rader blir fjernet.

Scenario - 2: Få tydelige data fra bestemte kolonner i DataFrame.

Vi vil bruke Select () -metoden for å få de distinkte radene fra de valgte kolonnene, Select () -metoden brukes til å velge kolonner, og etter det må vi bruke den distinkte () -funksjonen for å returnere unike verdier fra den valgte kolonnen , og til slutt må vi bruke Collect () -metoden for å få radene tilbake av den distinkte () -funksjonen.

Syntaks:

df.Velg ("Column_name").distinkt()

Hvor,

  1. DF er inngangen Pyspark DataFrame
  2. kolonne_navn er kolonnen.

Eksempel:

I dette eksemplet vil vi se separat de distinkte radene fra rollno, navn og adressekolonne.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Import tellingsfunksjonen
Fra Pyspark.SQL.Funksjoner importtall
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 8 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#få de distinkte radene fra rollno -kolonnen
trykk (df.Velg ("Rollno").distinkt().samle inn())
#få de distinkte radene fra navnekolonnen
trykk (df.Velg ("Navn").distinkt().samle inn())
#Få de distinkte radene fra adressekolonnen
trykk (df.Velg ("Adresse").distinkt().samle inn())

Produksjon:

[ROW (ROLLNO = '003'), ROW (ROLLNO = '001'), ROW (ROLLNO = '004'), ROW (ROLLNO = '002'), ROW (ROLLNO = '005')]
[Rad (name = 'rohith'), rad (name = 'gnanesh chowdary'), rad (name = 'sravan'), rad (name = 'ojaswi'), rad (name = 'sridevi')]
[Rad (adresse = 'patna'), rad (adresse = 'hyd'), rad (adresse = 'guntur')]

I eksemplet ovenfor returnerte vi de distinkte radene fra rollno, navn og adressekolonne

Scenario - 3: Få tydelige data fra flere kolonner i DataFrame.

Vi bruker Select () -metoden for å få de distinkte radene fra de valgte flere kolonnene om gangen. Kolonner, Select () -metoden brukes til å velge kolonner, og etter det må vi bruke den distinkte () -funksjonen for å returnere unike verdier fra den valgte kolonnen. Til slutt må vi bruke Collect () -metoden for å få radene tilbake av den distinkte () -funksjonen.

Syntaks:

df.Velg ("Column_name", "Column_name", ..., "Column_name").distinkt()

Hvor,

  1. DF er inngangen Pyspark DataFrame
  2. kolonne_navn er kolonnen.

Eksempel:

I dette eksemplet vil vi få de distinkte radene fra rollno, navn og adressekolonne om gangen.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Import tellingsfunksjonen
Fra Pyspark.SQL.Funksjoner importtall
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 8 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Få de distinkte radene fra rollno, navn og adressekolonner
trykk (df.Velg ("Rollno", "Navn", "Adresse").distinkt().samle inn())

Produksjon:

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

I eksemplet ovenfor returnerte vi de distinkte radene fra rollno, navn og adressekolonne

Hvis vi ønsker å få det totale antall distinkte rader, må vi bruke telling () -funksjonen etter den distinkte () funksjonen.

Syntaks:

df.distinkt().telle()

Eksempel:

I dette eksemplet returnerer vi antallet unike rader.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#Import tellingsfunksjonen
Fra Pyspark.SQL.Funksjoner importtall
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 8 rader og 6 attributter
Studenter = ['Rollno': '001', 'Navn': 'Sravan', 'Age': 23, 'Height': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16, 'Height': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7, 'Height': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9, 'Height': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37, 'Height': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#få den distinkte tellingen
trykk (df.distinkt().telle())

Produksjon:

5

Konklusjon:

Vi diskuterte hvordan du får distinkte data fra hele DataFrame og enkelt/flere kolonner. For å få tellingen av unike verdier, bruker vi count () -metoden og distinkt ().