PySpark SelectExpr()

Pyspark Selectexpr



Pomocí funkce selectExpr() v PySpark můžeme přímo vyhodnotit výraz, aniž bychom vytvořili jakoukoli TABLE nebo VIEW. Tato funkce je dostupná v modulu pyspark.sql.DataFrame, který je podobný metodě select(). Pomocí selectExpr() můžeme zobrazit sloupce, aplikovat funkce na sloupce, vyhodnocovat výrazy, provádět agregační operace atd. Je také možné vyhodnocovat/specifikovat více sloupců najednou.

Pyspark.sql.DataFrame.selectExpr()

Funkce selectexpr() přebírá sloupce/množinu výrazů a vrací DataFrame na základě zadaných výrazů/sloupců. V této funkci lze zadat více výrazů, které se oddělují čárkou. K zobrazení DataFrame můžeme použít funkce show()/collect().

Syntax:







pyspark_DataFrame_object.selectExpr(“Sloupce”/”Výrazy”)

Zde je pyspark_DataFrame_object vstupním PySpark DataFrame.



Scénář 1: Vyberte sloupce

V tomto scénáři uvidíme, jak vybrat konkrétní sloupce z PySpark DataFrame pomocí funkce selectExpr().



Použitý výraz je „existující_sloupec jako nový_název“. Zde je existující_sloupec název sloupce, který je přítomen v DataFrame a zobrazuje se jako nový_název (Aliasing).





Příklad:

Vytvořte PySpark DataFrame s názvem „agri_df“ s 5 řádky a sloupci. Získejte sloupce „Soil_status“ a „Soil_Type“ jako „STATUS“ a „TYPE“.

importovat pyspark

z pyspark.sql importujte SparkSession

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

# farmářské údaje s 5 řádky a 5 sloupci

agri =[{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ne' , 'Acres' : 2500 , 'Soil_status' : 'Schnout' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ano' , 'Acres' : 3500 , 'Soil_status' : 'mokrý' ,
'Země' : 'Indie' },

{ 'Soil_Type' : Žádný , 'Irigation_availability' : 'Ano' , 'Acres' : 210 , 'Soil_status' : 'Schnout' ,
'Země' : 'SPOJENÉ KRÁLOVSTVÍ' },

{ 'Soil_Type' : 'Jiný' , 'Irigation_availability' : 'Ne' , 'Acres' : 1000 , 'Soil_status' : 'mokrý' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Písek' , 'Irigation_availability' : 'Ne' , 'Acres' : 500 , 'Soil_status' : 'Schnout' ,
'Země' : 'Indie' }]



# vytvořte datový rámec z výše uvedených dat

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Získejte Soil_status a Soil_Type jako 'STATUS' a 'TYPE'.

agri_df.selectExpr( 'Soil_status as STATUS' , 'Soil_Type jako TYPE' ).ukázat()

Výstup:



Scénář 2: Určení podmíněných výrazů

V tomto scénáři uvidíme, jak vyhodnotit podmínky v rámci funkce selectExpr().

Použitý výraz je „hodnota operátoru existujícího_sloupce“. Zde je existující_sloupec název sloupce, který je přítomen v DataFrame a každou hodnotu v tomto sloupci porovnáváme s řetězcem/hodnotou.

Příklad 1:

Zkontrolujte, zda je země „USA“ nebo ne. Je zde použit operátor equalto (=).

importovat pyspark

z pyspark.sql importujte SparkSession

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

# farmářské údaje s 5 řádky a 5 sloupci

agri =[{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ne' , 'Acres' : 2500 , 'Soil_status' : 'Schnout' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ano' , 'Acres' : 3500 , 'Soil_status' : 'mokrý' ,
'Země' : 'Indie' },

{ 'Soil_Type' : Žádný , 'Irigation_availability' : 'Ano' , 'Acres' : 210 , 'Soil_status' : 'Schnout' ,
'Země' : 'SPOJENÉ KRÁLOVSTVÍ' },

{ 'Soil_Type' : 'Jiný' , 'Irigation_availability' : 'Ne' , 'Acres' : 1000 , 'Soil_status' : 'mokrý' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Písek' , 'Irigation_availability' : 'Ne' , 'Acres' : 500 , 'Soil_status' : 'Schnout' ,
'Země' : 'Indie' }]



# vytvořte datový rámec z výše uvedených dat

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Zkontrolujte, zda je země „USA“ nebo ne.

agri_df.selectExpr( 'Země = 'USA'' ).ukázat()

Výstup:

Příklad 2:

Zkontrolujte, zda je Soil_Type NULL nebo ne. Klíčové slovo NULL kontroluje, zda je hodnota NULL nebo ne. Pokud je null, vrátí se true. V opačném případě je vrácena hodnota false. Konečný výraz je „Soil_Type IS NULL“

importovat pyspark

z pyspark.sql importujte SparkSession

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

# farmářské údaje s 5 řádky a 5 sloupci

