Pandy: prosta formuła „grupowania według zasobów”


Możesz użyć następującej podstawowej składni, aby wykonać odpowiednik instrukcji SQL „GROUP BY HAVING” w pandach:

 df. groupby (' some_column '). filter ( lambda x: some condition)

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', 'C', 'C'],
                   ' position ': ['G', 'F', 'F', 'G', 'F', 'F', 'G', 'G'],
                   ' points ': [30, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team position points
0 AG 30
1 AF 22
2 FY 19
3 BG 14
4 BF 14
5 BF 11
6 GC 20
7 GC 28

Przykład 1: Grupa pand mających z hrabią

Poniższy kod pokazuje, jak grupować wiersze na podstawie wartości w kolumnie Zespół , a następnie filtrować tylko zespoły, których liczba jest większa niż 2:

 #group by team and filter for teams with count > 2
df. groupby (' team '). filter ( lambda x: len (x) > 2 )


        team position points
0 A G 30
1 A F 22
2 A F 19
3 B G 14
4 B F 14
5 B F 11

Należy pamiętać, że zwracane są tylko wiersze z wartością drużyny „A” lub „B”, ponieważ są to obie drużyny, których liczba jest większa niż 2.

Przykład 2: Grupa pand mających średnią

Poniższy kod pokazuje, jak grupować wiersze na podstawie wartości w kolumnie Zespół , a następnie filtrować tylko drużyny, których średnia wartość punktów jest większa niż 20:

 #group by team and filter for teams with mean points > 20
df. groupby (' team '). filter ( lambda x: x[' points ']. mean () > 20 )

        team position points
0 A G 30
1 A F 22
2 A F 19
6 C G 20
7 C G 28

Należy pamiętać, że zwracane są tylko wiersze z wartością drużyny „A” lub „C”, ponieważ są to dwie drużyny, które mają średnią wartość punktową większą niż 20.

Przykład 3: Grupa pand mających sumę

Poniższy kod pokazuje, jak grupować wiersze według wartości w kolumnie Zespół , a następnie filtrować tylko drużyny, których suma punktów wynosi dokładnie 48:

 #group by team and filter for teams with sum of points equal to 48
df. groupby (' team '). filter ( lambda x: x[' points ']. sum () == 48 )

        team position points
6 C G 20
7 C G 28

Należy pamiętać, że zwracane są tylko wiersze z wartością zespołu „C”, ponieważ jest to jedyny zespół, który ma sumę punktów równą 48.

Dodatkowe zasoby

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

Pandy: pobierz indeks wierszy, których kolumna odpowiada wartości
Pandy: jak wybrać kolumny zawierające określony ciąg
Pandy: jak sprawdzić, czy kolumna zawiera ciąg znaków

Dodaj komentarz

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