Pandas Groupby Aggregate

Pandas Groupby Aggregate



Technika groupby je nevyhnutná kvôli tomu, ako dobre agreguje údaje z hľadiska výkonu aj veľkosti kódu. Pojem „groupby“ zvyčajne opisuje postup zahŕňajúci nasledujúce kroky:

  • Štiepenie : Aplikovaním určitých podmienok na množiny údajov môžeme rozdeliť údaje do skupín.
  • Uplatňuje sa : Proces, kde individuálne aplikujeme metódu na každú skupinu.
  • Kombinovanie : Procedúra na kombinovanie rôznych množín údajov na vytvorenie štruktúry údajov po použití metódy groupby().

V procese agregácie sa vypočíta súhrnná štatistika pre každú skupinu. Pre každú skupinu agregovaná metóda vráti agregovanú hodnotu (jedinú hodnotu). Na zoskupených údajoch môžeme po rozdelení údajov do skupín pomocou funkcie groupby vykonať niekoľko agregačných operácií.







Prečo Pandy poskytujú rôzne metódy agregácie údajov?

Pandy ponúkajú širokú škálu funkcií a funkcií, ktoré pomáhajú pri analýze a agregácii údajov. Napríklad použitie metód pivot(), groupby() a pivot_table() ponúka každý iný pohľad na to, ako budú údaje agregované. Poskytujú praktické prístupy k vykonávaniu rôznych úloh a nie sú jednoducho prebalené.



Ako používať funkciu .agg() v Pandas

Jednoduchý priemer alebo súčet hodnôt je agregačná funkcia, ktorá sa používa najčastejšie. Na volanie agregovanej funkcie môžete použiť stĺpec dátového rámca alebo viacero stĺpcov. Uvidíte mnoho spôsobov, ako agregovať údaje pomocou metódy Pandas groupby. Aby sme ukázali, o koľko je tento postup jednoduchší, pozrime sa na niekoľko príkladov uvedených nižšie. Základné matematické operácie ako súčet, minimum, maximum, stredná absolútna odchýlka, smerodajná odchýlka, priemer, medián, rozptyl a súčin patria medzi najčastejšie používané vstavané agregačné funkcie. Na zhrnutie údajov môžeme kombinovať groupby a funkciu agg().



Príklad č. 01: Určenie súčtu stĺpcov zoskupením údajov pomocou funkcie groupby.agg()

Najprv vytvoríme dátový rámec pomocou funkcie pd.DataFrame(), aby sme mohli zoskupiť údaje zo stĺpca alebo stĺpcov dátového rámca a potom určiť ich strednú hodnotu. Pred vytvorením dátového rámca musíme importovať moduly pandy a numpy knižnice.





Ako vidíte, na vytvorenie dátového rámca sme použili slovník pandy. Náš dátový rámec df má štyri stĺpce: „pacient“, „skupina“, „vek“ a „krvné fľaše“. Hodnoty údajov ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') sú obsiahnuté v stĺpci „pacient“, zatiaľ čo hodnoty údajov ('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) sú uvedené v stĺpcoch „skupina“, „vek“ a „krvné fľaše“. Predpokladajme, že musíme určiť súčet hodnôt v stĺpci „blood_bottles“ zoskupením hodnôt v stĺpci „group“.



Pre skupinové údaje „A“ je súčet hodnôt „blood_bottles“ 7. Pre hodnoty skupiny „B“ a „C“ je súčet hodnôt „blood_bottles“ 2 a 6. Môžeme tiež zoskupiť viacero stĺpcov, aby sme určili súčet pre každú skupinu.

Ako je možné vidieť, vo funkcii groupby() sme odovzdali zoznam označení stĺpcov, t. j. [‘pacient‘, ‚group‘] na vytvorenie skupín kategórií v každom špecifikovanom stĺpci. Pre každú skupinu špecifikovaných stĺpcov sme určili súčet hodnôt v „blood_bottles“. Napríklad „Ali“ je v stĺpcoch „group“ s hodnotami A a C. V skupine A je súčet hodnôt „blood_bottles“ pre Aliho 2 a 5 v skupine „C“.

Príklad č. 02: Aplikácia viacerých funkcií na jeden stĺpec dátového rámca pomocou funkcie groupby.agg()

Pomocou metódy „groupby()“ pomocou funkcie pandas agg() je možné použiť viacero agregácií. Do metódy možno odovzdať zoznam volateľných položiek. Pozrime sa, ako môžeme agregovať naše údaje pomocou vstavaných metód knižnice numpy. Na rozdiel od predchádzajúceho príkladu použijeme viacero funkcií na jeden stĺpec dátového rámca. Funkcia pd.DataFrame() sa použije na vytvorenie dátového rámca s aspoň jedným stĺpcom obsahujúcim číselné hodnoty.


