PySpark SelectExpr()

Pyspark Selectexpr



Z uporabo funkcije selectExpr() v PySparku lahko neposredno ovrednotimo izraz, ne da bi ustvarili TABLE ali VIEW. Ta funkcija je na voljo v modulu pyspark.sql.DataFrame, ki je podoben metodi select(). Z selectExpr() lahko prikažemo stolpce, uporabimo funkcije na stolpcih, ovrednotimo izraze, izvedemo operacije združevanja itd. Prav tako je mogoče ovrednotiti/določiti več stolpcev hkrati.

Pyspark.sql.DataFrame.selectExpr()

Funkcija selectexpr() vzame stolpce/niz izrazov in vrne DataFrame na podlagi navedenih izrazov/stolpcev. V tej funkciji je mogoče določiti več izrazov, ki so ločeni z vejico. Za prikaz DataFrame lahko uporabimo funkcije show()/collect().

Sintaksa:







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

Tukaj je pyspark_DataFrame_object vhodni PySpark DataFrame.



1. scenarij: izberite stolpce

V tem scenariju bomo videli, kako izbrati določene stolpce iz PySpark DataFrame s funkcijo selectExpr().



Izraz, ki se uporablja, je »obstoječi_stolpec kot novo_ime«. Tu je obstoječ_stolpec ime stolpca, ki je prisoten v podatkovnem okviru in je prikazano kot novo_ime (vzdevek).





primer:

Ustvarite PySpark DataFrame z imenom 'agri_df' s 5 vrsticami in stolpci. Pridobite stolpca »Soil_status« in »Soil_Type« kot »STATUS« in »TYPE«.

uvozi pyspark

iz pyspark.sql uvozi SparkSession

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

# podatki o kmetijstvu s 5 vrsticami in 5 stolpci

agri =[{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'ne' , 'Acres' : 2500 , 'Stanje_tal' : 'suho' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'Da' , 'Acres' : 3500 , 'Stanje_tal' : 'mokra' ,
'Država' : 'Indija' },

{ 'Soil_Type' : Noben , 'Irigation_availability' : 'Da' , 'Acres' : 210 , 'Stanje_tal' : 'suho' ,
'Država' : 'UK' },

{ 'Soil_Type' : 'Drugo' , 'Irigation_availability' : 'ne' , 'Acres' : 1000 , 'Stanje_tal' : 'mokra' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'pesek' , 'Irigation_availability' : 'ne' , 'Acres' : 500 , 'Stanje_tal' : 'suho' ,
'Država' : 'Indija' }]



# ustvarite podatkovni okvir iz zgornjih podatkov

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Pridobite Soil_status in Soil_Type kot 'STATUS' in 'TYPE'.

agri_df.selectExpr( 'Stanje_tal kot STATUS' , 'Soil_Type kot TYPE' ).show()

Izhod:



2. scenarij: Določanje pogojnih izrazov

V tem scenariju bomo videli, kako ovrednotiti pogoje znotraj funkcije selectExpr().

Izraz, ki se uporablja, je »vrednost operatorja obstoječega_stolpca«. Tu je obstoječ_stolpec ime stolpca, ki je prisoten v DataFrame, in vsako vrednost v tem stolpcu primerjamo z nizom/vrednostjo.

Primer 1:

Preverite, ali je država »ZDA« ali ne. Tukaj je uporabljen operator equalto (=).

uvozi pyspark

iz pyspark.sql uvozi SparkSession

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

# podatki o kmetijstvu s 5 vrsticami in 5 stolpci

agri =[{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'ne' , 'Acres' : 2500 , 'Stanje_tal' : 'suho' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'Da' , 'Acres' : 3500 , 'Stanje_tal' : 'mokra' ,
'Država' : 'Indija' },

{ 'Soil_Type' : Noben , 'Irigation_availability' : 'Da' , 'Acres' : 210 , 'Stanje_tal' : 'suho' ,
'Država' : 'UK' },

{ 'Soil_Type' : 'Drugo' , 'Irigation_availability' : 'ne' , 'Acres' : 1000 , 'Stanje_tal' : 'mokra' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'pesek' , 'Irigation_availability' : 'ne' , 'Acres' : 500 , 'Stanje_tal' : 'suho' ,
'Država' : 'Indija' }]



# ustvarite podatkovni okvir iz zgornjih podatkov

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Preverite, ali je država 'ZDA' ali ne.

agri_df.selectExpr( 'Država = 'ZDA'' ).show()

Izhod:

Primer 2:

Preverite, ali je Soil_Type NULL ali ne. Ključna beseda NULL preveri, ali je vrednost NULL ali ne. Če je nič, se vrne true. V nasprotnem primeru se vrne false. Končni izraz je 'Soil_Type IS NULL'

uvozi pyspark

iz pyspark.sql uvozi SparkSession

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

# podatki o kmetijstvu s 5 vrsticami in 5 stolpci

