Pandas Groupby Aggregate

Pandas Groupby Aggregate



Technika groupby je nezbytná kvůli tomu, jak dobře agreguje data z hlediska výkonu i velikosti kódu. Termín „groupby“ obvykle popisuje postup zahrnující následující kroky:

  • Štípání : Aplikováním určitých podmínek na datové sady můžeme data rozdělit do skupin.
  • Uplatňuje se : Proces, kdy individuálně aplikujeme metodu na každou skupinu.
  • Kombinování : Postup pro kombinování různých datových sad za účelem vytvoření datové struktury po použití metody groupby().

V procesu agregace se vypočítá souhrnná statistika pro každou skupinu. Pro každou skupinu vrací agregovaná metoda agregovanou hodnotu (jedinou hodnotu). Po rozdělení dat do skupin pomocí funkce groupby můžeme na seskupených datech provést několik agregačních operací.







Proč Pandy poskytují různé metody agregace dat?

Pandy nabízejí širokou škálu vlastností a funkcí, které pomáhají při analýze a agregaci dat. Například použití metod pivot(), groupby() a pivot_table() nabízí každý jiný pohled na to, jak budou data agregována. Poskytují praktické přístupy k provádění různých úkolů, spíše než aby byly jednoduše přebaleny.



Jak používat funkci .agg() v Pandas

Prostý průměr nebo součet hodnot je agregační funkce, která se používá nejčastěji. K volání agregační funkce můžete použít sloupec datového rámce nebo více sloupců. Uvidíte mnoho způsobů, jak agregovat data pomocí metody Pandas groupby. Abychom demonstrovali, jak je tento postup jednodušší, podívejme se na některé příklady uvedené níže. Základní matematické operace jako součet, minimum, maximum, střední absolutní odchylka, směrodatná odchylka, průměr, medián, rozptyl a součin patří mezi nejčastěji používané vestavěné agregační funkce. Pro shrnutí dat můžeme kombinovat groupby a funkci agg().



Příklad č. 01: Určení součtu sloupců seskupením dat pomocí funkce groupby.agg()

Nejprve vytvoříme datový rámec pomocí funkce pd.DataFrame(), abychom mohli seskupit data ze sloupce nebo sloupců datového rámce a poté určit jejich střední hodnotu. Než vytvoříme datový rámec, musíme naimportovat moduly pand a numpy knihovny.





Jak můžete vidět, k vytvoření našeho datového rámce jsme použili pandas slovník. Náš datový rámec df má čtyři sloupce: „pacient“, „skupina“, „věk“ a „krevní lahvičky“. Hodnoty dat ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') jsou obsaženy ve sloupci „pacient“, zatímco hodnoty dat ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) a ( 2, 3, 1, 1, 2, 3, 2, 1) jsou obsaženy ve sloupcích „skupina“, „věk“ a „láhve s krví“. Předpokládejme, že musíme určit součet hodnot ve sloupci „blood_bottles“ seskupením hodnot ve sloupci „group“.



Pro skupinová data „A“ je součet hodnot „blood_bottles“ 7. Pro hodnoty skupiny „B“ a „C“ je součet hodnot „blood_bottles“ 2 a 6. Můžeme také seskupit více sloupců a určit součet pro každou skupinu.

Jak je vidět, předali jsme seznam štítků sloupců, tj. [‘pacient’, ’group’] uvnitř funkce groupby(), abychom vytvořili skupiny kategorií v každém zadaném sloupci. Pro každou skupinu specifikovaných sloupců jsme určili součet hodnot v 'krvavé_láhve'. Například ‚Ali‘ je v hodnotách A a C ve sloupci ‚group‘. Ve skupině A je součet hodnot ‚blood_bottles‘ pro Aliho 2 a 5 ve skupině ‚C‘.

Příklad č. 02: Použití více funkcí na jeden sloupec datového rámce pomocí funkce groupby.agg()

Pomocí metody „groupby()“ pomocí funkce pandas agg() lze použít více agregací. Metodě lze předat seznam, který lze volat. Podívejme se, jak můžeme agregovat naše data pomocí vestavěných metod knihovny numpy. Na rozdíl od předchozího příkladu použijeme více funkcí na jeden sloupec datového rámce. Funkce pd.DataFrame() bude použita k vytvoření datového rámce s alespoň jedním sloupcem obsahujícím číselné hodnoty.


