Pandas Groupby Aggregate

Pandas Groupby Aggregate



Technika grupowania jest niezbędna ze względu na to, jak dobrze agreguje dane zarówno pod względem wydajności, jak i rozmiaru kodu. Termin „groupby” zazwyczaj opisuje procedurę obejmującą następujące kroki:

  • Rozdzielać : Stosując pewne warunki do zbiorów danych, możemy podzielić dane na grupy.
  • Aplikuję : Proces, w którym indywidualnie stosujemy metodę do każdej grupy.
  • Łączenie : Procedura łączenia różnych zestawów danych w celu utworzenia struktury danych po użyciu metody groupby().

W procesie agregacji obliczana jest statystyka podsumowująca dla każdej grupy. Dla każdej grupy metoda agregująca zwraca zagregowaną wartość (pojedynczą wartość). Po podzieleniu danych na grupy za pomocą funkcji groupby możemy wykonać kilka operacji agregacji na zgrupowanych danych.







Dlaczego Pandy zapewniają różnorodne metody agregacji danych?

Pandas oferują szeroką gamę funkcji i funkcji, które pomagają w analizie i agregacji danych. Na przykład użycie metod pivot(), groupby() i pivot_table() zapewnia inną perspektywę agregacji danych. Zapewniają praktyczne podejście do wykonywania różnych zadań, a nie tylko przepakowywanie.



Jak używać funkcji .agg() w Pandas

Najczęściej używana funkcja agregacji to prosta średnia lub suma wartości. Do wywołania funkcji agregującej można użyć kolumny lub wielu kolumn ramki danych. Zobaczysz wiele sposobów agregowania danych przy użyciu metody grupowania Pandy. Aby pokazać, o ile łatwiejsza jest ta procedura, spójrzmy na kilka przykładów podanych poniżej. Podstawowe operacje matematyczne, takie jak suma, minimum, maksimum, średnie odchylenie bezwzględne, odchylenie standardowe, średnia, mediana, wariancja i iloczyn, należą do najczęściej używanych wbudowanych funkcji agregacji. Aby podsumować dane, możemy połączyć funkcję groupby i agg().



Przykład nr 01: Określ sumę kolumn, grupując dane za pomocą funkcji groupby.agg()

Najpierw utworzymy ramkę danych za pomocą funkcji pd.DataFrame(), aby pogrupować dane z kolumny lub kolumn ramki danych, a następnie określić ich wartość średnią. Zanim utworzymy dataframe, musimy zaimportować moduły pand i bibliotekę numpy.





Jak widać, do stworzenia ramki danych użyliśmy słownika pandy. Nasza ramka danych df ma cztery kolumny: „pacjent”, „grupa”, „wiek” i „butelki z krwią”. Wartości danych („Ali”, „John”, „Mike”, „Mike”, „John”, „Ali”, „Ali”, „Mike”) są zawarte w kolumnie „pacjent”, podczas gdy wartości danych („A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) i ( 2, 3, 1, 1, 2, 3, 2, 1) znajdują się odpowiednio w kolumnach „grupa”, „wiek” i „butelki z krwią”. Załóżmy, że musimy określić sumę wartości w kolumnie „blood_bottles” grupując wartości w kolumnie „group”.



Dla danych grupowych „A” suma wartości „blood_bottles” wynosi 7. Dla wartości grupowych „B” i „C” suma wartości „blood_bottles” wynosi odpowiednio 2 i 6. Możemy również pogrupować wiele kolumn, aby określić sumę dla każdej grupy.

Jak można zauważyć, przekazaliśmy listę etykiet kolumn, tj. ['pacjent', 'grupa'] wewnątrz funkcji groupby(), aby utworzyć grupy kategorii w każdej określonej kolumnie. Dla każdej grupy określonych kolumn określiliśmy sumę wartości w „blood_bottles”. Na przykład „Ali” znajduje się w kolumnie „group” wartości A i C. W grupie A suma wartości „blood_bottles” dla Ali wynosi 2, a 5 w grupie „C”.

Przykład nr 02: Stosowanie wielu funkcji w pojedynczej kolumnie Dataframe przy użyciu funkcji groupby.agg()

Wiele agregacji można zastosować za pomocą metody „groupby()” przy użyciu funkcji pandas agg(). Do metody można przekazać listę z możliwością wywołania. Przyjrzyjmy się, jak możemy agregować nasze dane za pomocą wbudowanych metod biblioteki numpy. W przeciwieństwie do poprzedniego przykładu, zastosujemy wiele funkcji do pojedynczej kolumny ramki danych. Funkcja pd.DataFrame() zostanie użyta do utworzenia ramki danych z co najmniej jedną kolumną zawierającą wartości liczbowe.


