PySpark SelectExpr()

Pyspark Selectexpr



Koristeći funkciju selectExpr() u PySparku, možemo izravno procijeniti izraz bez stvaranja bilo kakve TABLICE ili PRIKAZA. Ova je funkcija dostupna u modulu pyspark.sql.DataFrame koji je sličan metodi select(). Pomoću selectExpr() možemo prikazati stupce, primijeniti funkcije na stupce, procijeniti izraze, izvršiti operacije združivanja itd. Također je moguće procijeniti/odrediti više stupaca odjednom.

Pyspark.sql.DataFrame.selectExpr()

Funkcija selectexpr() uzima stupce/skup izraza i vraća DataFrame na temelju navedenih izraza/stupaca. Višestruki izrazi mogu se navesti u ovoj funkciji koja je odvojena zarezom. Za prikaz DataFramea možemo koristiti funkcije show()/collect().

Sintaksa:







pyspark_DataFrame_object.selectExpr(“Stupci”/”Izrazi”)

Ovdje je pyspark_DataFrame_object ulazni PySpark DataFrame.



Scenarij 1: Odaberite stupce

U ovom scenariju vidjet ćemo kako odabrati određene stupce iz PySpark DataFramea pomoću funkcije selectExpr().



Izraz koji se koristi je “existing_column as new_name”. Ovdje je postojeći_stupac naziv stupca koji je prisutan u DataFrameu i prikazuje se kao novi_naziv (Aliasing).





Primjer:

Napravite PySpark DataFrame pod nazivom “agri_df” s 5 redaka i stupaca. Nabavite stupce “Soil_status” i “Soil_Type” kao “STATUS” i “TYPE”.

uvoz pyspark

iz pyspark.sql uvesti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()

# poljoprivredni podaci s 5 redaka i 5 stupaca

