PySpark SelectExpr()

Pyspark Selectexpr



Korzystając z funkcji selectExpr() w PySpark, możemy bezpośrednio oszacować wyrażenie bez tworzenia TABELI lub WIDOKU. Ta funkcja jest dostępna w module pyspark.sql.DataFrame, który jest podobny do metody select(). Za pomocą selectExpr() możemy wyświetlać kolumny, stosować funkcje do kolumn, oceniać wyrażenia, wykonywać operacje agregacji itp. Możliwe jest również ocenianie/określanie wielu kolumn jednocześnie.

Pyspark.sql.DataFrame.selectExpr()

Funkcja selectexpr() pobiera kolumny/zestaw wyrażeń i zwraca DataFrame na podstawie określonych wyrażeń/kolumn. W tej funkcji można określić wiele wyrażeń, które są oddzielone przecinkami. Aby wyświetlić DataFrame, możemy użyć funkcji show()/collect().

Składnia:







pyspark_DataFrame_object.selectExpr('Kolumny'/'Wyrażenia')

Tutaj pyspark_DataFrame_object jest wejściową ramką danych PySpark.



Scenariusz 1: Wybierz kolumny

W tym scenariuszu zobaczymy, jak wybrać poszczególne kolumny z PySpark DataFrame za pomocą funkcji selectExpr().



Użyte wyrażenie to „istniejąca_kolumna jako nowa_nazwa”. W tym przypadku istniejąca_kolumna to nazwa kolumny, która jest obecna w DataFrame i jest wyświetlana jako nowa_nazwa (aliasing).





Przykład:

Utwórz PySpark DataFrame o nazwie „agri_df” z 5 wierszami i kolumnami. Pobierz kolumny „Soil_status” i „Soil_Type” jako „STATUS” i „TYPE”.

zaimportuj pyspark

z pyspark.sql zaimportuj SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()

# dane farmy z 5 wierszami i 5 kolumnami

rolnictwo = [{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 2500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 3500 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'Indie' },

{ 'Typ gleby' : Nic , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 210 , „stan_gleby” : 'Suchy' ,
'Kraj' : „Wielka Brytania” },

{ 'Typ gleby' : 'Inny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 1000 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Piasek' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'Indie' }]



# utwórz ramkę danych z powyższych danych

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Pobierz Soil_status i Soil_Type jako 'STATUS' i 'TYPE'.

agri_df.selectExpr( „Stan_gleby jako STATUS” , „Typ_gleby jako TYP” ).pokazywać()

Wyjście:



Scenariusz 2: Określanie wyrażeń warunkowych

W tym scenariuszu zobaczymy, jak oszacować warunki w funkcji selectExpr().

Użyte wyrażenie to „wartość operatora istniejącej_kolumny”. W tym przypadku kolumna_istniejąca to nazwa kolumny, która jest obecna w ramce danych i porównujemy każdą wartość w tej kolumnie z ciągiem/wartością.

Przykład 1:

Sprawdź, czy kraj to „USA”, czy nie. Stosowany jest tutaj operator equalto (=).

zaimportuj pyspark

z pyspark.sql zaimportuj SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()

# dane farmy z 5 wierszami i 5 kolumnami

rolnictwo = [{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 2500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 3500 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'Indie' },

{ 'Typ gleby' : Nic , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 210 , „stan_gleby” : 'Suchy' ,
'Kraj' : „Wielka Brytania” },

{ 'Typ gleby' : 'Inny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 1000 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Piasek' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'Indie' }]



# utwórz ramkę danych z powyższych danych

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Sprawdź, czy kraj to „USA”, czy nie.

agri_df.selectExpr( „Kraj = „USA”” ).pokazywać()

Wyjście:

Przykład 2:

Sprawdź, czy Soil_Type ma wartość NULL, czy nie. Słowo kluczowe NULL sprawdza, czy wartość jest NULL, czy nie. Jeśli ma wartość null, zwracana jest prawda. W przeciwnym razie zwracana jest wartość false. Końcowe wyrażenie to „Soil_Type IS NULL”

zaimportuj pyspark

z pyspark.sql zaimportuj SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()

# dane farmy z 5 wierszami i 5 kolumnami

