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

Dodaj komentarz

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