Pandas Groupby Aggregate

Pandas Groupby Aggregate



„Groupby“ metodas yra būtinas dėl to, kaip gerai jis sujungia duomenis tiek našumo, tiek kodo dydžio požiūriu. Terminas „grupinis“ paprastai apibūdina procedūrą, apimančią šiuos veiksmus:

  • Skaldymas : Taikydami tam tikras sąlygas duomenų rinkiniams, galime suskirstyti duomenis į grupes.
  • Taikymas : procesas, kai kiekvienai grupei individualiai taikome metodą.
  • Sujungimas : procedūra, skirta sujungti įvairius duomenų rinkinius, kad sudarytų duomenų struktūrą, panaudojus groupby() metodą.

Sumavimo metu apskaičiuojama kiekvienos grupės suvestinė statistika. Kiekvienai grupei agregavimo metodas pateikia apibendrintą reikšmę (vieną reikšmę). Sugrupuotais duomenimis galime atlikti keletą agregavimo operacijų, suskirstę duomenis į grupes naudodami funkciją groupby.







Kodėl „Pandos“ siūlo įvairius duomenų kaupimo metodus?

Pandos siūlo daugybę funkcijų ir funkcijų, padedančių analizuoti ir kaupti duomenis. Pavyzdžiui, naudojant pivot(), groupby() ir pivot_table() metodus, kiekvienas siūlo skirtingą duomenų kaupimo perspektyvą. Jie pateikia praktinių būdų, kaip atlikti įvairias užduotis, o ne tiesiog perpakuoti.



Kaip naudoti .agg() funkciją Pandas

Paprastas vidurkis arba reikšmių suma yra dažniausiai naudojama agregavimo funkcija. Norėdami iškviesti agregavimo funkciją, galite naudoti duomenų rėmelio stulpelį arba kelis stulpelius. Pamatysite daug būdų, kaip kaupti duomenis naudojant Pandas groupby metodą. Norėdami parodyti, kiek paprastesnė procedūra, pažvelkime į keletą toliau pateiktų pavyzdžių. Pagrindinės matematinės operacijos, tokios kaip suma, minimumas, maksimumas, vidutinis absoliutus nuokrypis, standartinis nuokrypis, vidurkis, mediana, dispersija ir sandauga, yra vienos dažniausiai naudojamų integruotų agregavimo funkcijų. Norėdami apibendrinti duomenis, galime sujungti groupby ir agg() funkciją.



01 pavyzdys: nustatykite stulpelių sumą grupuodami duomenis naudodami groupby.agg() funkciją

Pirmiausia sukursime duomenų rėmelį naudodami pd.DataFrame() funkciją, kad galėtume sugrupuoti duomenis iš duomenų rėmelio stulpelio ar stulpelių ir tada nustatyti jų vidutinę vertę. Prieš kurdami duomenų rėmelį, turime importuoti pandų modulius ir numpy biblioteką.





