Na obiekcie DataFrame można przeprowadzić grupowanie.

new_df = df.groupby('pclass')

Powyższe wywołanie tworzy nowy obiekt o typie DataFrameGroupBy. Teraz na takim obiekcie możemy uruchomić funkcję agregującą, co spowoduje utworzenie nowego obiektu Series, ale tym razem już z indeksem opartym na kolumnie grupującej.

Do grupowania można użyć kilku kolumn:

titanic.groupby(['embarked','pclass']).count()

Na wyniku grupowania można użyć metody agg pozwalającej na przekazanie parametru, który jest listą lub krótką i zawiera nazwy funkcji agregujących. Dzięki temu można wykonać więcej niż jedną funkcję agregującą na jednym parametrze:

titanic.groupby('pclass')['age','fare'].agg(['max','median'])

Dodatkowo można wykorzystać obiekt Dictionary, który wskazuje inną funkcję agregującą, która powinna być wykorzystana dla danej kolumny:

def spread(series):
    return series.max() - series.min()

# Create the dictionary: aggregator
aggregator = {'population':'sum', 'child_mortality':'mean', 'gdp':spread}

# Aggregate by_year_region using the dictionary: aggregated
aggregated = by_year_region.agg(aggregator)

Na pogrupowanym DataFrame można wywołać funkcję filter, która pozwala na przefiltrowanie danych. W takiej funkcji filter bardzo często używa się wyrażeń lambda:

by_com_filt = sales.groupby('Company').filter(lambda g: g['Units'].sum() > 35)

results matching ""

    No results matching ""