Požadovaný dátový rámec bol vytvorený s jedným číselným stĺpcom, t. j. 'známky' s hodnotami 41, 40, 35, 39, 49, 31, 34 a 42. Existujú ďalšie 3 stĺpce 'študent', 'predmety' a 'stupeň' v našom dátovom rámci, ktorý je možné rozdeliť do skupín pomocou funkcie groupby(). Hodnoty v stĺpcoch 'študenti' a 'predmety' sú ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') a ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Zatiaľ čo stupeň stĺpca obsahuje hodnoty údajov ako reťazce, t. j. („Ms“, „Bs“, „Bs“, „Ms“, „Ms“, „Ms“, „Bs“, „Bs“). Predpokladajme, že musíme zoskupiť údaje stĺpca „subjekty“ a určiť priemer aj súčet stĺpcov „známky“ pre každé zoskupené údaje.

Názov stĺpca „subjects“ sme špecifikovali ako reťazec vo funkcii groupby() na konverziu údajov do skupín kategórií. Pre stĺpec známok sme použili metódu agg() a vo funkcii agg() sme špecifikovali numpy funkcie np.sum a np.mean na nájdenie súčtu a priemeru známok každej skupiny údajov v predmetoch stĺpca. Súčet a priemerná hodnota pre skupinovú hodnotu „AI“ sú 91 a 45,5. Súčet známok pre hodnotu „C++“ je 75 a stredná hodnota je 37,5. Pre skupinu JAVA je súčet známok 71 a priemerná hodnota je 35,5, zatiaľ čo súčet a priemerná hodnota pre Python sú 74 a 37.

Príklad č. 03: Aplikácia viacerých funkcií na viaceré stĺpce dátového rámca pomocou funkcie groupby.agg()

Namiesto použitia rôznych funkcií na stĺpec jedného dátového rámca môžeme použiť viacero funkcií na rôzne číselné stĺpce. Môžeme použiť slovník vo funkcii agg() ako vstup na aplikáciu špecifickej metódy agregácie na rôzne stĺpce dátového rámca. Pred vytvorením dátového rámca s viacerými číselnými stĺpcami importujme pandy a numpy knižnice.

V novovytvorenom dátovom rámci sú štyri stĺpce s názvami „hráč“, „najnižšie_skóre“, „najvyššie_skóre“ a „umiestnenie“. V stĺpci 'hráč' sme uložili mená niekoľkých hráčov ako reťazcové dátové hodnoty ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin), v stĺpci 'najnižšie_skóre' sú najnižšie skóre hráčov pre niektoré zápasy (12, 34, 2, 21, 9, 1, 0, 34), zatiaľ čo v stĺpci 'najvyššie_skóre' máme najvyššie skóre hráčov (12, 34, 2, 21, 9, 1, 0, 34) a v stĺpci „umiestnenie“ sú názvy miest, kde hráči odohrali svoje zápasy („Francúzsko“, „Anglicko“, „Dubaj“, „ Dubaj“, „Anglicko“, „Francúzsko“, „Dubaj“, „Francúzsko“).

Predpokladajme, že po zoskupení údajov do stĺpca „hráči“ musíme nájsť priemer hodnôt stĺpca „najnižšie_skóre“ a súčet hodnôt údajov „najvyššie_skóre“ pre každú skupinu.

Vnútri funkcie agg() sme odovzdali pythonovský slovník {‘najvyššie_skóre‘ : ‚súčet‘, ‚najnižšie_skóre‘ : ‚priemer‘}, aby sme našli súčet a priemernú hodnotu pre konkrétny stĺpec pre každú skupinu. Je vidieť, že zoskupená hodnota Alex má súčet hodnoty „najvyššie_skóre“ 132 a priemer hodnoty „najnižšie_skóre“ 17,5. Pre „Fin“ je súčet hodnôt 199 a priemer je 18,3333333 v stĺpcoch „najvyššie_skóre“ a „najnižšie_skóre“. Skupinová hodnota Lev má súčtovú hodnotu 180 v „najvyššom_skóre“ a priemernú hodnotu 7,666667 v „najnižšom_skóre“.

Záver

V tomto návode sme diskutovali o groupby() a agregačných funkciách v pandách. Diskutovali sme aj o tom, ako používať funkciu groupby.agg(). V tomto článku sme implementovali tri príklady, aby sme vás naučili, ako používať jednu agregačnú funkciu v stĺpci dátového rámca zoskupením dát z jedného a viacerých stĺpcov, ako aplikovať viaceré agregačné funkcie na jeden stĺpec dátového rámca a ako aplikovať viacero agregačné funkcie vo viacerých stĺpcoch dátového rámca pomocou funkcie groupby.agg().