Metoda groupby umožňuje agregaci podle více sloupců. V takovém případě vložíme názvy sloupců do seznamu.
tabulka.groupby(["sloupec_1", "sloupec_2"])["sloupec_hodnot"].mean()
Výsledkem je série s víceúrovňovým indexem, kde každá kombinace hodnot ze sloupců sloupec_1 a sloupec_2 tvoří jeden řádek.
V tomto příkladu se podíváme na průměrné obsahy výživných látek v jednotlivých kategoriích. Současně i zjistíme, kolik máme pro každou kombinaci kategorie a výživné látky záznamů, abychom neměli naše závěry zkreslené příliš malým množstvím dat.
Nejprve si pomocí dotazu vytvoř tabulku food_merged_brands_nutrients, která bude obsahovat pouze řádky s výživnými látkami Protein, Sugars, total including NLEA a Fiber, total dietary. Využij metodu isin().
Poté proveď agregaci podle sloupců nutrient_name a branded_food_category s využitím metody agg. Pro sloupec amount vypočítej průměr (mean) a počet (count). Tak zjistíš průměrný obsah výživných látek v jednotlivých kategoriích a zároveň kolik záznamů pro jednotlivé výživné látky v jednotlivých kategoriích máme.
- Která kategorie má nejvyšší průměrný obsah cukru?
- Podívej se na výsledky. Není některý z nich zkreslený příliš nízkým počtem záznamů?
- Zkus zadat sloupce v metodě
groupbyv opačném pořadí, tj. nejprvebranded_food_categorya poténutrient_name. Porovnej výsledky. Jak se liší struktura výsledné tabulky? Na zamyšlení: Uvažuj dvě různá zadání. První: "Zjisti, která kategorie má nejvyšší průměrné množství jednotlivých výživných látek." Druhé: "Zjisti, která výživná látka má nejvyšší průměrné zastoupení v jednotlivých kategoriích." Pro které zadání by bylo vhodnější které pořadí sloupců?