group_by Pandas

Metoda groupby w module pandas służy do grupowania danych według określonych kryteriów. Pozwala to na agregowanie danych oraz wykonywanie różnego rodzaju obliczeń statystycznych dla poszczególnych grup.

Przykład:

import pandas as pd

# utworzenie ramki danych zawierającej informacje o trzech osobach (imię, wiek, płeć)
df = pd.DataFrame({'imię': ['Jan', 'Anna', 'Piotr'], 'wiek': [25, 30, 35], 'płeć': ['M', 'K', 'M']})

	imię	wiek	płeć
0	Jan	25	M
1	Anna	30	K
2	Piotr	35	M

# grupowanie danych według płci
grouped_df = df.groupby('płeć')

# wyświetlenie średniego wieku dla obu grup
print(grouped_df['wiek'].mean())

   imię  wiek   płeć
0   Jan    25    M
1  Anna    30    K
2  Piotr   35    M

Po wykonaniu grupowania według płci oraz obliczeniu średniego wieku dla obu grup, otrzymamy następujące wyniki:

płeć
K    30
M    30
Name: wiek, dtype: int64

Możliwe jest również wykonanie więcej niż jednego kryterium grupowania, np. według płci oraz wieku. W tym przypadku kolejność podawania kryteriów ma znaczenie – najpierw będą one grupowane według pierwszego kryterium, a następnie według drugiego.

Przykład:

import pandas as pd

# utworzenie ramki danych zawierającej informacje o trzech osobach (imię, wiek, płeć)
df = pd.DataFrame({'imię': ['Jan', 'Anna', 'Piotr'], 'wiek': [25, 30, 35], 'płeć': ['M', 'K', 'M']})

	imię	wiek	płeć
0	Jan	25	M
1	Anna	30	K
2	Piotr	35	M

# grupowanie danych według płci i wieku
grouped_df = df.groupby(['płeć', 'wiek'])

# wyświetlenie średniego wieku dla obu grup
print(grouped_df['wiek'].mean())

płeć  wiek
K     30      30.0
M     25      25.0
      35      35.0
Name: wiek, dtype: float64

Metoda groupby w module pandas ma następujące atrybuty:

  1. groups – słownik zawierający informację o grupach utworzonych na podstawie kryteriów grupowania. Kluczami słownika są tu krotki zawierające wartości kryteriów dla poszczególnych grup, a wartościami są indeksy wierszy należących do danej grupy.
  2. ngroups – liczba grup utworzonych na podstawie kryteriów grupowania.
  3. size – ramka danych zawierająca informację o rozmiarach poszczególnych grup (liczba elementów w grupie).

Przykład:

import pandas as pd

# utworzenie ramki danych zawierającej informacje o trzech osobach (imię, wiek, płeć)
df = pd.DataFrame({'imię': ['Jan', 'Anna', 'Piotr'], 'wiek': [25, 30, 35], 'płeć': ['M', 'K', 'M']})

	imię	wiek	płeć
0	Jan	25	M
1	Anna	30	K
2	Piotr	35	M

# grupowanie danych według płci i wieku
grouped_df = df.groupby(['płeć', 'wiek'])

# wyświetlenie informacji o grupach
print(grouped_df.groups)
print(f"Liczba grup: {grouped_df.ngroups}")
print(grouped_df.size())

{('K', 30): [1], ('M', 25): [0], ('M', 35): [2]}
Liczba grup: 3
płeć  wiek
K     30      1
M     25      1
      35      1
dtype: int64