Byl vytvořen požadovaný datový rámec s jedním číselným sloupcem, tj. „známky“ s hodnotami 41, 40, 35, 39, 49, 31, 34 a 42. Jsou zde další 3 sloupce „student“, „předměty“ a „stupeň“. v našem datovém rámci, který lze rozdělit do skupin pomocí funkce groupby(). Hodnoty ve sloupci 'studenti' a 'předměty' jsou ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') a ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Zatímco stupeň sloupce obsahuje hodnoty dat jako řetězce, tj. („Ms“, „Bs“, „Bs“, „Ms“, „Ms“, „Ms“, „Bs“, „Bs“). Předpokládejme, že musíme seskupit data sloupce „subjekty“ a určit jak průměr, tak součet sloupců „známky“ pro každé seskupené údaje.

Zadali jsme název sloupce ‚subjects‘ jako řetězec uvnitř funkce groupby() pro převod dat do skupin kategorií. Pro sloupec známek jsme použili metodu agg() a uvnitř funkce agg() jsme specifikovali numpy funkce np.sum a np.mean, abychom našli součet a průměr známek každé skupiny dat v předmětech sloupce. Součet a střední hodnota pro skupinovou hodnotu „AI“ jsou 91 a 45,5. Součet známek pro hodnotu „C++“ je 75 a střední hodnota je 37,5. Pro skupinu JAVA je součet známek 71 a průměrná hodnota je 35,5, zatímco součet a střední hodnota pro Python jsou 74 a 37.

Příklad č. 03: Použití více funkcí na více sloupců datového rámce pomocí funkce groupby.agg()

Namísto použití různých funkcí na sloupec jednoho datového rámce můžeme použít více funkcí na různé číselné sloupce. Můžeme použít slovník ve funkci agg() jako vstup pro aplikaci konkrétní metody agregace na různé sloupce datového rámce. Před vytvořením datového rámce s více číselnými sloupci importujme pandy a numpy knihovny.

V nově vytvořeném datovém rámci jsou čtyři sloupce s názvy „hráč“, „nejnižší_skóre“, „nejvyšší_skóre“ a „umístění“. Ve sloupci 'hráč' jsme uložili jména několika hráčů jako řetězcové datové hodnoty ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), ve sloupci 'nejnižší_skóre' jsou nejnižší skóre hráčů pro některé zápasy (12, 34, 2, 21, 9, 1, 0, 34), zatímco ve sloupci 'nejvyšší_skóre' máme nejvyšší skóre hráčů (12, 34, 2, 21, 9, 1, 0, 34) a ve sloupci 'location' jsou názvy míst, kde hráči odehráli své zápasy ('Francie', 'Anglie', 'Dubaj, ' Dubaj“, „Anglie“, „Francie“, „Dubaj“, „Francie“).

Předpokládejme, že po seskupení dat do sloupce „hráči“ musíme najít průměr hodnot ve sloupci „nejmenší_skóre“ a součet hodnot dat „nejvyšší_skóre“ pro každou skupinu.

Uvnitř funkce agg() jsme předali pythonovský slovník {‘nejvyšší_skóre‘ : ‚součet‘, ‚nejnižší_skóre‘ : ‚střední‘}, abychom našli součet a průměrnou hodnotu pro zadaný sloupec proti každé skupině. Je vidět, že seskupená hodnota Alex má součet hodnoty ‚nejvyšší_skóre‘ 132 a průměru hodnoty ‚nejméně_skóre‘ 17,5. Pro „Fin“ je součet hodnot 199 a průměr je 18,3333333 ve sloupcích „nejvyšší_skóre“ a „nejnižší_skóre“. Skupinová hodnota Leo má hodnotu součtu 180 v „nejvyšším_skóre“ a průměrnou hodnotu 7,666667 v „nejnižším_skóre“.

Závěr

V tomto tutoriálu jsme probrali groupby() a agregační funkce v pandách. Také jsme probrali, jak používat funkci groupby.agg(). V tomto článku jsme implementovali tři příklady, abychom vás naučili, jak používat jednu agregační funkci ve sloupci datového rámce seskupením dat z jednoho a více sloupců, jak aplikovat více agregačních funkcí na jeden sloupec datového rámce a jak aplikovat více agregační funkce na více sloupcích datového rámce pomocí funkce groupby.agg().