Kaip matote, kurdami duomenų rėmelį panaudojome pandų žodyną. Mūsų df duomenų rėmelyje yra keturi stulpeliai: „pacientas“ „grupė“, „amžius“ ir „kraujo buteliai“. Duomenų reikšmės („Ali“, „Jonas“, „Maikas“, „Maikas“, „Jonas“, „Ali“, „Ali“, „Maikas“) pateikiamos stulpelyje „pacientas“, o duomenų reikšmės („A“ “, „A“, „B“, „C“, „A“, „C“, „C“, „B“, (21, 22, 24, 21, 20, 24, 22, 22) ir ( 2, 3, 1, 1, 2, 3, 2, 1) yra atitinkamai stulpeliuose „grupė“, „amžius“ ir „kraujo buteliai“. Tarkime, kad turime nustatyti reikšmių sumą stulpelyje „blood_bottles“, sugrupuodami reikšmes stulpelyje „grupė“.



Grupės duomenims „A“ „blood_bottles“ reikšmių suma yra 7. Grupės „B“ ir „C“ reikšmių „kraujo_buteliai“ reikšmių suma yra atitinkamai 2 ir 6. Taip pat galime sugrupuoti kelis stulpelius, kad nustatytų kiekvienos grupės sumą.

Kaip galima pastebėti, funkcijoje groupby() perdavėme stulpelių etikečių sąrašą, ty ['pacientas', 'group'], kad sukurtume kategorijų grupes kiekviename nurodytame stulpelyje. Kiekvienai nurodytų stulpelių grupei nustatėme „blood_bottles“ verčių sumą. Pavyzdžiui, „Ali“ yra „grupės“ stulpelio reikšmėse A ir C. A grupėje „Blood_bottles“ Ali verčių suma yra 2, o grupėje „C“ – 5.

02 pavyzdys: kelių funkcijų taikymas vienam duomenų rėmelio stulpeliui, naudojant funkciją groupby.agg()

Keli sujungimai gali būti taikomi naudojant metodą „groupby()“, naudojant pandos funkciją agg(). Metodui gali būti perduotas iškviečiamų sąrašas. Pažiūrėkime, kaip galime apibendrinti savo duomenis naudodami numpy bibliotekos integruotus metodus. Skirtingai nei ankstesniame pavyzdyje, vienam duomenų rėmelio stulpeliui pritaikysime kelias funkcijas. Funkcija pd.DataFrame() bus naudojama tam, kad būtų sukurtas duomenų rėmelis su bent vienu stulpeliu, kuriame yra skaitinės reikšmės.


Sukurtas reikalingas duomenų rėmelis, turintis vieną skaitinį stulpelį, t. y. „ženklai“ su reikšmėmis 41, 40, 35, 39, 49, 31, 34 ir 42. Yra dar 3 stulpeliai „studentas“, „dalykai“ ir „laipsnis“. mūsų duomenų rėmelyje, kurį galima suskirstyti į grupes naudojant groupby() funkciją. Stulpelių „mokiniai“ ir „subjektai“ reikšmės yra („Harry“, „Ron“, „Harry“, „Lana“, „Sam“, „Ron“, „Lana“, „Max“) ir ('C++' , „JAVA“, „Python“, „Python“, „AI“, „JAVA“, „C++“, „AI“). Tuo tarpu stulpelio laipsnyje duomenų reikšmės pateikiamos kaip eilutės, t. y. („Ms“, „Bs“, „Bs“, „Ms“, „Ms“, „Ms“, „Bs“, „Bs“). Tarkime, kad turime sugrupuoti stulpelio „subjektai“ duomenis ir nustatyti kiekvieno sugrupuoto duomenų stulpelio „žymių“ vidurkį ir sumą.

Stulpelio „subjektai“ pavadinimą nurodėme kaip eilutę funkcijoje groupby (), kad konvertuotume duomenis į kategorijų grupes. Pažymėjimų stulpeliui naudojome agg() metodą, o funkcijos agg() viduje nurodėme numpy funkcijas np.sum ir np.mean, kad rastume kiekvienos grupės duomenų stulpelių temų pažymių sumą ir vidurkį. Grupės reikšmės „AI“ suma ir vidutinė vertė yra atitinkamai 91 ir 45,5. Vertės „C++“ balų suma yra 75, o vidutinė vertė yra 37,5. JAVA grupės balų suma yra 71, o vidutinė reikšmė yra 35,5, o Python suma ir vidutinė reikšmė yra atitinkamai 74 ir 37.

03 pavyzdys: kelių funkcijų taikymas keliems duomenų rėmo stulpeliams naudojant groupby.agg() funkciją

Užuot taikę skirtingas funkcijas vienam duomenų rėmelio stulpeliui, galime pritaikyti kelias funkcijas skirtingiems skaitiniams stulpeliams. Funkcijoje agg() esantį žodyną galime naudoti kaip įvestį, kad skirtingų duomenų rėmelių stulpeliams pritaikytume konkretų agregavimo metodą. Prieš kurdami duomenų rėmelį su keliais skaitiniais stulpeliais, importuokime pandas ir numpy bibliotekas.

Naujai sukurtame duomenų rėmelyje yra keturi stulpeliai su pavadinimais „player“, „least_score“, „highest_score“ ir „location“. Stulpelyje „žaidėjas“ išsaugojome kelių žaidėjų pavadinimus kaip eilučių duomenų reikšmes („Liūtas“, „Aleksas“, „Liūtas“, „Fin“, „Liūtas“, „Aleksas“, „Fin“, „ Fin'), stulpelyje 'least_score' pateikiami žemiausi žaidėjų balai per kai kurias rungtynes ​​(12, 34, 2, 21, 9, 1, 0, 34), o stulpelyje 'highest_score' turime aukščiausius žaidėjų balus. (12, 34, 2, 21, 9, 1, 0, 34), o stulpelyje „vieta“ yra vietų, kuriose žaidėjai žaidė savo rungtynes, pavadinimai („Prancūzija“, „Anglija“, „Dubajus“, „ Dubajus“, „Anglija“, „Prancūzija“, „Dubajus“, „Prancūzija“).

Tarkime, sugrupavus duomenis į stulpelį „žaidėjai“, turime rasti kiekvienos grupės „least_score“ stulpelio verčių vidurkį ir „highest_score“ duomenų reikšmių sumą.

Funkcijoje agg() perdavėme python žodyną {‘highest_score’ : ‘sum’, ‘least_score’ : ‘mean’}, kad surastume kiekvienos grupės nurodyto stulpelio sumą ir vidutinę vertę. Matyti, kad sugrupuotos reikšmės Alex suma yra „didžiausias_balas“ 132, o „mažiausio balo“ vertės vidurkis yra 17,5. „Fin“ reikšmių suma yra 199, o vidurkis atitinkamai yra 18,3333333 stulpeliuose „highest_score“ ir „least_score“. Grupės vertės Liūtas suminė vertė yra 180, skiltyje „didžiausias_balas“, o vidutinė vertė yra 7,666667, esanti „mažiausias_balas“.

Išvada

Šioje pamokoje aptarėme groupby() ir pandų agregavimo funkcijas. Taip pat aptarėme, kaip naudoti funkciją groupby.agg(). Šiame straipsnyje įdiegėme tris pavyzdžius, kad išmokytume, kaip duomenų rėmelio stulpelyje naudoti vieną agregavimo funkciją sugrupuojant vieno ir kelių stulpelių duomenis, kaip pritaikyti kelias agregavimo funkcijas viename duomenų rėmelio stulpelyje ir kaip taikyti kelis agregavimo funkcijas keliuose duomenų rėmelio stulpeliuose, naudojant funkciją groupby.agg().