Pandas Groupby Aggregate

Pandas Groupby Aggregate



A groupby technika elengedhetetlen, mert mennyire jól összesíti az adatokat mind a teljesítmény, mind a kódméret tekintetében. A „groupby” kifejezés általában egy olyan eljárást ír le, amely a következő lépéseket tartalmazza:

  • Hasítás : Az adatkészletekre bizonyos feltételeket alkalmazva csoportokra oszthatjuk az adatokat.
  • Jelentkezés : Olyan folyamat, ahol minden csoportra egyénileg alkalmazunk egy módszert.
  • Kombinálás : Eljárás különböző adatkészletek adatszerkezet kialakítására való kombinálására a groupby() metódus használata után.

Az összesítés során minden csoportra összefoglaló statisztika kerül kiszámításra. Az összesített metódus minden csoporthoz egy összesített értéket (egy értéket) ad vissza. A csoportosított adatokon több összesítési műveletet végezhetünk, miután az adatokat a groupby függvény segítségével csoportokra osztottuk.







Miért kínálnak a pandák sokféle adatgyűjtési módszert?

A Pandák szolgáltatások és funkciók széles skáláját kínálják az adatok elemzéséhez és összesítéséhez. Például a pivot(), groupby() és pivot_table() metódusok mindegyike más-más perspektívát kínál az adatok aggregálására. Gyakorlati megközelítést kínálnak a különféle feladatok elvégzéséhez, ahelyett, hogy egyszerűen újracsomagolnák őket.



Az .agg() függvény használata Pandasban

Az értékek egyszerű átlaga vagy összege a leggyakrabban használt összesítő függvény. Egy adatkeret oszlopát vagy több oszlopát is használhatja az összesítő függvény meghívásához. Számos módot fog látni az adatok összesítésére a Pandas groupby módszerrel. Hogy bemutassuk, mennyivel egyszerűbb az eljárás, nézzünk meg néhány példát az alábbiakban. Az olyan alapvető matematikai műveletek, mint az összeg, minimum, maximum, átlagos abszolút eltérés, szórás, átlag, medián, variancia és szorzat, a leggyakrabban használt beépített összesítő függvények közé tartoznak. Az adatok összegzéséhez kombinálhatjuk a groupby és az agg() függvényt.



# 01. példa: Határozza meg az oszlopok összegét az adatok csoportosításával a groupby.agg() függvény segítségével

Először egy adatkeretet hozunk létre a pd.DataFrame() függvény segítségével, hogy csoportosíthassuk az adatokat az adatkeret oszlopából vagy oszlopaiból, majd meghatározzuk azok középértékét. Az adatkeret létrehozása előtt importálnunk kell a pandák moduljait és a numpy könyvtárat.





Amint látja, a panda szótárat használtuk adatkeretünk létrehozásához. Df adatkeretünk négy oszlopból áll: „beteg” „csoport”, „életkor” és „vérpalackok”. Az adatértékeket ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') a 'patient' oszlop tartalmazza, míg az adatértékeket ('A' ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) és ( 2, 3, 1, 1, 2, 3, 2, 1) a „csoport”, „életkor” és „vérpalackok” oszlopban található. Tegyük fel, hogy meg kell határoznunk a „blood_bottles” oszlopban lévő értékek összegét a „group” oszlopban lévő értékek csoportosításával.



Az „A” csoportadatoknál a „blood_bottles” értékeinek összege 7. A „B” és „C” csoportértékeknél a „blood_bottles” értékeinek összege 2, illetve 6. Több oszlopot is csoportosíthatunk, hogy meghatározzuk az egyes csoportok összegét.

Mint látható, a groupby() függvényen belül átadtuk az oszlopcímkék listáját, azaz a ['patient', 'group']-t, hogy létrehozzuk a kategóriacsoportokat az egyes megadott oszlopokban. A megadott oszlopok minden csoportjához meghatároztuk a „blood_bottles” értékek összegét. Például az „Ali” a „group” oszlopban található A és C értékben. Az A csoportban az Ali „blood_bottles” értékeinek összege 2, a „C” csoportban pedig 5.

02. példa: Több függvény alkalmazása az adatkeret egyetlen oszlopára a groupby.agg() függvény használatával

Több összesítés is alkalmazható a „groupby()” metódussal az agg() pandas függvény használatával. A metódusnak átadható egy hívható lista. Nézzük meg, hogyan tudjuk összesíteni adatainkat a numpy könyvtár beépített módszereivel. Az előző példától eltérően több függvényt fogunk alkalmazni az adatkeret egyetlen oszlopára. A pd.DataFrame() függvénnyel egy adatkeretet hozunk létre ehhez legalább egy számértékeket tartalmazó oszloppal.


