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 pysparkda 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 pysparkda 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 pysparkda 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:
- Visualizza la colonna 'Acri' effettiva.
- Aggiungi 100 alla colonna 'Acri'.
- Sottrai 100 dalla colonna 'Acri'.
- Moltiplica 100 con la colonna 'Acres'.
- Dividi la colonna 'Acri' per 100.
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:
- Trova gli elementi totale, medio, conteggio, minimo e massimo di 'Acri'.
- Trova gli elementi minimo e massimo nella colonna 'Soil_status'.
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().