Utworzono wymaganą ramkę danych zawierającą jedną kolumnę numeryczną, tj. „oceny” o wartościach 41, 40, 35, 39, 49, 31, 34 i 42. Są jeszcze 3 kolumny „student”, „przedmioty” i „stopień” w naszej ramce danych, którą można podzielić na grupy za pomocą funkcji groupby(). Wartości w kolumnach „studenci” i „tematy” to („Harry”, „Ron”, „Harry”, „Lana”, „Sam”, „Ron”, „Lana”, „Max”) i („C++” , „JAVA”, „Python”, „Python”, „AI”, „JAVA”, „C++”, „AI”). Natomiast stopień kolumny zawiera wartości danych w postaci ciągów, tj. („Ms”, „Bs”, „Bs”, „Ms”, „Ms”, „Ms”, „Bs”, „Bs”). Załóżmy, że musimy pogrupować dane kolumny „podmioty” i określić zarówno średnią, jak i sumę „ocen” kolumny dla każdego zgrupowanych danych.

Określiliśmy nazwę kolumny „tematy” jako ciąg znaków wewnątrz funkcji groupby(), aby przekonwertować dane na grupy kategorii. Dla kolumny ocen użyliśmy metody agg(), a wewnątrz funkcji agg() określiliśmy funkcje numpy np.sum i np.mean, aby znaleźć sumę i średnią ocen z każdej grupy danych w tematach kolumny. Suma i wartość średnia dla wartości grupy „AI” wynoszą odpowiednio 91 i 45,5. Suma ocen dla wartości „C++” wynosi 75, a średnia 37,5. Dla grupy JAVA suma ocen wynosi 71, a średnia 35,5, podczas gdy suma i średnia dla Pythona to odpowiednio 74 i 37.

Przykład nr 03: Stosowanie wielu funkcji w wielu kolumnach ramki danych za pomocą funkcji groupby.agg()

Zamiast stosować różne funkcje do kolumny pojedynczej ramki danych, możemy zastosować wiele funkcji do różnych kolumn liczbowych. Możemy użyć słownika w funkcji agg() jako danych wejściowych, aby zastosować określoną metodę agregacji do różnych kolumn dataframe. Zaimportujmy pandy i numpy biblioteki przed utworzeniem ramki danych z wieloma kolumnami liczbowymi.

W nowo utworzonej ramce danych znajdują się cztery kolumny o nazwach „gracz”, „najniższy_wynik”, „najwyższy_wynik” i „lokalizacja”. W kolumnie 'gracz' zapisaliśmy nazwy kilku graczy jako wartości danych ciągu ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), w kolumnie 'least_score' znajdują się najniższe wyniki graczy dla niektórych meczów (12, 34, 2, 21, 9, 1, 0, 34), natomiast w kolumnie 'highest_score' mamy najwyższe wyniki graczy (12, 34, 2, 21, 9, 1, 0, 34) oraz w kolumnie 'lokalizacja' znajdują się nazwy miejsc, w których zawodnicy rozgrywali swoje mecze ('Francja', 'Anglia', 'Dubaj', ' Dubaj”, „Anglia”, „Francja”, „Dubaj”, „Francja”).

Załóżmy, że po zgrupowaniu danych w kolumnie „gracze”, musimy znaleźć średnią dla wartości kolumny „least_score” i sumę dla wartości danych „hightest_score” dla każdej grupy.

Wewnątrz funkcji agg() przekazaliśmy słownik Pythona {‘highest_score’: ‘sum’, ‘least_score’ : ‘mean’}, aby znaleźć sumę i średnią wartość dla określonej kolumny dla każdej grupy. Widać, że zgrupowana wartość Alex ma sumę wartości „najwyższy_wynik” 132 i średnią wartości „najniższy_wynik” 17,5. W przypadku „Fin” suma wartości wynosi 199, a średnia w kolumnach „highest_score” i „least_score” wynosi 18,3333333 odpowiednio. Wartość grupy Leo ma wartość sumaryczną 180 w „najwyższym wyniku” i średnią wartość 7,666667 w „najgorszym wyniku”.

Wniosek

W tym samouczku omówiliśmy funkcje groupby() i agregacji w pandach. Omówiliśmy również, jak używać funkcji groupby.agg(). W tym artykule zaimplementowaliśmy trzy przykłady, aby nauczyć Cię, jak używać pojedynczej funkcji agregacji w kolumnie danych poprzez grupowanie danych z jednej i wielu kolumn, jak zastosować wiele funkcji agregacji w jednej kolumnie ramki danych oraz jak zastosować wiele funkcje agregacji na wielu kolumnach ramki danych za pomocą funkcji groupby.agg().