PySpark SelectExpr()

Pyspark Selectexpr



Izmantojot PySpark funkciju selectExpr (), mēs varam tieši novērtēt izteiksmi, neveidojot TABLE vai VIEW. Šī funkcija ir pieejama modulī pyspark.sql.DataFrame, kas ir līdzīgs select() metodei. Izmantojot selectExpr(), mēs varam attēlot kolonnas, lietot kolonnas funkcijas, novērtēt izteiksmes, veikt apkopošanas darbības utt. Ir iespējams arī novērtēt/norādīt vairākas kolonnas vienlaikus.

Pyspark.sql.DataFrame.selectExpr()

Funkcija selectexpr() ņem kolonnas/izteiksmju kopu un atgriež DataFrame, pamatojoties uz norādītajām izteiksmēm/kolonnām. Šajā funkcijā var norādīt vairākas izteiksmes, kuras atdala ar komatu. Lai parādītu DataFrame, mēs varam izmantot show()/collect() funkcijas.

Sintakse:







pyspark_DataFrame_object.selectExpr(“Slejas”/”Izteiksmes”)

Šeit pyspark_DataFrame_object ir ievades PySpark DataFrame.



1. scenārijs: atlasiet kolonnas

Šajā scenārijā mēs redzēsim, kā atlasīt konkrētas kolonnas no PySpark DataFrame, izmantojot funkciju selectExpr ().



Izmantotā izteiksme ir “esošā_kolonna kā jauns_nosaukums”. Šeit esošā_kolonna ir kolonnas nosaukums, kas atrodas DataFrame, un tas tiek parādīts kā new_name (Aliasing).





Piemērs:

Izveidojiet PySpark DataFrame ar nosaukumu “agri_df” ar 5 rindām un kolonnām. Iegūstiet kolonnas “Soil_status” un “Soil_Type” kā “STATUSS” un “TYPE”.

importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# lauksaimniecības dati ar 5 rindām un 5 kolonnām

agri =[{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 2500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 3500 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'Indija' },

{ 'augsnes_veids' : Nav , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 210 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'UK' },

{ 'augsnes_veids' : 'Cits' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 1000 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'Smiltis' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'Indija' }]



# izveidojiet datu rāmi no iepriekšminētajiem datiem

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Iegūstiet augsnes_statusu un augsnes_veidu kā 'STATUSS' un 'TYPE'.

agri_df.selectExpr( 'Augsnes_statuss kā STATUSS' , 'Soil_Type as TYPE' ).show()

Izvade:



2. scenārijs: nosacījumu izteiksmju norādīšana

Šajā scenārijā mēs redzēsim, kā novērtēt nosacījumus funkcijā selectExpr ().

Izmantotā izteiksme ir “existing_column operator value”. Šeit esošā_kolonna ir kolonnas nosaukums, kas atrodas DataFrame, un mēs salīdzinām katru šīs kolonnas vērtību ar virkni/vērtību.

1. piemērs:

Pārbaudiet, vai valsts ir “ASV” vai nē. Šeit tiek izmantots operators vienāds (=).

importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# lauksaimniecības dati ar 5 rindām un 5 kolonnām

agri =[{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 2500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 3500 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'Indija' },

{ 'augsnes_veids' : Nav , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 210 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'UK' },

{ 'augsnes_veids' : 'Cits' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 1000 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'Smiltis' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'Indija' }]



# izveidojiet datu rāmi no iepriekšminētajiem datiem

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Pārbaudiet, vai valsts ir “ASV” vai nē.

