PySpark SelectExpr()

Pyspark Selectexpr



Folosind funcția selectExpr() din PySpark, putem evalua direct o expresie fără a crea niciun TABLE sau VIEW. Această funcție este disponibilă în modulul pyspark.sql.DataFrame, care este similar cu metoda select(). Cu selectExpr(), putem afișa coloanele, aplica funcțiile pe coloane, evaluăm expresiile, efectuăm operațiunile de agregare etc. De asemenea, este posibil să evaluăm/specificăm mai multe coloane simultan.

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 pyspark

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)

# 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 pyspark

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)

# 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 pyspark

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)

# 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:

  1. Afișați coloana „Acri”.
  2. Adăugați 100 la coloana „Acri”.
  3. Scădeți 100 din coloana „Acri”.
  4. Înmulțiți 100 cu coloana „Acri”.
  5. Împărțiți coloana „Acri” la 100.
import pyspark

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:

  1. Găsiți elementele totale, medii, numărătoare, minime și maxime ale „Acri”.
  2. Găsiți elementele minime și maxime în coloana „Soil_status”.
import pyspark

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().