rolnictwo = [{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 2500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 3500 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'Indie' },

{ 'Typ gleby' : Nic , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 210 , „stan_gleby” : 'Suchy' ,
'Kraj' : „Wielka Brytania” },

{ 'Typ gleby' : 'Inny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 1000 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Piasek' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'Indie' }]



# utwórz ramkę danych z powyższych danych

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Sprawdź, czy Soil_Type ma wartość NULL, czy nie.

agri_df.selectExpr( „Rodzaj_gleby JEST NULL” ).pokazywać()

Wyjście:

Scenariusz 3: Ocena wyrażeń

W tym scenariuszu zobaczymy, jak określić wyrażenia matematyczne. Używane wyrażenie to „existing_column matematyczne_wyrażenie”.

Przykład:

  1. Wyświetl rzeczywistą kolumnę „Akry”.
  2. Dodaj 100 do kolumny „Akry”.
  3. Odejmij 100 od kolumny „Akry”.
  4. Pomnóż 100 przez kolumnę „Akry”.
  5. Podziel kolumnę „Akry” przez 100.
zaimportuj pyspark

z pyspark.sql zaimportuj SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()

# dane farmy z 5 wierszami i 5 kolumnami

rolnictwo = [{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 2500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 3500 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'Indie' },

{ 'Typ gleby' : Nic , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 210 , „stan_gleby” : 'Suchy' ,
'Kraj' : „Wielka Brytania” },

{ 'Typ gleby' : 'Inny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 1000 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Piasek' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'Indie' }]



# utwórz ramkę danych z powyższych danych

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Napisz 4 wyrażenia, aby odjąć, dodać, podzielić i pomnożyć kolumnę Acres.

agri_df.selectExpr( 'Włości' , „Akry - 100” , „Akry * 100” , „Akry + 100” , „Akry / 100” ).pokazywać()

Wyjście:

Scenariusz 4: Stosowanie funkcji agregujących

SUMA(nazwa_kolumny) – Ocenia całkowitą wartość w określonej kolumnie.

ŚREDNIA(nazwa_kolumny) – Ocenia średnią wartość w określonej kolumnie.

MIN(nazwa_kolumny) – Zwraca najmniejszy element spośród wszystkich elementów w określonej kolumnie.

MAX(nazwa_kolumny) – Zwraca maksymalny element spośród wszystkich elementów w określonej kolumnie.

Przykład:

  1. Znajdź sumę, średnią, liczbę, minimum i maksimum elementów „Akrów”.
  2. Znajdź elementy minimalne i maksymalne w kolumnie „Soil_status”.
zaimportuj pyspark

z pyspark.sql zaimportuj SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Wskazówka dotycząca Linuksa” .getOrCreate()

# dane farmy z 5 wierszami i 5 kolumnami

rolnictwo = [{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 2500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Czarny' , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 3500 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'Indie' },

{ 'Typ gleby' : Nic , „Nawadnianie_dostępność” : 'Tak' , 'Włości' : 210 , „stan_gleby” : 'Suchy' ,
'Kraj' : „Wielka Brytania” },

{ 'Typ gleby' : 'Inny' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 1000 , „stan_gleby” : 'Mokry' ,
'Kraj' : 'USA' },

{ 'Typ gleby' : 'Piasek' , „Nawadnianie_dostępność” : 'NIE' , 'Włości' : 500 , „stan_gleby” : 'Suchy' ,
'Kraj' : 'Indie' }]



# utwórz ramkę danych z powyższych danych

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Operacje agregujące

agri_df.selectExpr( „SUMA (akrów)” , „ŚREDNIA (akrów)” , „LICZBA (akrów)” , „Średnia (akrów)” , „MIN(akry)” ,
„MAX (akrów)” ).pokazywać()

agri_df.selectExpr( „MIN(stan_gleby)” , „MAX(stan_gleby)” ).pokazywać()

Wyjście:

Wniosek

Omówiliśmy funkcję selectExpr(), która pobiera kolumny/zestawy wyrażeń i zwraca DataFrame na podstawie określonych wyrażeń/kolumn. W ramach tego poznaliśmy cztery główne scenariusze, w których ma zastosowanie metoda selectExpr(). W tej funkcji można określić wiele wyrażeń, które są oddzielone przecinkami. Nie ma potrzeby tworzenia WIDOKU TYMCZASOWEGO, aby użyć funkcji selectExpr().