agri =[{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ne' , 'Acres' : 2500 , 'Soil_status' : 'Schnout' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ano' , 'Acres' : 3500 , 'Soil_status' : 'mokrý' ,
'Země' : 'Indie' },

{ 'Soil_Type' : Žádný , 'Irigation_availability' : 'Ano' , 'Acres' : 210 , 'Soil_status' : 'Schnout' ,
'Země' : 'SPOJENÉ KRÁLOVSTVÍ' },

{ 'Soil_Type' : 'Jiný' , 'Irigation_availability' : 'Ne' , 'Acres' : 1000 , 'Soil_status' : 'mokrý' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Písek' , 'Irigation_availability' : 'Ne' , 'Acres' : 500 , 'Soil_status' : 'Schnout' ,
'Země' : 'Indie' }]



# vytvořte datový rámec z výše uvedených dat

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Zkontrolujte, zda je Soil_Type NULL nebo ne.

agri_df.selectExpr( 'Soil_Type IS NULL' ).ukázat()

Výstup:

Scénář 3: Vyhodnocení výrazů

V tomto scénáři uvidíme, jak specifikovat matematické výrazy. Použitý výraz je „existující_sloupec mathematical_expression“.

Příklad:

  1. Zobrazte skutečný sloupec „Akry“.
  2. Přidejte 100 do sloupce „Akry“.
  3. Odečtěte 100 ze sloupce „Akry“.
  4. Vynásobte 100 sloupcem „Akry“.
  5. Vydělte sloupec „Akry“ 100.
importovat pyspark

z pyspark.sql importujte SparkSession

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

# farmářské údaje s 5 řádky a 5 sloupci

agri =[{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ne' , 'Acres' : 2500 , 'Soil_status' : 'Schnout' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ano' , 'Acres' : 3500 , 'Soil_status' : 'mokrý' ,
'Země' : 'Indie' },

{ 'Soil_Type' : Žádný , 'Irigation_availability' : 'Ano' , 'Acres' : 210 , 'Soil_status' : 'Schnout' ,
'Země' : 'SPOJENÉ KRÁLOVSTVÍ' },

{ 'Soil_Type' : 'Jiný' , 'Irigation_availability' : 'Ne' , 'Acres' : 1000 , 'Soil_status' : 'mokrý' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Písek' , 'Irigation_availability' : 'Ne' , 'Acres' : 500 , 'Soil_status' : 'Schnout' ,
'Země' : 'Indie' }]



# vytvořte datový rámec z výše uvedených dat

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Napište 4 výrazy pro odečítání, sčítání, dělení a násobení sloupce Acres.

agri_df.selectExpr( 'Akry' , 'Akry - 100' , 'Akry * 100' , 'Akry + 100' , 'Akry / 100' ).ukázat()

Výstup:

Scénář 4: Použití agregačních funkcí

SUM(název_sloupce) – Vyhodnocuje celkovou hodnotu v zadaném sloupci.

MEAN(název_sloupce) – Vyhodnocuje průměrnou hodnotu v zadaném sloupci.

MIN(název_sloupce) – Vrátí minimální prvek ze všech prvků v zadaném sloupci.

MAX(název_sloupce) – Vrátí maximální prvek ze všech prvků v zadaném sloupci.

Příklad:

  1. Najděte součet, průměr, počet, minimum a maximum prvků „Acres“.
  2. Najděte minimální a maximální prvky ve sloupci „Soil_status“.
importovat pyspark

z pyspark.sql importujte SparkSession

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

# farmářské údaje s 5 řádky a 5 sloupci

agri =[{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ne' , 'Acres' : 2500 , 'Soil_status' : 'Schnout' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Černá' , 'Irigation_availability' : 'Ano' , 'Acres' : 3500 , 'Soil_status' : 'mokrý' ,
'Země' : 'Indie' },

{ 'Soil_Type' : Žádný , 'Irigation_availability' : 'Ano' , 'Acres' : 210 , 'Soil_status' : 'Schnout' ,
'Země' : 'SPOJENÉ KRÁLOVSTVÍ' },

{ 'Soil_Type' : 'Jiný' , 'Irigation_availability' : 'Ne' , 'Acres' : 1000 , 'Soil_status' : 'mokrý' ,
'Země' : 'USA' },

{ 'Soil_Type' : 'Písek' , 'Irigation_availability' : 'Ne' , 'Acres' : 500 , 'Soil_status' : 'Schnout' ,
'Země' : 'Indie' }]



# vytvořte datový rámec z výše uvedených dat

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Souhrnné operace

agri_df.selectExpr( 'SOUČET (akry)' , 'MEAN (Akry)' , 'POČET (akry)' , 'AVG (Acres)' , 'MIN (akry)' ,
'MAX (akry)' ).ukázat()

agri_df.selectExpr( 'MIN(stav_půdy)' , 'MAX(stav_půdy)' ).ukázat()

Výstup:

Závěr

Diskutovali jsme o funkci selectExpr(), která přebírá sloupce/sady výrazů a vrací DataFrame na základě zadaných výrazů/sloupců. V rámci toho jsme se naučili čtyři hlavní scénáře, ve kterých lze selectExpr() použít. V této funkci lze zadat více výrazů, které jsou odděleny čárkou. Pro použití funkce selectExpr() není nutné vytvářet TEMPORARY VIEW.