PySpark SelectExpr()

Pyspark Selectexpr



A PySpark selectExpr() függvényének használatával közvetlenül kiértékelhetünk egy kifejezést TABLE vagy VIEW létrehozása nélkül. Ez a függvény a pyspark.sql.DataFrame modulban érhető el, amely hasonló a select() metódushoz. A selectExpr() segítségével megjeleníthetjük az oszlopokat, alkalmazhatjuk az oszlopokon a függvényeket, kiértékelhetjük a kifejezéseket, végrehajthatjuk az összesítési műveleteket stb. Lehetőség van több oszlop egyidejű kiértékelésére/meghatározására is.

Pyspark.sql.DataFrame.selectExpr()

A selectexpr() függvény veszi az oszlopokat/kifejezéskészleteket, és a megadott kifejezések/oszlopok alapján adja vissza a DataFrame-et. Ebben a függvényben több kifejezés is megadható, amelyeket vesszővel kell elválasztani. A DataFrame megjelenítéséhez a show()/collect() függvényeket használhatjuk.

Szintaxis:







pyspark_DataFrame_object.selectExpr('Oszlopok'/'Kifejezések')

Itt a pyspark_DataFrame_object a bemeneti PySpark DataFrame.



1. forgatókönyv: Válassza ki az oszlopokat

Ebben a forgatókönyvben látni fogjuk, hogyan választhatjuk ki az adott oszlopokat a PySpark DataFrame-ből a selectExpr() függvény segítségével.



A használt kifejezés a „meglévő_oszlop új_névként”. Itt a létező_oszlop az az oszlopnév, amely a DataFrame-ben található, és új_névként (Aliasing) jelenik meg.





Példa:

Hozzon létre egy „agri_df” nevű PySpark DataFrame-et 5 sorból és oszlopból. Szerezze be a „Soil_status” és „Soil_Type” oszlopot „STATUS” és „TYPE” néven.

import pyspark

a pyspark.sql-ből importálja a SparkSession-t

linuxhint_spark_app = SparkSession.builder.appName( 'Linux tipp' ).getOrCreate()

# gazdálkodási adatok 5 sorból és 5 oszlopból

