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 pysparkz 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 pysparkz 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 pysparkz 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:
- Wyświetl rzeczywistą kolumnę „Akry”.
- Dodaj 100 do kolumny „Akry”.
- Odejmij 100 od kolumny „Akry”.
- Pomnóż 100 przez kolumnę „Akry”.
- Podziel kolumnę „Akry” przez 100.
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:
- Znajdź sumę, średnią, liczbę, minimum i maksimum elementów „Akrów”.
- Znajdź elementy minimalne i maksymalne w kolumnie „Soil_status”.
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().