Pyspark.sql.DataFrame.selectExpr()
Funcția selectexpr() preia coloanele/setul de expresii și returnează DataFrame pe baza expresiilor/coloanelor specificate. În această funcție pot fi specificate mai multe expresii, care este separată prin virgulă. Pentru a afișa DataFrame, putem folosi funcțiile show()/collect().
Sintaxă:
pyspark_DataFrame_object.selectExpr(„Coloane”/”Expresii”)
Aici, pyspark_DataFrame_object este intrarea PySpark DataFrame.
Scenariul 1: Selectați Coloanele
În acest scenariu, vom vedea cum să selectăm anumite coloane din PySpark DataFrame folosind funcția selectExpr().
Expresia folosită este „coloană_existentă ca nume_nou”. Aici, coloana_existent este numele coloanei care este prezent în DataFrame și este afișat ca nume_nou (Aliasing).
Exemplu:
Creați un PySpark DataFrame numit „agri_df” cu 5 rânduri și coloane. Obțineți coloanele „Soil_status” și „Soil_Type” ca „STATUS” și „TYPE”.
import pysparkdin pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Sugestie Linux” ).getOrCreate()
# date agricole cu 5 rânduri și 5 coloane
agri =[{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 2500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Da' , „Acri” : 3500 , „Starea_solului” : 'Umed' ,
'Țară' : 'India' },
{ „Soil_Type” : Nici unul , „Disponibilitate_irigare” : 'Da' , „Acri” : 210 , „Starea_solului” : 'Uscat' ,
'Țară' : 'REGATUL UNIT' },
{ „Soil_Type” : 'Alte' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 1000 , „Starea_solului” : 'Umed' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Nisip' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'India' }]
# creați cadrul de date din datele de mai sus
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Obțineți Soil_status și Soil_Type ca „STATUS” și „TYPE”.
agri_df.selectExpr( „Soil_status ca STATUS” , „Soil_Type as TYPE” ).spectacol()
Ieșire:
Scenariul 2: Specificarea expresiilor condiționate
În acest scenariu, vom vedea cum să evaluăm condițiile din funcția selectExpr().
Expresia utilizată este „valoarea operatorului existent_coloană”. Aici, existenta_coloană este numele coloanei care este prezent în DataFrame și comparăm fiecare valoare din această coloană cu șirul/valoarea.
Exemplul 1:
Verificați dacă țara este „SUA” sau nu. Operatorul equalto (=) este folosit aici.
import pysparkdin pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Sugestie Linux” ).getOrCreate()
# date agricole cu 5 rânduri și 5 coloane
agri =[{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 2500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Da' , „Acri” : 3500 , „Starea_solului” : 'Umed' ,
'Țară' : 'India' },
{ „Soil_Type” : Nici unul , „Disponibilitate_irigare” : 'Da' , „Acri” : 210 , „Starea_solului” : 'Uscat' ,
'Țară' : 'REGATUL UNIT' },
{ „Soil_Type” : 'Alte' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 1000 , „Starea_solului” : 'Umed' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Nisip' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'India' }]
# creați cadrul de date din datele de mai sus
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Verificați dacă țara este „SUA” sau nu.
agri_df.selectExpr( „Țara = „SUA”” ).spectacol()
Ieșire:
Exemplul 2:
Verificați dacă Soil_Type este NULL sau nu. Cuvântul cheie NULL verifică dacă valoarea este NULL sau nu. Dacă este nul, se returnează true. În caz contrar, se returnează false. Expresia finală este „Soil_Type IS NULL”
import pysparkdin pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Sugestie Linux” ).getOrCreate()
# date agricole cu 5 rânduri și 5 coloane
agri =[{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 2500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Da' , „Acri” : 3500 , „Starea_solului” : 'Umed' ,
'Țară' : 'India' },
{ „Soil_Type” : Nici unul , „Disponibilitate_irigare” : 'Da' , „Acri” : 210 , „Starea_solului” : 'Uscat' ,
'Țară' : 'REGATUL UNIT' },
{ „Soil_Type” : 'Alte' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 1000 , „Starea_solului” : 'Umed' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Nisip' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'India' }]
# creați cadrul de date din datele de mai sus
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Verificați dacă Soil_Type este NULL sau nu.
agri_df.selectExpr( „Soil_Type IS NULL” ).spectacol()
Ieșire:
Scenariul 3: Evaluarea expresiilor
În acest scenariu, vom vedea cum să specificăm expresiile matematice. Expresia folosită este „expresie_matematică_coloană_existentă”.
Exemplu:
- Afișați coloana „Acri”.
- Adăugați 100 la coloana „Acri”.
- Scădeți 100 din coloana „Acri”.
- Înmulțiți 100 cu coloana „Acri”.
- Împărțiți coloana „Acri” la 100.
din pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Sugestie Linux” ).getOrCreate()
# date agricole cu 5 rânduri și 5 coloane
agri =[{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 2500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Da' , „Acri” : 3500 , „Starea_solului” : 'Umed' ,
'Țară' : 'India' },
{ „Soil_Type” : Nici unul , „Disponibilitate_irigare” : 'Da' , „Acri” : 210 , „Starea_solului” : 'Uscat' ,
'Țară' : 'REGATUL UNIT' },
{ „Soil_Type” : 'Alte' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 1000 , „Starea_solului” : 'Umed' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Nisip' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'India' }]
# creați cadrul de date din datele de mai sus
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Scrieți 4 expresii pentru a scădea, adăuga, împărți și înmulți coloana Acres.
agri_df.selectExpr( 'Acri' , 'Acri - 100' , 'Acri * 100' , „Acri + 100” , 'Acri / 100' ).spectacol()
Ieșire:
Scenariul 4: Aplicarea funcțiilor agregate
SUM(nume_coloană) – Evaluează valoarea totală în coloana specificată.
MEAN(nume_coloană) – Evaluează valoarea medie în coloana specificată.
MIN(nume_coloană) – Returnează elementul minim dintre toate elementele din coloana specificată.
MAX(nume_coloană) – Returnează elementul maxim dintre toate elementele din coloana specificată.
Exemplu:
- Găsiți elementele totale, medii, numărătoare, minime și maxime ale „Acri”.
- Găsiți elementele minime și maxime în coloana „Soil_status”.
din pyspark.sql import SparkSession
linuxhint_spark_app = SparkSession.builder.appName( „Sugestie Linux” ).getOrCreate()
# date agricole cu 5 rânduri și 5 coloane
agri =[{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 2500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Negru' , „Disponibilitate_irigare” : 'Da' , „Acri” : 3500 , „Starea_solului” : 'Umed' ,
'Țară' : 'India' },
{ „Soil_Type” : Nici unul , „Disponibilitate_irigare” : 'Da' , „Acri” : 210 , „Starea_solului” : 'Uscat' ,
'Țară' : 'REGATUL UNIT' },
{ „Soil_Type” : 'Alte' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 1000 , „Starea_solului” : 'Umed' ,
'Țară' : 'STATELE UNITE ALE AMERICII' },
{ „Soil_Type” : 'Nisip' , „Disponibilitate_irigare” : 'Nu' , „Acri” : 500 , „Starea_solului” : 'Uscat' ,
'Țară' : 'India' }]
# creați cadrul de date din datele de mai sus
agri_df = linuxhint_spark_app.createDataFrame(agri)
# Operațiuni agregate
agri_df.selectExpr( „SUMA(Acri)” , „MEAN (Acri)” , „COUNT(Acri)” , „AVG(Acri)” , „MIN(Acri)” ,
„MAX(Acri)” ).spectacol()
agri_df.selectExpr( „MIN(Starea_solului)” , „MAX(Starea_solului)” ).spectacol()
Ieșire:
Concluzie
Am discutat despre funcția selectExpr() care preia coloanele/seturile de expresii și returnează DataFrame pe baza expresiilor/coloanelor specificate. Ca parte a acestui lucru, am învățat cele patru scenarii majore în care selectExpr() este aplicabil. În această funcție pot fi specificate mai multe expresii care sunt separate prin virgulă. Nu este nevoie să creați o vizualizare TEMPORARĂ pentru a utiliza funcția selectExpr().