Pyspark.sql.DataFrame.selectExpr()
Funktionen selectexpr() tager kolonnerne/sættet af udtryk og returnerer DataFrame baseret på de angivne udtryk/kolonner. Flere udtryk kan angives i denne funktion, som er adskilt med komma. For at vise DataFrame kan vi bruge show()/collect() funktionerne.
Syntaks:
pyspark_DataFrame_object.selectExpr(“Kolonner”/“Udtryk”)
Her er pyspark_DataFrame_object input PySpark DataFrame.
Scenarie 1: Vælg kolonnerne
I dette scenarie vil vi se, hvordan man vælger de bestemte kolonner fra PySpark DataFrame ved hjælp af selectExpr()-funktionen.
Udtrykket, der bruges, er 'eksisterende_kolonne som nyt_navn'. Her er den eksisterende_kolonne det kolonnenavn, der er til stede i DataFrame, og det vises som nyt_navn (Aliasing).
Eksempel:
Opret en PySpark DataFrame med navnet 'agri_df' med 5 rækker og kolonner. Få kolonnerne 'Jordstatus' og 'Jordtype' som 'STATUS' og 'TYPE'.
importere pysparkfra pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()
# landbrugsdata med 5 rækker og 5 kolonner
agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },
{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },
{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]
# opret datarammen ud fra ovenstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Få Soil_status og Soil_Type som 'STATUS' og 'TYPE'.
agri_df.selectExpr( 'Jordstatus som STATUS' , 'Jord_Type som TYPE' ).at vise()
Produktion:
Scenarie 2: Angivelse af de betingede udtryk
I dette scenarie vil vi se, hvordan betingelserne i selectExpr()-funktionen evalueres.
Udtrykket, der bruges, er 'existing_column operator value'. Her er den eksisterende_kolonne kolonnenavnet, der er til stede i DataFrame, og vi sammenligner hver værdi i denne kolonne med strengen/værdien.
Eksempel 1:
Tjek, om landet er 'USA' eller ej. Lige til (=) operatoren bruges her.
importere pysparkfra pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()
# landbrugsdata med 5 rækker og 5 kolonner
agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },
{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },
{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]
# opret datarammen ud fra ovenstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Tjek, om landet er 'USA' eller ej.
agri_df.selectExpr( 'Land = 'USA'' ).at vise()
Produktion:
Eksempel 2:
Kontroller, om Soil_Type er NULL eller ej. Nøgleordet NULL kontrollerer, om værdien er NULL eller ej. Hvis den er nul, returneres true. Ellers returneres falsk. Det endelige udtryk er 'Soil_Type IS NULL'
importere pysparkfra pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()
# landbrugsdata med 5 rækker og 5 kolonner
agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },
{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },
{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]
# opret datarammen ud fra ovenstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Tjek, om Soil_Type er NULL eller ej.
agri_df.selectExpr( 'Soil_Type ER NULL' ).at vise()
Produktion:
Scenarie 3: Evaluering af udtryk
I dette scenarie vil vi se, hvordan man specificerer de matematiske udtryk. Udtrykket der bruges er 'eksisterende_kolonne matematisk_udtryk'.
Eksempel:
- Vis den faktiske 'Acres' kolonne.
- Tilføj 100 til kolonnen 'Acres'.
- Træk 100 fra kolonnen 'Acres'.
- Gang 100 med kolonnen 'Acres'.
- Divider kolonnen 'Acres' med 100.
fra pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()
# landbrugsdata med 5 rækker og 5 kolonner
agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },
{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },
{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]
# opret datarammen ud fra ovenstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Skriv 4 udtryk for at trække fra, addere, dividere og gange Acres kolonne.
agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).at vise()
Produktion:
Scenarie 4: Anvendelse af aggregerede funktioner
SUM(kolonne_navn) – Den evaluerer den samlede værdi i den angivne kolonne.
MEAN(kolonne_navn) – Den evaluerer gennemsnitsværdien i den angivne kolonne.
MIN(kolonne_navn) – Det returnerer minimumselementet blandt alle elementer i den angivne kolonne.
MAX(kolonne_navn) – Det returnerer det maksimale element blandt alle elementer i den angivne kolonne.
Eksempel:
- Find elementerne i alt, gennemsnit, antal, minimum og maksimum for 'Acres'.
- Find minimums- og maksimumselementerne i kolonnen 'Jordstatus'.
fra pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()
# landbrugsdata med 5 rækker og 5 kolonner
agri =[{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 2500 , 'Jordstatus' : 'Tør' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sort' , 'Irrigation_availability' : 'Ja' , 'Acres' : 3500 , 'Jordstatus' : 'Våd' ,
'Land' : 'Indien' },
{ 'Jordtype' : Ingen , 'Irrigation_availability' : 'Ja' , 'Acres' : 210 , 'Jordstatus' : 'Tør' ,
'Land' : 'UK' },
{ 'Jordtype' : 'Andet' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 1000 , 'Jordstatus' : 'Våd' ,
'Land' : 'USA' },
{ 'Jordtype' : 'Sand' , 'Irrigation_availability' : 'Ingen' , 'Acres' : 500 , 'Jordstatus' : 'Tør' ,
'Land' : 'Indien' }]
# opret datarammen ud fra ovenstående data
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Samlede operationer
agri_df.selectExpr( 'SUM(Acres)' , 'MEAN(Acres)' , 'COUNT(Acres)' , 'AVG(Acres)' , 'MIN(Acres)' ,
'MAX(Acres)' ).at vise()
agri_df.selectExpr( 'MIN(Jordstatus)' , 'MAX(Jordstatus)' ).at vise()
Produktion:
Konklusion
Vi diskuterede om funktionen selectExpr() som tager kolonnerne/sæt af udtryk og returnerer DataFrame baseret på de angivne udtryk/kolonner. Som en del af dette lærte vi de fire store scenarier, hvor selectExpr() er anvendelig. Der kan angives flere udtryk i denne funktion, som er adskilt med komma. Der er ingen grund til at oprette en MIDLERTIGT VISNING for at bruge funktionen selectExpr().