Pandy: jak korzystać z groupby i liczyć warunkowo
Aby wykonać grupowanie i zliczanie z warunkiem w ramce DataFrame pandy, możesz użyć następującej podstawowej składni:
df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')
Ta konkretna składnia grupuje wiersze ramki DataFrame w oparciu o zmienną 1 , a następnie zlicza liczbę wierszy, w których zmienna 2 jest równa „val”.
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Groupby i Count z warunkiem w Pandach
Załóżmy, że mamy następującą ramkę danych pand, która zawiera informacje o różnych koszykarzach:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' pos ': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) team pos points 0 A Gu 18 1 A Fo 22 2 A Fo 19 3 A Fo 14 4 B Gu 14 5 B Gu 11 6 B Fo 20 7 B Fo 28
Poniższy kod pokazuje, jak pogrupować ramkę DataFrame według zmiennej zespołu i policzyć liczbę wierszy, w których zmienna pos jest równa „Gu”:
#groupby team and count number of 'pos' equal to 'Gu' df_count = df. groupby (' team ')[' pos ']. apply ( lambda x: (x==' Gu '). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 1 1 B 2
Z wyniku możemy zobaczyć:
- Zespół A ma 1 wiersz, w którym kolumna poz jest równa „Gu”
- Zespół B ma 2 wiersze, w których kolumna poz jest równa „Gu”
Możemy użyć podobnej składni, aby wykonać grupowanie i zliczenie z warunkiem numerycznym.
Na przykład poniższy kod pokazuje, jak grupować według zmiennej zespołu i policzyć liczbę wierszy, w których zmienna punktów jest większa niż 15:
#groupby team and count number of 'points' greater than 15 df_count = df. groupby (' team ')[' points ']. apply ( lambda x: (x>15). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 3 1 B 2
Z wyniku możemy zobaczyć:
- Zespół A ma 3 linie, w których kolumna punktów jest większa niż 15
- Zespół B ma 2 linie, w których kolumna punktów jest większa niż 15
Możesz użyć podobnej składni, aby wykonać grupowanie i zliczyć z dowolnym określonym warunkiem.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:
Jak liczyć unikalne wartości za pomocą Pandas GroupBy
Jak zastosować funkcję do Pandas Groupby
Jak utworzyć wykres słupkowy z Pandas GroupBy