Jak zastosować funkcję do pandas groupby


Aby używać razem funkcji groupby() i Apply() w ramce DataFrame pandy, możesz użyć następującej podstawowej składni:

 df. groupby (' var1 '). apply ( lambda x: some function)

Poniższe przykłady pokazują, jak w praktyce używać tej składni z następującą ramką DataFrame pand:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points_for ': [18, 22, 19, 14, 11, 20, 28],
                   ' points_against ': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 14
1 To 22 21
2 A 19 19
3 B 14 14
4 B 11 12
5 B 20 20
6 B 28 21

Przykład 1: Użyj groupby() i Apply(), aby znaleźć względne częstotliwości

Poniższy kod pokazuje, jak używać funkcji groupby( ) i Apply() do znajdowania względnych częstotliwości nazw każdego zespołu w ramce danych pand:

 #find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])

team
A 0.428571
B 0.571429
dtype:float64

Z wyniku widzimy, że drużyna A występuje w 42,85% wszystkich wierszy, a drużyna B w 57,14% wszystkich wierszy.

Przykład 2: Użyj groupby() i Apply(), aby znaleźć wartości maksymalne

Poniższy kod pokazuje, jak używać funkcji groupby( ) i Apply() w celu znalezienia maksymalnych wartości „points_for” dla każdego zespołu:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())

team
At 22
B28
dtype: int64

Z wyniku widzimy, że maksymalna liczba punktów zdobytych przez drużynę A wynosi 22, a maksymalna liczba punktów zdobytych przez drużynę B wynosi 28.

Przykład 3: Użyj groupby() i Apply() do wykonania niestandardowych obliczeń

Poniższy kod pokazuje, jak używać funkcji groupby( ) i Apply() , aby znaleźć średnią różnicę między „punktami_za” i „punktami_przeciw” dla każdego zespołu:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())

team
A 1.666667
B 1.500000
dtype:float64

Z wyników widać, że średnia różnica pomiędzy „punktami za” i „punktami przeciw” wynosi 1,67 dla drużyny A i 1,50 dla drużyny B.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Jak wykonać sumę GroupBy w Pandach
Jak korzystać z Groupby i Plot w Pandach
Jak liczyć unikalne wartości za pomocą GroupBy w Pandach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *