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 pysparkiz 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 pysparkiz 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 pysparkiz 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:
- Prikaži dejanski stolpec »Acres«.
- Dodajte 100 v stolpec »Acres«.
- Od stolpca »Akri« odštejte 100.
- Pomnožite 100 s stolpcem »Acres«.
- Stolpec »Acres« razdelite s 100.
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:
- Poiščite skupne, povprečne, štetne, najmanjše in največje elemente 'Acres'.
- Poiščite najmanjše in največje elemente v stolpcu 'Soil_status'.
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.