agri =[{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 2500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 3500 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'India' },

{ 'Soil_Type' : Egyik sem , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 210 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'UK' },

{ 'Soil_Type' : 'Egyéb' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 1000 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Homok' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'India' }]



# hozza létre az adatkeretet a fenti adatokból

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Szerezze be a Soil_status és Soil_Type értékeket 'STATUS' és 'TYPE' néven.

agri_df.selectExpr( 'Soil_status as STATUS' , 'Soil_Type mint TYPE' ).előadás()

Kimenet:



2. forgatókönyv: A feltételes kifejezések megadása

Ebben a forgatókönyvben látni fogjuk, hogyan értékeljük ki a selectExpr() függvényen belüli feltételeket.

A használt kifejezés a „meglévő_oszlop operátorérték”. Itt a létező_oszlop a DataFrame-ben található oszlopnév, és az oszlopban lévő értékeket összehasonlítjuk a karakterlánccal/értékkel.

1. példa:

Ellenőrizze, hogy az ország „USA”-e vagy sem. Itt az egyenlő (=) operátort használjuk.

import pyspark

a pyspark.sql-ből importálja a SparkSession-t

linuxhint_spark_app = SparkSession.builder.appName( 'Linux tipp' ).getOrCreate()

# gazdálkodási adatok 5 sorból és 5 oszlopból

agri =[{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 2500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 3500 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'India' },

{ 'Soil_Type' : Egyik sem , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 210 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'UK' },

{ 'Soil_Type' : 'Egyéb' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 1000 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Homok' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'India' }]



# hozza létre az adatkeretet a fenti adatokból

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Ellenőrizze, hogy az ország „USA”-e vagy sem.

agri_df.selectExpr( 'Ország = 'USA' ).előadás()

Kimenet:

2. példa:

Ellenőrizze, hogy a Soil_Type értéke NULL-e vagy sem. A NULL kulcsszó ellenőrzi, hogy az érték NULL-e vagy sem. Ha ez nulla, akkor igazat ad vissza. Ellenkező esetben false kerül visszaadásra. A végső kifejezés a „Soil_Type IS NULL”

import pyspark

a pyspark.sql-ből importálja a SparkSession-t

linuxhint_spark_app = SparkSession.builder.appName( 'Linux tipp' ).getOrCreate()

# gazdálkodási adatok 5 sorból és 5 oszlopból

agri =[{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 2500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 3500 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'India' },

{ 'Soil_Type' : Egyik sem , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 210 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'UK' },

{ 'Soil_Type' : 'Egyéb' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 1000 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Homok' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'India' }]



# hozza létre az adatkeretet a fenti adatokból

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Ellenőrizze, hogy a Soil_Type értéke NULL-e vagy sem.

agri_df.selectExpr( 'Soil_Type IS NULL' ).előadás()

Kimenet:

3. forgatókönyv: A kifejezések kiértékelése

Ebben a forgatókönyvben látni fogjuk, hogyan kell megadni a matematikai kifejezéseket. A használt kifejezés a „meglévő_oszlop matematikai_kifejezés”.

Példa:

  1. Jelenítse meg a tényleges „Acres” oszlopot.
  2. Adjon hozzá 100-at az „Acres” oszlophoz.
  3. Vonjon le 100-at az „Acres” oszlopból.
  4. Szorozzuk meg 100-zal az „Acres” oszlopot.
  5. Ossza el az „Acres” oszlopot 100-zal.
import pyspark

a pyspark.sql-ből importálja a SparkSession-t

linuxhint_spark_app = SparkSession.builder.appName( 'Linux tipp' ).getOrCreate()

# gazdálkodási adatok 5 sorból és 5 oszlopból

agri =[{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 2500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 3500 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'India' },

{ 'Soil_Type' : Egyik sem , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 210 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'UK' },

{ 'Soil_Type' : 'Egyéb' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 1000 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Homok' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'India' }]



# hozza létre az adatkeretet a fenti adatokból

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Írjon 4 kifejezést az Acres oszlop kivonásához, összeadásához, osztásához és szorzásához.

agri_df.selectExpr( 'Acres' , 'Acres - 100' , 'Acres * 100' , 'Acres + 100' , 'Acres / 100' ).előadás()

Kimenet:

4. forgatókönyv: Az összesített függvények alkalmazása

SZUM(oszlop_neve) – A megadott oszlopban lévő összértéket értékeli.

MEAN(oszlop_neve) – A megadott oszlop átlagértékét értékeli.

MIN(oszlop_neve) – A megadott oszlopban lévő összes elem közül a minimális elemet adja vissza.

MAX(oszlop_neve) – A megadott oszlopban lévő összes elem közül a maximális elemet adja vissza.

Példa:

  1. Keresse meg az „Acres” összes, átlagos, számszerű, minimális és maximális elemét.
  2. Keresse meg a minimális és maximális elemeket a „Soil_status” oszlopban.
import pyspark

a pyspark.sql-ből importálja a SparkSession-t

linuxhint_spark_app = SparkSession.builder.appName( 'Linux tipp' ).getOrCreate()

# gazdálkodási adatok 5 sorból és 5 oszlopból

agri =[{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 2500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Fekete' , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 3500 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'India' },

{ 'Soil_Type' : Egyik sem , 'öntözési_elérhetőség' : 'Igen' , 'Acres' : 210 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'UK' },

{ 'Soil_Type' : 'Egyéb' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 1000 , 'talaj_állapota' : 'Nedves' ,
'Ország' : 'EGYESÜLT ÁLLAMOK' },

{ 'Soil_Type' : 'Homok' , 'öntözési_elérhetőség' : 'Nem' , 'Acres' : 500 , 'talaj_állapota' : 'Száraz' ,
'Ország' : 'India' }]



# hozza létre az adatkeretet a fenti adatokból

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Összesített műveletek

agri_df.selectExpr( 'SZUM (Acres)' , 'MEAN (Acres)' , 'COUNT(Acres)' , 'AVG (Acres)' , 'MIN (Acres)' ,
'MAX (Acres)' ).előadás()

agri_df.selectExpr( 'MIN(talaj állapota)' , 'MAX(talaj állapota)' ).előadás()

Kimenet:

Következtetés

Beszéltünk a selectExpr() függvényről, amely az oszlopokat/kifejezéskészleteket veszi, és a megadott kifejezések/oszlopok alapján adja vissza a DataFrame-et. Ennek részeként megismertük a négy fő forgatókönyvet, amelyekben a selectExpr() alkalmazható. Ebben a függvényben több kifejezés is megadható, amelyek vesszővel vannak elválasztva. A selectExpr() függvény használatához nincs szükség IDEIGLENES NÉZET létrehozására.