A szükséges adatkeret egy numerikus oszloppal, azaz 41, 40, 35, 39, 49, 31, 34 és 42 értékkel rendelkező „jelekkel” készült. Még 3 oszlop található: „hallgató”, „tantárgyak” és „fokozat”. adatkeretünkben, amely a groupby() függvény segítségével csoportokra osztható. A „tanulók” és a „tantárgyak” oszlopban található értékek a következők: ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') és ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Míg az oszlop foka karakterláncok formájában tartalmazza az adatértékeket, azaz ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Tegyük fel, hogy csoportosítanunk kell a „tárgyak” oszlop adatait, és minden egyes csoportosított adathoz meg kell határoznunk a „jelek” oszlopának átlagát és összegét.

A „subject” oszlop nevét karakterláncként adtuk meg a groupby() függvényen belül, hogy az adatokat kategóriacsoportokba konvertáljuk. A marks oszlophoz az agg() metódust használtuk, az agg() függvényen belül pedig az np.sum és np.mean numpy függvényeket adtuk meg, hogy megtaláljuk az oszloptárgyak egyes csoportadatainak pontszámainak összegét és átlagát. Az „AI” csoportérték összege és átlagértéke 91, illetve 45,5. A ’C++’ érték jegyeinek összege 75, az átlagértéke 37,5. A JAVA csoportnál a pontok összege 71, az átlagérték pedig 35,5, míg a Python esetében az összeg és az átlagérték 74, illetve 37.

03. példa: Több függvény alkalmazása az adatkeret több oszlopára a groupby.agg() függvény használatával

Ahelyett, hogy különböző függvényeket alkalmaznánk egyetlen adatkeret oszlopára, több függvényt is alkalmazhatunk különböző numerikus oszlopokra. Használhatunk egy szótárt az agg() függvényben bemenetként, hogy egy adott összesítési módszert alkalmazzunk a különböző adatkeretek oszlopaira. Mielőtt létrehoznánk egy több numerikus oszlopot tartalmazó adatkeretet, importáljuk a pandákat és a numpy könyvtárakat.

Az újonnan létrehozott adatkeretben négy oszlop található „lejátszó”, „legkisebb_pontszám”, „legmagasabb_pontszám” és „helyszín” névvel. A 'lejátszó' oszlopban néhány játékos nevét karakterlánc adatértékként tároltuk ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), a 'least_score' oszlopban a játékosok legalacsonyabb pontszámai vannak egyes meccseken (12, 34, 2, 21, 9, 1, 0, 34), míg a 'legmagasabb_pontszám' oszlopban a játékosok legmagasabb pontszámai vannak. (12, 34, 2, 21, 9, 1, 0, 34), a „helyszín” oszlopban pedig azon helyszínek nevei találhatók, ahol a játékosok lejátszották a meccseiket („Franciaország”, „Anglia”, „Dubai”, „ Dubai”, „Anglia”, „Franciaország”, „Dubai”, „Franciaország”).

Tegyük fel, hogy miután az adatokat a „players” oszlopba csoportosítottuk, meg kell találnunk az egyes csoportok esetében a „least_score” oszlopértékek átlagát és a „legmagasabb_pontszám” értékeinek összegét.

Az agg() függvényen belül átadtunk egy python szótárt {’highest_score’ : ‘sum’, ‘least_score’ : ‘mean’}, hogy megtaláljuk az egyes csoportokhoz tartozó adott oszlop összegét és átlagát. Látható, hogy az Alex csoportosított értéknél a „legmagasabb_pontszám” összege 132, a „legkisebb_pontszám” érték átlaga pedig 17,5. A „Fin” esetében az értékek összege 199, az átlag pedig 18,3333333 a „legmagasabb_pontszám” és a „legkisebb_pontszám” oszlopban. Az Oroszlán csoportérték összege 180 a 'legmagasabb_pontszám'-ban, és átlagos értéke 7,666667 a 'legkisebb_pontszám'-ban.

Következtetés

Ebben az oktatóanyagban a pandák groupby() és aggregációs függvényeit tárgyaltuk. Azt is megbeszéltük, hogyan kell használni a groupby.agg() függvényt. Ebben a cikkben három példát valósítottunk meg, hogy megtanítsuk, hogyan kell egyetlen összesítő függvényt használni egy adatkeret oszlopon egyetlen és több oszlop adatainak csoportosításával, hogyan lehet több összesítő függvényt alkalmazni egy adatkeret egyetlen oszlopára, és hogyan kell több adatkeretet alkalmazni. aggregációs függvények az adatkeret több oszlopában a groupby.agg() függvény használatával.