Pyspark - Filter

Pyspark - Filter
I Python er Pyspark en Spark -modul som brukes til å gi en lignende type prosessering som Spark ved hjelp av DataFrame. I Pyspark, filter() brukes til å filtrere radene i DataFrame. Det vil returnere den nye DataFrame ved å filtrere radene i det eksisterende DataFrame. Vi vil demonstrere fire måter å bruke filter() Funksjon i denne artikkelen:
  1. Metode - 1: filter () med relasjonelle operatører
  2. Metode - 2: Filter () med relasjonelle operatører som bruker COL -funksjon
  3. Metode - 3: Filter () med relasjonelle operatører på flere forhold
  4. Metode - 4: filter () med SQL -uttrykk

La oss først lage en Pyspark DataFrame som vi kan bruke til eksemplene.

Eksempel:

I dette eksemplet skal vi lage Pyspark DataFrame med 5 rader og 6 kolonner og vise ved hjelp av show () -metoden.

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

Produksjon:

Metode - 1: filter () med relasjonelle operatører

Her bruker vi filter () -funksjon for å filtrere PySpark DataFrame med relasjonelle operatører som>, < . == etc.

Syntaks:

Dataramme.Filter (DataFrame.Kolonne_navn Operatørverdi)

Her godtar filter () tre parametere.

  1. Dataramme.kolonne_navn er kolonnen der filtrering brukes.
  2. Operatør er den relasjonsoperatøren.
  3. Verdien er streng/numerisk verdi sammenlignet med kolonneverdier.

Eksempel:

