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 pysparkz 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 pysparkz 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 pysparkz 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:
- Zobrazte skutečný sloupec „Akry“.
- Přidejte 100 do sloupce „Akry“.
- Odečtěte 100 ze sloupce „Akry“.
- Vynásobte 100 sloupcem „Akry“.
- Vydělte sloupec „Akry“ 100.
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:
- Najděte součet, průměr, počet, minimum a maximum prvků „Acres“.
- Najděte minimální a maximální prvky ve sloupci „Soil_status“.
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.