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 pysparkiz 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 pysparkiz 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 pysparkiz 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:
- Prikaži stvarni stupac 'Acres'.
- Dodajte 100 u stupac 'Acre'.
- Oduzmite 100 od stupca 'Akri'.
- Pomnožite 100 sa stupcem 'Acre'.
- Podijelite stupac 'Acre' sa 100.
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:
- Pronađite ukupne, prosječne, zbrojene, minimalne i maksimalne elemente za 'Acre'.
- Pronađite minimalne i maksimalne elemente u stupcu 'Soil_status'.
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().