Funkcje okien PYSPARK i okna AVG

Funkcje okien PYSPARK i okna AVG
Po partycjonowaniu wierszy w Pyspark DataFrame można zwrócić całkowitą sumę i średnią w każdej partycji. Korzystając z niektórych funkcji zagregowanych w oknie partycji, możliwe jest zwrócenie całkowitej sumie i średniej. Najpierw zobaczymy, jak podzielić na Pyspark Rrame w Pyspark.

Partycja Pyspark ramka danych

Możliwe jest podział wierszy w ramce danych za pomocą funkcji okna. Jest dostępny w Pyspark.SQL.okno moduł. Będą dwa kroki, aby podzielić wiersze w Pyspark DataFrame.

Kroki

  1. Utwórz Pyspark DataFrame z podobnymi wartościami w co najmniej jednej kolumnie.
  2. Partycja danych za pomocą metody paritionby () dostępnej w funkcji okna.

Składnia

parition = okno.paritionby („kolumna”)

Możemy zamówić partycjonowane dane z partycjonowaną kolumną lub dowolną inną kolumną. Utwórzmy ramkę danych.

Przykład
Tutaj utworzymy Pyspark DataFrame, który ma 5 kolumn: [„tematu_id”, „name”, „wiek”, „technologia1”, „technologia2”] z 10 wierszy.

