PySpark SelectExpr()

Pyspark Selectexpr



Utilizzando la funzione selectExpr() in PySpark, possiamo valutare direttamente un'espressione senza creare alcuna TABELLA o VISUALIZZAZIONE. Questa funzione è disponibile nel modulo pyspark.sql.DataFrame che è simile al metodo select(). Con selectExpr(), possiamo visualizzare le colonne, applicare le funzioni sulle colonne, valutare le espressioni, eseguire le operazioni di aggregazione, ecc. È anche possibile valutare/specificare più colonne alla volta.

Pyspark.sql.DataFrame.selectExpr()

La funzione selectexpr() accetta le colonne/set di espressioni e restituisce il DataFrame in base alle espressioni/colonne specificate. In questa funzione possono essere specificate più espressioni separate da virgola. Per visualizzare il DataFrame, possiamo utilizzare le funzioni show()/collect().

Sintassi:







pyspark_DataFrame_object.selectExpr('Colonne'/'Espressioni')

Qui, pyspark_DataFrame_object è l'input PySpark DataFrame.



Scenario 1: selezionare le colonne

In questo scenario, vedremo come selezionare le colonne particolari dal DataFrame PySpark usando la funzione selectExpr().



L'espressione utilizzata è 'colonna_esistente come nuovo_nome'. Qui, la colonna_esistente è il nome della colonna presente nel DataFrame e viene visualizzato come nuovo_nome (Aliasing).





Esempio:

Crea un PySpark DataFrame denominato 'agri_df' con 5 righe e colonne. Ottieni le colonne 'Soil_status' e 'Soil_Type' come 'STATUS' e 'TYPE'.

importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# dati agricoli con 5 righe e 5 colonne

Agri =[{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 2500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 3500 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'India' },

{ 'Tipo_suolo' : Nessuno , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 210 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'UK' },

{ 'Tipo_suolo' : 'Altro' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 1000 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Sabbia' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'India' }]



# crea il dataframe dai dati di cui sopra

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Ottieni Soil_status e Soil_Type come 'STATUS' e 'TYPE'.

agri_df.selectExpr( 'Soil_status come STATUS' , 'Tipo_terreno come TIPO' ).spettacolo()

Produzione:



Scenario 2: specifica delle espressioni condizionali

In questo scenario vedremo come valutare le condizioni all'interno della funzione selectExpr().

L'espressione utilizzata è 'existing_column operator value'. Qui, la colonna_esistente è il nome della colonna presente nel DataFrame e confrontiamo ogni valore in questa colonna con la stringa/valore.

Esempio 1:

Controlla se il paese è 'USA' o meno. Qui viene utilizzato l'operatore equalto (=).

importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# dati agricoli con 5 righe e 5 colonne

Agri =[{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 2500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 3500 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'India' },

{ 'Tipo_suolo' : Nessuno , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 210 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'UK' },

{ 'Tipo_suolo' : 'Altro' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 1000 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Sabbia' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'India' }]



# crea il dataframe dai dati di cui sopra

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Controlla se il paese è 'USA' o meno.

agri_df.selectExpr( 'Paese = 'USA'' ).spettacolo()

Produzione:

Esempio 2:

Controlla se Soil_Type è NULL o meno. La parola chiave NULL controlla se il valore è NULL o meno. Se è nullo, viene restituito true. In caso contrario, viene restituito false. L'espressione finale è 'Soil_Type IS NULL'

importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# dati agricoli con 5 righe e 5 colonne

Agri =[{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 2500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 3500 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'India' },

{ 'Tipo_suolo' : Nessuno , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 210 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'UK' },

{ 'Tipo_suolo' : 'Altro' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 1000 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Sabbia' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'India' }]



# crea il dataframe dai dati di cui sopra

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Controlla se Soil_Type è NULL oppure no.

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

Produzione:

Scenario 3: valutazione delle espressioni

In questo scenario, vedremo come specificare le espressioni matematiche. L'espressione utilizzata è 'existing_column mechanical_expression'.

Esempio:

  1. Visualizza la colonna 'Acri' effettiva.
  2. Aggiungi 100 alla colonna 'Acri'.
  3. Sottrai 100 dalla colonna 'Acri'.
  4. Moltiplica 100 con la colonna 'Acres'.
  5. Dividi la colonna 'Acri' per 100.
importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# dati agricoli con 5 righe e 5 colonne

Agri =[{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 2500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 3500 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'India' },

{ 'Tipo_suolo' : Nessuno , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 210 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'UK' },

{ 'Tipo_suolo' : 'Altro' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 1000 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Sabbia' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'India' }]



# crea il dataframe dai dati di cui sopra

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Scrivi 4 espressioni per sottrarre, aggiungere, dividere e moltiplicare la colonna Acri.

agri_df.selectExpr( 'Acri' , 'Acri - 100' , 'Acri * 100' , 'Acri + 100' , 'Acri / 100' ).spettacolo()

Produzione:

Scenario 4: applicazione delle funzioni di aggregazione

SOMMA(nome_colonna) – Valuta il valore totale nella colonna specificata.

MEDIA(nome_colonna) – Valuta il valore medio nella colonna specificata.

MIN(nome_colonna) – Restituisce l'elemento minimo tra tutti gli elementi nella colonna specificata.

MAX(nome_colonna) – Restituisce l'elemento massimo tra tutti gli elementi nella colonna specificata.

Esempio:

  1. Trova gli elementi totale, medio, conteggio, minimo e massimo di 'Acri'.
  2. Trova gli elementi minimo e massimo nella colonna 'Soil_status'.
importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# dati agricoli con 5 righe e 5 colonne

Agri =[{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 2500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Nero' , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 3500 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'India' },

{ 'Tipo_suolo' : Nessuno , 'Irrigazione_disponibilità' : 'SÌ' , 'Acri' : 210 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'UK' },

{ 'Tipo_suolo' : 'Altro' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 1000 , 'Stato_suolo' : 'Bagnato' ,
'Paese' : 'STATI UNITI D'AMERICA' },

{ 'Tipo_suolo' : 'Sabbia' , 'Irrigazione_disponibilità' : 'NO' , 'Acri' : 500 , 'Stato_suolo' : 'Asciutto' ,
'Paese' : 'India' }]



# crea il dataframe dai dati di cui sopra

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Operazioni aggregate

agri_df.selectExpr( 'SOMMA(Acri)' , 'MEAN (Acri)' , 'COUNT(Acri)' , 'MEDIA (Acri)' , 'MIN(Acri)' ,
'MAX(Acri)' ).spettacolo()

agri_df.selectExpr( 'MIN(stato_suolo)' , 'MAX(stato_suolo)' ).spettacolo()

Produzione:

Conclusione

Abbiamo discusso della funzione selectExpr() che prende le colonne/insiemi di espressioni e restituisce il DataFrame in base alle espressioni/colonne specificate. Come parte di questo, abbiamo appreso i quattro principali scenari in cui selectExpr() è applicabile. In questa funzione possono essere specificate più espressioni separate da virgola. Non è necessario creare una VISUALIZZAZIONE TEMPORANEA per utilizzare la funzione selectExpr().