Pandy: jak grupować i agregować w wielu kolumnach


Często możesz chcieć pogrupować i zagregować wiele kolumn ramki danych pand.

Na szczęście można to łatwo zrobić, korzystając z funkcji pandy .groupby() i .agg() .

W tym samouczku wyjaśniono kilka przykładów praktycznego wykorzystania tych funkcji.

Przykład 1: Pogrupuj według dwóch kolumn i znajdź średnią

Załóżmy, że mamy następującą ramkę DataFrame pand:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

#view DataFrame
print (df)

  team position assists rebounds
0 AG 5 11
1 BG 7 8
2 BF 7 10
3 BG 8 6
4 BF 5 6
5 MF 7 9
6 MC 6 6
7 MC 9 10

Poniższy kod pokazuje, jak grupować według kolumn „zespół” i „pozycja” i znajdować średnie podania:

 df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index ()


        team position assists
                          mean
0 A G 5.0
1 B F 6.0
2 B G 7.5
3 M C 7.5
4M F 7.0

Dane wyjściowe mówią nam:

  • Średnia asyst zawodników na pozycji G drużyny A wynosi 5,0 .
  • Średnia asyst zawodników na pozycji F w drużynie B wynosi 6,0 .
  • Średnia asyst zawodników na pozycji G drużyny B wynosi 7,5 .

I tak dalej.

Możemy również użyć poniższego kodu, aby zmienić nazwy kolumn wynikowej ramki DataFrame:

 #group by team and position and find mean assists
new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index ()

#rename columns
new.columns = ['team', 'pos', 'mean_assists']

#view DataFrame
print (new)

	team pos mean_assists
0 A G 5.0
1 B F 6.0
2 B G 7.5
3 M C 7.5
4M F 7.0

Przykład 2: Grupuj według dwóch kolumn i znajdź wiele statystyk

Załóżmy, że używamy tej samej ramki DataFrame pand, co w poprzednim przykładzie:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

Poniższy kod pokazuje, jak znaleźć medianę i maksymalną liczbę zbiórek, pogrupowanych w kolumnach „zespół” i „pozycja”:

 df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index ()


        team position rebounds
                         median max
0 A G 11 11
1 B F 8 10
2 B G 7 8
3 M C 8 10
4 M F 9 9

Dane wyjściowe mówią nam:

  • Mediana zbiórek zawodników na pozycji G w drużynie A wynosi 11 .
  • Maksymalna liczba zbiórek zawodników znajdujących się na pozycji G drużyny A wynosi 11 .
  • Średnia zbiórek zawodników na pozycji F drużyny B wynosi 8 .
  • Maksymalna liczba zbiórek zawodników znajdujących się na pozycji F drużyny B wynosi 10 .

I tak dalej.

Dodatkowe zasoby

Jak filtrować ramkę danych Pandas pod wieloma warunkami
Jak policzyć brakujące wartości w Pandas DataFrame
Jak układać wiele ramek danych Pand

Dodaj komentarz

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