agri =[{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'ne' , 'Acres' : 2500 , 'Stanje_tal' : 'suho' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'Da' , 'Acres' : 3500 , 'Stanje_tal' : 'mokra' ,
'Država' : 'Indija' },

{ 'Soil_Type' : Noben , 'Irigation_availability' : 'Da' , 'Acres' : 210 , 'Stanje_tal' : 'suho' ,
'Država' : 'UK' },

{ 'Soil_Type' : 'Drugo' , 'Irigation_availability' : 'ne' , 'Acres' : 1000 , 'Stanje_tal' : 'mokra' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'pesek' , 'Irigation_availability' : 'ne' , 'Acres' : 500 , 'Stanje_tal' : 'suho' ,
'Država' : 'Indija' }]



# ustvarite podatkovni okvir iz zgornjih podatkov

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Preverite, ali je Soil_Type NULL ali ne.

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

Izhod:

Scenarij 3: Vrednotenje izrazov

V tem scenariju bomo videli, kako podati matematične izraze. Uporabljeni izraz je »matematični_izraz_obstoječega_stolpca«.

primer:

  1. Prikaži dejanski stolpec »Acres«.
  2. Dodajte 100 v stolpec »Acres«.
  3. Od stolpca »Akri« odštejte 100.
  4. Pomnožite 100 s stolpcem »Acres«.
  5. Stolpec »Acres« razdelite s 100.
uvozi pyspark

iz pyspark.sql uvozi SparkSession

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

# podatki o kmetijstvu s 5 vrsticami in 5 stolpci

agri =[{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'ne' , 'Acres' : 2500 , 'Stanje_tal' : 'suho' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'Da' , 'Acres' : 3500 , 'Stanje_tal' : 'mokra' ,
'Država' : 'Indija' },

{ 'Soil_Type' : Noben , 'Irigation_availability' : 'Da' , 'Acres' : 210 , 'Stanje_tal' : 'suho' ,
'Država' : 'UK' },

{ 'Soil_Type' : 'Drugo' , 'Irigation_availability' : 'ne' , 'Acres' : 1000 , 'Stanje_tal' : 'mokra' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'pesek' , 'Irigation_availability' : 'ne' , 'Acres' : 500 , 'Stanje_tal' : 'suho' ,
'Država' : 'Indija' }]



# ustvarite podatkovni okvir iz zgornjih podatkov

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Napišite 4 izraze za odštevanje, seštevanje, deljenje in množenje stolpca Acres.

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

Izhod:

Scenarij 4: Uporaba agregatnih funkcij

SUM(ime_stolpca) – Oceni skupno vrednost v podanem stolpcu.

MEAN(ime_stolpca) – Ocenjuje povprečno vrednost v določenem stolpcu.

MIN(ime_stolpca) – Vrne najmanjši element med vsemi elementi v navedenem stolpcu.

MAX(ime_stolpca) – Vrne največji element med vsemi elementi v navedenem stolpcu.

primer:

  1. Poiščite skupne, povprečne, štetne, najmanjše in največje elemente 'Acres'.
  2. Poiščite najmanjše in največje elemente v stolpcu 'Soil_status'.
uvozi pyspark

iz pyspark.sql uvozi SparkSession

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

# podatki o kmetijstvu s 5 vrsticami in 5 stolpci

agri =[{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'ne' , 'Acres' : 2500 , 'Stanje_tal' : 'suho' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'Črna' , 'Irigation_availability' : 'Da' , 'Acres' : 3500 , 'Stanje_tal' : 'mokra' ,
'Država' : 'Indija' },

{ 'Soil_Type' : Noben , 'Irigation_availability' : 'Da' , 'Acres' : 210 , 'Stanje_tal' : 'suho' ,
'Država' : 'UK' },

{ 'Soil_Type' : 'Drugo' , 'Irigation_availability' : 'ne' , 'Acres' : 1000 , 'Stanje_tal' : 'mokra' ,
'Država' : 'ZDA' },

{ 'Soil_Type' : 'pesek' , 'Irigation_availability' : 'ne' , 'Acres' : 500 , 'Stanje_tal' : 'suho' ,
'Država' : 'Indija' }]



# ustvarite podatkovni okvir iz zgornjih podatkov

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Skupne operacije

agri_df.selectExpr( 'SUM(akri)' , 'SREDNJE (Akri)' , 'COUNT(Akri)' , 'AVG (akri)' , 'MIN (akri)' ,
'MAX (akri)' ).show()

agri_df.selectExpr( 'MIN(stanje_tal)' , 'MAX(Stanje_tal)' ).show()

Izhod:

Zaključek

Razpravljali smo o funkciji selectExpr(), ki sprejme stolpce/nabore izrazov in vrne DataFrame na podlagi navedenih izrazov/stolpcev. Kot del tega smo se naučili štiri glavne scenarije, v katerih je selectExpr() uporaben. V tej funkciji je mogoče določiti več izrazov, ki so ločeni z vejico. Za uporabo funkcije selectExpr() ni treba ustvariti ZAČASNEGA POGLEDA.