Import Pyspark
od Pyspark.SQL Import Sparksession
od Pyspark.SQL.Funkcje importu *
Spark_App = Sparksession.budowniczy.Nazwa aplikacji('_').getorCreate ()
studenci = [(4, „Sravan”, 23, „Php”, „Testowanie”),
(4, „Sravan”, 23, „php”, „testowanie”),
(46, „Mounika”, 22, '.Net ', „html”),
(4, „Deepika”, 21, „Oracle”, „html”),
(46, „Mounika”, 22, „Oracle”, „Testing”),
(12, „Chandrika”, 22, „Hadoop”, „C#”),
(12, „Chandrika”, 22, „Oracle”, „Testing”),
(4, „Sravan”, 23, „Oracle”, „C#”),
(4, „Deepika”, 21, „php”, „c#”),
(46, „Mounika”, 22, '.Net ', „testowanie”)
]
DataFrame_Obj = Spark_App.CreatedATAframe (studenci, [„Temat_id”, „nazwa”, „wiek”, „technologia1”, „technologia 2”])
Drukuj („---------- Rzeczywista ramka danych ----------”)
DataFrame_Obj.pokazywać()

Wyjście:

Funkcja okna Pyspark sum ()

Sum () w funkcji okna służy do zwrócenia całkowitej sumy wartości w każdej partycji. Tak więc możliwe jest zwrócenie sumy po partycjonowaniu ramki danych.

Składnia

DataFrame_Obj.withColumn („sum”, sum (col („kolumna”)).Over (partycja))

Parametr:

sum (col („kolumna”))

Tutaj suma() Funkcja bierze nazwę kolumny jako parametr. Zwraca więc sumę wartości w tej kolumnie w każdej partycji. Dodajemy wynik do kolumny sum withcoolumn () funkcjonować.

Przykład 1
Teraz mamy ramkę danych (utworzoną powyżej). Podzielmy go na podstawie kolumny technologii.

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wportu na sumę i col z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują sumę, col
#Partiction The DataFrame na podstawie kolumny Wartości w technologii1
parition = okno.Partitionby („Technology1”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#zwróć całkowitą sumę wartości w kolumnie podmiotu dla każdej partycji
DataFrame_Obj.withColumn („sum”, sum (col („tematy_id”)).Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie
Łączne partycje: 4

Partycja 1:
.Net wystąpiła dwa razy w pierwszej partycji. A suma wartości podmiotów podmiotów wynosi 46+46 = 92.

Partict 2:
Hadoop miał miejsce raz w drugim partycji. Więc suma to 12.

Partycja 3:
Oracle wystąpiła cztery razy w trzeciej partycji.
A suma wartości podmiotów podmiotowych wynosi 4+46+12+4 = 66.

Partycja 4:
PHP wystąpił trzy razy w czwartej partycji.
A suma wartości podmiotów podmiotów wynosi 4+4+4 = 12.

Przykład 2
Teraz mamy ramkę danych (utworzoną powyżej). Podzielmy go na podstawie kolumny Technology1 i uzyskaj całkowitą sumę wszystkich wartości w kolumnie wiekowej w każdej partycji.

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wportu na sumę i col z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują sumę, col
#Partiction The DataFrame na podstawie kolumny Wartości w technologii1
parition = okno.Partitionby („Technology1”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#zwróć całkowitą sumę wartości w kolumnie wiekowej dla każdej partycji
DataFrame_Obj.withcolumn („sum”, suma (col („wiek”)).Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie
Łączne partycje: 4

Partycja 1:
.Net wystąpiła dwa razy w pierwszej partycji. A suma wartości wieku wynosi 22+22 = 92.

Partict 2:
Hadoop miał miejsce raz w drugim partycji. Więc suma to 22.

Partycja 3:
Oracle wystąpiła cztery razy w trzeciej partycji.
A suma wartości wieku wynosi 21+22+22+23 = 88.

Partycja 4:
PHP wystąpił trzy razy w czwartej partycji.
A suma wartości wieku wynosi 23+23+21 = 67.

Funkcja okna PYSPARK AVG ()

AVG () w funkcji okna służy do zwrócenia całkowitej średniej wartości w każdej partycji. Tak więc możliwe jest zwrócenie średniej po partycjonowaniu ramki danych.

Składnia

DataFrame_Obj.withColumn („średnia”, AVG (col („kolumna”)).Over (partycja))

Parametr:

AVG (col („kolumna”))

Tutaj, AVG () bierze nazwę kolumny jako parametr. Zwraca więc średnią wartości w tej kolumnie w każdej partycji. Dodajemy wynik do średniej kolumny za pomocą withcoolumn () funkcjonować.

Przykład 1
Teraz mamy ramkę danych (utworzoną powyżej). Podzielmy go na podstawie kolumny Technology1 i uzyskaj całkowitą średnią wszystkich wartości w kolumnie Temat_id w każdej partycji.

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Import The AVG i Col z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importuj AVG, col
#Partiction The DataFrame na podstawie kolumny Wartości w technologii1
parition = okno.Partitionby („Technology1”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#zwróć całkowitą średnią wartości w kolumnie tematu_id dla każdej partycji
DataFrame_Obj.withColumn („średnia”, AVG (col („tematy_id”)).Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie
Łączne partycje: 4

Partycja 1:
.Net wystąpiła dwa razy w pierwszej partycji. A średnia wartości podmiotów podmiotowych wynosi (46+46)/2 = 46.0.

Partict 2:
Hadoop miał miejsce raz w drugim partycji. Tak więc średnia wynosi 12.0.

Partycja 3:
Oracle wystąpiła cztery razy w trzeciej partycji.
A średnia wartości podmiotów podmiotowych wynosi (4+46+12+4)/4 = 16.5.

Partycja 4:
PHP wystąpił trzy razy w czwartej partycji.
A średnia wartości podmiotów podmiotów (4+4+4)/3 = 4.0.

Przykład 2
Teraz mamy ramkę danych (utworzoną powyżej). Podzielmy go na podstawie kolumny Technology1 i uzyskaj całkowitą średnią wszystkich wartości w kolumnie wiekowej w każdej partycji.

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Import The AVG i Col z Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importuj AVG, col
#Partiction The DataFrame na podstawie kolumny Wartości w technologii1
parition = okno.Partitionby („Technology1”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#zwróć całkowitą średnią wartości w kolumnie wiekowej dla każdej partycji
DataFrame_Obj.z kolumn („średnia”, AVG (col („wiek”)).Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie
Łączne partycje: 4

Partycja 1:
.Net wystąpiła dwa razy w pierwszej partycji. A średnia wartość wieku wynosi (22+22)/2 = 22.0.

Partict 2:
Hadoop miał miejsce raz w drugim partycji. A więc średnia to 22.0.

Partycja 3:
Oracle wystąpiła cztery razy w trzeciej partycji.
A średni wiek to (21+22+22+23)/4 = 22.0.

Partycja 4:
PHP wystąpił trzy razy w czwartej partycji.
A średnia wartość wieku wynosi (23+23+21)/3 = 22.333.

Wniosek

W tym samouczku partycjonowania PYSPARK widzieliśmy, jak zwrócić sumę wartości w każdym oknie partycjonowanym za pomocą suma() funkcja i średnie wartości w każdym partycjonowanym oknie za pomocą funkcji AVG (). Dodaliśmy wynik do istniejącej ramki danych jako nowej kolumny. Możliwe jest również uzyskanie średniej podobnej do AVG () funkcja za pomocą mieć na myśli(). Rzeczy znaczą import z Pyspark.SQL.Funkcje moduł i po prostu upewnij się, że musisz zaimportować sumę i średnią z tego samego modułu.