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:
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.ngroups
– liczba grup utworzonych na podstawie kryteriów grupowania.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