agri_df.selectExpr( 'Valsts = 'ASV' ).show()

Izvade:

2. piemērs:

Pārbaudiet, vai augsnes_veids ir NULL vai nav. NULL atslēgvārds pārbauda, ​​vai vērtība ir NULL vai nav. Ja tas ir nulle, tiek atgriezta patiesība. Pretējā gadījumā tiek atgriezta viltus. Pēdējā izteiksme ir “Soil_Type IS NULL”

importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# lauksaimniecības dati ar 5 rindām un 5 kolonnām

agri =[{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 2500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 3500 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'Indija' },

{ 'augsnes_veids' : Nav , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 210 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'UK' },

{ 'augsnes_veids' : 'Cits' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 1000 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'Smiltis' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'Indija' }]



# izveidojiet datu rāmi no iepriekšminētajiem datiem

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Pārbaudiet, vai augsnes tips ir NULL vai nav.

agri_df.selectExpr( 'Soil_Type IS NULL' ).show()

Izvade:

3. scenārijs: izteiksmju novērtēšana

Šajā scenārijā mēs redzēsim, kā norādīt matemātiskās izteiksmes. Izmantotā izteiksme ir “esošā_kolonnas matemātiskā_izteiksme”.

Piemērs:

  1. Parādiet faktisko kolonnu “Acres”.
  2. Pievienojiet 100 kolonnai “Acres”.
  3. No kolonnas “Acres” atņemiet 100.
  4. Reiziniet 100 ar kolonnu “Acres”.
  5. Sadaliet kolonnu “Acres” ar 100.
importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# lauksaimniecības dati ar 5 rindām un 5 kolonnām

agri =[{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 2500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 3500 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'Indija' },

{ 'augsnes_veids' : Nav , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 210 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'UK' },

{ 'augsnes_veids' : 'Cits' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 1000 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'Smiltis' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'Indija' }]



# izveidojiet datu rāmi no iepriekšminētajiem datiem

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Ierakstiet 4 izteiksmes, lai atņemtu, pievienotu, dalītu un reizinātu Akru kolonnu.

agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).show()

Izvade:

4. scenārijs: apkopoto funkciju lietošana

SUM(kolonnas_nosaukums) – Tas novērtē kopējo vērtību norādītajā kolonnā.

MEAN(kolonnas_nosaukums) – Tas novērtē vidējo vērtību norādītajā kolonnā.

MIN(kolonnas_nosaukums) – Tas atgriež minimālo elementu starp visiem elementiem norādītajā kolonnā.

MAX(kolonnas_nosaukums) – Tas atgriež maksimālo elementu starp visiem elementiem norādītajā kolonnā.

Piemērs:

  1. Atrodiet kopējo, vidējo, skaitu, minimālo un maksimālo elementu 'Acres'.
  2. Slejā “Soil_status” atrodiet minimālos un maksimālos elementus.
importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# lauksaimniecības dati ar 5 rindām un 5 kolonnām

agri =[{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 2500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'melns' , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 3500 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'Indija' },

{ 'augsnes_veids' : Nav , 'Apūdeņošanas_pieejamība' : 'Jā' , 'Acres' : 210 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'UK' },

{ 'augsnes_veids' : 'Cits' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 1000 , Augsnes_statuss : 'slapjš' ,
'Valsts' : 'ASV' },

{ 'augsnes_veids' : 'Smiltis' , 'Apūdeņošanas_pieejamība' : 'Nē' , 'Acres' : 500 , Augsnes_statuss : 'sauss' ,
'Valsts' : 'Indija' }]



# izveidojiet datu rāmi no iepriekšminētajiem datiem

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Apkopotas darbības

agri_df.selectExpr( 'SUMMA (Acres)' , 'VIDĒJS (Acres)' , 'COUNT(Acres)' , 'AVG (Acres)' , 'MIN(Acres)' ,
'MAX (Acres)' ).show()

agri_df.selectExpr( 'MIN(augsnes_statuss)' , 'MAX(augsnes_statuss)' ).show()

Izvade:

Secinājums

Mēs apspriedām par funkciju selectExpr (), kas ņem kolonnas/izteikumu kopas un atgriež DataFrame, pamatojoties uz norādītajām izteiksmēm/kolonnām. Kā daļu no tā mēs uzzinājām četrus galvenos scenārijus, kuros ir piemērojams selectExpr(). Šajā funkcijā var norādīt vairākas izteiksmes, kuras atdala ar komatu. Lai izmantotu funkciju selectExpr(), nav jāizveido PAGAIDU SKATS.