agri =[{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 2500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 3500 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'Indija' },

{ 'Vrsta_tla' : Nijedan , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 210 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'UK' },

{ 'Vrsta_tla' : 'Ostalo' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 1000 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Pijesak' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'Indija' }]



# kreirajte podatkovni okvir iz gornjih podataka

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Dobijte Soil_status i Soil_Type kao 'STATUS' i 'TYPE'.

agri_df.selectExpr( 'Stanje_tla kao STATUS' , 'Vrsta_tla kao TYPE' ).pokazati()

Izlaz:



Scenarij 2: Određivanje uvjetnih izraza

U ovom ćemo scenariju vidjeti kako procijeniti uvjete unutar funkcije selectExpr().

Izraz koji se koristi je “existing_column operator value”. Ovdje je postojeći_stupac naziv stupca koji je prisutan u DataFrameu i uspoređujemo svaku vrijednost u ovom stupcu s nizom/vrijednošću.

Primjer 1:

Provjerite je li država 'SAD' ili ne. Ovdje se koristi operator equalto (=).

uvoz pyspark

iz pyspark.sql uvesti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()

# poljoprivredni podaci s 5 redaka i 5 stupaca

agri =[{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 2500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 3500 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'Indija' },

{ 'Vrsta_tla' : Nijedan , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 210 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'UK' },

{ 'Vrsta_tla' : 'Ostalo' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 1000 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Pijesak' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'Indija' }]



# kreirajte podatkovni okvir iz gornjih podataka

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Provjerite je li država 'SAD' ili ne.

agri_df.selectExpr( 'Država = 'SAD'' ).pokazati()

Izlaz:

Primjer 2:

Provjerite je li Soil_Type NULL ili ne. Ključna riječ NULL provjerava je li vrijednost NULL ili nije. Ako je null, vraća se istina. Inače se vraća false. Konačni izraz je 'Soil_Type IS NULL'

uvoz pyspark

iz pyspark.sql uvesti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()

# poljoprivredni podaci s 5 redaka i 5 stupaca

agri =[{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 2500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 3500 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'Indija' },

{ 'Vrsta_tla' : Nijedan , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 210 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'UK' },

{ 'Vrsta_tla' : 'Ostalo' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 1000 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Pijesak' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'Indija' }]



# kreirajte podatkovni okvir iz gornjih podataka

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Provjerite je li Soil_Type NULL ili ne.

agri_df.selectExpr( 'Tip_tla JE NULL' ).pokazati()

Izlaz:

Scenarij 3: Procjena izraza

U ovom scenariju vidjet ćemo kako specificirati matematičke izraze. Izraz koji se koristi je “matematički_izraz postojećeg_stupca”.

Primjer:

  1. Prikaži stvarni stupac 'Acres'.
  2. Dodajte 100 u stupac 'Acre'.
  3. Oduzmite 100 od stupca 'Akri'.
  4. Pomnožite 100 sa stupcem 'Acre'.
  5. Podijelite stupac 'Acre' sa 100.
uvoz pyspark

iz pyspark.sql uvesti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()

# poljoprivredni podaci s 5 redaka i 5 stupaca

agri =[{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 2500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 3500 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'Indija' },

{ 'Vrsta_tla' : Nijedan , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 210 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'UK' },

{ 'Vrsta_tla' : 'Ostalo' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 1000 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Pijesak' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'Indija' }]



# kreirajte podatkovni okvir iz gornjih podataka

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Napišite 4 izraza za oduzimanje, zbrajanje, dijeljenje i množenje stupca Acres.

agri_df.selectExpr( 'Akri' , 'Akri - 100' , 'Akri * 100' , 'Akri + 100' , 'Akri / 100' ).pokazati()

Izlaz:

Scenarij 4: Primjena agregatnih funkcija

SUM(naziv_stupca) – Procjenjuje ukupnu vrijednost u navedenom stupcu.

MEAN(naziv_stupca) – Procjenjuje prosječnu vrijednost u navedenom stupcu.

MIN(naziv_stupca) – Vraća najmanji element među svim elementima u navedenom stupcu.

MAX(naziv_stupca) – Vraća najveći broj elemenata među svim elementima u navedenom stupcu.

Primjer:

  1. Pronađite ukupne, prosječne, zbrojene, minimalne i maksimalne elemente za 'Acre'.
  2. Pronađite minimalne i maksimalne elemente u stupcu 'Soil_status'.
uvoz pyspark

iz pyspark.sql uvesti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Savjet za Linux' ).getOrCreate()

# poljoprivredni podaci s 5 redaka i 5 stupaca

agri =[{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 2500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Crno' , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 3500 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'Indija' },

{ 'Vrsta_tla' : Nijedan , 'dostupnost_navodnjavanja' : 'Da' , 'Akri' : 210 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'UK' },

{ 'Vrsta_tla' : 'Ostalo' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 1000 , 'Stanje_tla' : 'Mokro' ,
'Zemlja' : 'SAD' },

{ 'Vrsta_tla' : 'Pijesak' , 'dostupnost_navodnjavanja' : 'Ne' , 'Akri' : 500 , 'Stanje_tla' : 'suho' ,
'Zemlja' : 'Indija' }]



# kreirajte podatkovni okvir iz gornjih podataka

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Skupne operacije

agri_df.selectExpr( 'SUM(Akri)' , 'SREDNJA (Akri)' , 'COUNT(Akri)' , 'PROSJEČNA (Akri)' , 'MIN(Akri)' ,
'MAX (Akri)' ).pokazati()

agri_df.selectExpr( 'MIN(status_tla)' , 'MAX(status_tla)' ).pokazati()

Izlaz:

Zaključak

Raspravljali smo o funkciji selectExpr() koja uzima stupce/skupove izraza i vraća DataFrame na temelju navedenih izraza/stupaca. Kao dio toga, naučili smo četiri glavna scenarija u kojima je selectExpr() primjenjiv. U ovoj funkciji može se navesti više izraza koji su odvojeni zarezom. Nema potrebe za stvaranjem PRIVREMENOG PRIKAZA za korištenje funkcije selectExpr().