I dette eksemplet skal vi filtrere DataFrame basert på alders-, høyde-, vekt- og navnekolonner med forskjellige relasjonelle operatører og vise de filtrerte radene ved hjelp av Collect () -metoden.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import col -funksjonen
Fra Pyspark.SQL.Funksjoner importerer col
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [
'Rollno': '001', 'Navn': 'Sravan', 'Age': 23,
'Høyde': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16,
'Høyde': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7,
'Høyde': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9,
'Høyde': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37,
'Høyde': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
#by filtreringsalder som 23
trykk (df.Filter (DF.alder == 23).samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringshøyde som 2.79
trykk (df.Filter (DF.Høyde == 2.79).samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringsvekt større enn 30
trykk (df.Filter (DF.vekt> 30).samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringsnavn som Sravan
trykk (df.Filter (DF.Navn == 'Sravan').samle inn())

Produksjon:

[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]
---------------------------
[Rad (adresse = 'patna', alder = 7, høyde = 2.79, name = "Gnanesh Chowdary", rollno = "003", vekt = 17)]
---------------------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "Sravan", rollno = "001", vekt = 67), rad (adresse = 'hyd', alder = 16, høyde = 3.79, name = "Ojaswi", rollno = "002", vekt = 34), rad (adresse = 'hyd', alder = 37, høyde = 5.59, name = "sridevi", rollno = "005", vekt = 54)]
---------------------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]

Metode - 2: Filter () med relasjonelle operatører som bruker COL -funksjon

Her bruker vi filter () -funksjon for å filtrere PySpark DataFrame med relasjonelle operatører som>, < . == etc. through col function.

Syntaks:

Dataramme.Filter (COL (“Column_name”) Operatørverdi)

Her, hvor () godtar tre parametere.

  1. Dataramme.kolonne_navn er kolonnen der filtrering brukes.
  2. Operatør er den relasjonsoperatøren.
  3. Verdien er streng/numerisk verdi sammenlignet med kolonneverdier.

Eksempel:

I dette eksemplet skal vi filtrere DataFrame basert på alders-, høyde-, vekt- og navnekolonner med forskjellige relasjonelle operatører og vise de filtrerte radene ved hjelp av Collect () -metoden.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import col -funksjonen
Fra Pyspark.SQL.Funksjoner importerer col
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [
'Rollno': '001', 'Navn': 'Sravan', 'Age': 23,
'Høyde': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16,
'Høyde': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7,
'Høyde': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9,
'Høyde': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37,
'Høyde': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
#by filtreringsalder som 23
trykk (df.filter (col ('alder') == 23).samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringshøyde som 2.79
trykk (df.filter (col ('høyde') == 2.79).samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringsvekt større enn 30
trykk (df.filter (col ('vekt')> 30).samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringsnavn som Sravan
trykk (df.filter (col ('navn') == 'sravan').samle inn())

Produksjon:

[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]
---------------------------
[Rad (adresse = 'patna', alder = 7, høyde = 2.79, name = "Gnanesh Chowdary", rollno = "003", vekt = 17)]
---------------------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "Sravan", rollno = "001", vekt = 67), rad (adresse = 'hyd', alder = 16, høyde = 3.79, name = "Ojaswi", rollno = "002", vekt = 34), rad (adresse = 'hyd', alder = 37, høyde = 5.59, name = "sridevi", rollno = "005", vekt = 54)]
---------------------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]

Metode - 3: Filter () med relasjonelle operatører på flere forhold

Her bruker vi filter () -funksjon for å filtrere PySpark DataFrame med relasjonelle operatører som>, < . == etc with multiple conditions.

Syntaks:

Dataramme.Filter ((Conditin1) Operator (Condition2) .. .)

Her godtar filter () tre parametere.

  1. Dataramme.kolonne_navn er kolonnen der filtrering brukes.
  2. Operatør er den relasjonsoperatøren.
  3. Verdien er streng/numerisk verdi sammenlignet med kolonneverdier.
  4. Tilstand spesifiserer - (DataFrame.Kolonne_navn Operatørverdi).

Eksempel:

I dette eksemplet skal vi filtrere DataFrame basert på alderskolonnen med eller (|), og (&) operatør og vise de filtrerte radene ved hjelp av Collect () -metoden.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import col -funksjonen
Fra Pyspark.SQL.Funksjoner importerer col
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [
'Rollno': '001', 'Navn': 'Sravan', 'Age': 23,
'Høyde': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16,
'Høyde': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7,
'Høyde': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9,
'Høyde': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37,
'Høyde': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
#by filtreringsalder større enn 10 og mindre enn 21
trykk (df.Filter ((DF.Alder> 10) & (DF.alder <21)).collect())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringsalder større enn 10 eller mindre enn 21
trykk (df.Filter ((DF.Alder> 10) | (DF.alder <21)).collect())

Produksjon:

[Rad (adresse = 'hyd', alder = 16, høyde = 3.79, name = "ojaswi", rollno = "002", vekt = 34)]
---------------------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "Sravan", rollno = "001", vekt = 67), rad (adresse = 'hyd', alder = 16, høyde = 3.79, name = "Ojaswi", rollno = "002", vekt = 34), rad (adresse = 'Patna', alder = 7, høyde = 2.79, name = "Gnanesh Chowdary", rollno = "003", vekt = 17), rad (adresse = 'hyd', alder = 9, høyde = 3.69, name = "rohith", rollno = "004", vekt = 28), rad (adresse = 'hyd', alder = 37, høyde = 5.59, name = "sridevi", rollno = "005", vekt = 54)]

Metode - 4: filter () med SQL -uttrykk

Her bruker vi filter () -funksjonen for å filtrere Pyspark DataFrame med SQL -uttrykk. Tilstanden er omsluttet av “”. Vi kan imidlertid spesifisere relasjonsoperatør som en betingelse.

Syntaks:

Dataramme.filter (“Dataframe.kolonne_name Operatørverdi ”)

Her godtar filter () tre parametere.

  1. Dataramme.kolonne_navn er kolonnen der filtrering brukes.
  2. Operatør er den relasjonsoperatøren.
  3. Verdien er streng/numerisk verdi sammenlignet med kolonneverdier.

Eksempel:

I dette eksemplet skal vi filtrere DataFrame basert på alders-, høyde-, vekt- og navnekolonner med forskjellige relasjonelle operatører og vise de filtrerte radene ved hjelp av Collect () -metoden.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import col -funksjonen
Fra Pyspark.SQL.Funksjoner importerer col
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [
'Rollno': '001', 'Navn': 'Sravan', 'Age': 23,
'Høyde': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16,
'Høyde': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7,
'Høyde': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9,
'Høyde': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37,
'Høyde': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
#by filtreringsalder som 23
#bruk SQL -uttrykk
trykk (df.filter ("alder == 23").samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringshøyde som 2.79
#bruk SQL -uttrykk
trykk (df.filter ("høyde == 2.79 ").samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringsvekt større enn 30
#bruk SQL -uttrykk
trykk (df.Filter ("Vekt> 30").samle inn())
skrive ut("---------------------------")
#Display DataFrame
#by filtreringsnavn som Sravan
#bruk SQL -uttrykk
trykk (df.filter ("name == 'sravan'").samle inn())

Produksjon:

[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]
---------------------------
[Rad (adresse = 'patna', alder = 7, høyde = 2.79, name = "Gnanesh Chowdary", rollno = "003", vekt = 17)]
---------------------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "Sravan", rollno = "001", vekt = 67), rad (adresse = 'hyd', alder = 16, høyde = 3.79, name = "Ojaswi", rollno = "002", vekt = 34), rad (adresse = 'hyd', alder = 37, høyde = 5.59, name = "sridevi", rollno = "005", vekt = 54)]
---------------------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]

Metode - 4: filter () med strengmetoder

Her bruker vi filter () -funksjonen for å filtrere Pyspark DataFrame med strengmetoder. Disse brukes på kolonnene hvis datatype er streng. De er:

begynner med() - Sjekk starttegnet i de gitte dataene

Syntaks:

Dataramme.Filter (DataFrame.kolonne_navn.Startswith ("karakter")

Her kolonne_navn er kolonnen der filtrering brukes der verdien starter med den gitte karakteren.

slutter med() - Sjekk sluttkarakteren i de gitte dataene.

Syntaks:

Dataramme.Filter (DataFrame.kolonne_navn.Endswith ("karakter")

Her kolonne_navn er kolonnen der filtrering brukes der verdien ender med den gitte karakteren.

inneholder () - Sjekk tegnet inneholder i de gitte dataene.

Syntaks:

Dataramme.Filter (DataFrame.kolonne_navn.inneholder ("karakter")

Her kolonne_navn er kolonnen der filtrering brukes der verdien inneholder med den gitte karakteren.

Eksempel:

I dette eksemplet skal vi filtrere basert på adressekolonnen.

#import Pyspark -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#import col -funksjonen
Fra Pyspark.SQL.Funksjoner importerer col
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [
'Rollno': '001', 'Navn': 'Sravan', 'Age': 23,
'Høyde': 5.79, 'vekt': 67, 'adresse': 'guntur',
'Rollno': '002', 'Navn': 'Ojaswi', 'Age': 16,
'Høyde': 3.79, 'vekt': 34, 'adresse': 'hyd',
'Rollno': '003', 'Navn': 'Gnanesh Chowdary', 'Age': 7,
'Høyde': 2.79, 'Vekt': 17, 'Adresse': 'Patna',
'Rollno': '004', 'Navn': 'Rohith', 'Age': 9,
'Høyde': 3.69, 'vekt': 28, 'adresse': 'hyd',
'Rollno': '005', 'Navn': 'Sridevi', 'Age': 37,
'Høyde': 5.59, 'vekt': 54, 'adresse': 'hyd']]
# Lag DataFrame
df = spark_app.CreateTataFrame (studenter)
#Display DataFrame
#by filtreringsadresse
#Starts med 'H'
trykk (df.Filter (DF.adresse.StartSwith ("H")).samle inn())
skrive ut("-----------------")
#Display DataFrame
#by filtreringsadresse
#ends med 'r'
trykk (df.Filter (DF.adresse.Endswith ("R")).samle inn())
skrive ut("-----------------")
#Display DataFrame
#by filtreringsadresse
#Comntain 'Tu'
trykk (df.Filter (DF.adresse.inneholder ("R")).samle inn())

Produksjon:

[Rad (adresse = 'hyd', alder = 16, høyde = 3.79, name = "Ojaswi", rollno = "002", vekt = 34), rad (adresse = 'hyd', alder = 9, høyde = 3.69, name = "rohith", rollno = "004", vekt = 28), rad (adresse = 'hyd', alder = 37, høyde = 5.59, name = "sridevi", rollno = "005", vekt = 54)]
-----------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]
-----------------
[Rad (adresse = 'guntur', alder = 23, høyde = 5.79, name = "sravan", rollno = "001", vekt = 67)]

Konklusjon

I denne artikkelen diskuterte vi hvordan du bruker en filter () -funksjon med flere metoder på Pyspark DataFrame i Python. Og vi inkluderte alle forholdene med SQL -uttrykk også.