Pandas Groupby Agregat

Pandas Groupby Agregat



Tehnika groupby bitna je zbog toga koliko dobro agregira podatke u smislu izvedbe i veličine koda. Izraz 'groupby' obično opisuje postupak koji uključuje sljedeće korake:

  • Cijepanje : Primjenom određenih uvjeta na skupove podataka možemo podijeliti podatke u grupe.
  • Primjena : Proces u kojem pojedinačno primjenjujemo metodu na svaku grupu.
  • Kombiniranje : Postupak za kombiniranje različitih skupova podataka za formiranje strukture podataka nakon korištenja metode groupby().

U procesu agregacije izračunava se sumarna statistika za svaku grupu. Za svaku grupu, agregatna metoda vraća agregiranu vrijednost (pojedinačnu vrijednost). Možemo izvesti nekoliko operacija združivanja na grupiranim podacima nakon dijeljenja podataka u grupe pomoću funkcije groupby.







Zašto Pandas nudi razne metode prikupljanja podataka?

Pande nude širok raspon značajki i funkcija koje pomažu u analizi i prikupljanju podataka. Korištenje metoda pivot(), groupby() i pivot_table(), na primjer, nudi različitu perspektivu o tome kako će podaci biti agregirani. Oni pružaju praktične pristupe izvršavanju raznih zadataka, umjesto da se jednostavno prepakiraju.



Kako koristiti .agg() funkciju u Pandas

Jednostavan prosjek ili zbroj vrijednosti funkcija je agregacije koja se najčešće koristi. Možete koristiti stupac podatkovnog okvira ili više stupaca za pozivanje skupne funkcije. Vidjet ćete mnogo načina prikupljanja podataka pomoću metode Pandas groupby. Kako bismo pokazali koliko je postupak lakši, pogledajmo neke primjere u nastavku. Osnovne matematičke operacije kao što su zbroj, minimum, maksimum, srednja apsolutna devijacija, standardna devijacija, srednja vrijednost, medijan, varijanca i produkt su među najčešće korištenim ugrađenim funkcijama združivanja. Da bismo sažeti podatke, možemo kombinirati groupby i agg() funkciju.



Primjer # 01: Određivanje zbroja stupaca grupiranjem podataka pomoću funkcije groupby.agg()

Prvo ćemo izraditi podatkovni okvir pomoću funkcije pd.DataFrame() kako bismo mogli grupirati podatke iz stupca ili stupaca podatkovnog okvira, a zatim odrediti njihovu srednju vrijednost. Moramo uvesti module pandi i biblioteku numpy prije nego što stvorimo podatkovni okvir.





Kao što vidite, upotrijebili smo rječnik pandas za izradu okvira podataka. Naš df podatkovni okvir ima četiri stupca: 'pacijent', 'skupina', 'dob' i 'boce krvi'. Vrijednosti podataka ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') sadržane su u stupcu 'pacijent', dok su vrijednosti podataka ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) i ( 2, 3, 1, 1, 2, 3, 2, 1) nalaze se u stupcima 'grupa', 'dob' i 'boce_krvi'. Pretpostavimo da moramo odrediti zbroj vrijednosti u stupcu 'boce_krvi' grupiranjem vrijednosti u stupcu 'grupa'.



Za grupne podatke 'A', zbroj vrijednosti 'blood_bottles' je 7. Za grupne vrijednosti 'B' i 'C', zbroj vrijednosti 'blood_bottles' je 2 odnosno 6. Također možemo grupirati više stupaca kako bismo odredili zbroj za svaku grupu.

Kao što se može primijetiti, proslijedili smo popis oznaka stupaca, tj. ['pacijent', 'grupa'] unutar funkcije groupby() kako bismo stvorili grupe kategorija u svakom navedenom stupcu. Za svaku grupu navedenih stupaca odredili smo zbroj vrijednosti u 'bocama_krvi'. Na primjer, 'Ali' je u vrijednostima A i C stupca 'grupe'. U grupi A, zbroj vrijednosti 'boca_krvi' za Alija je 2, a 5 u grupi 'C'.

Primjer # 02: Primjena više funkcija na jedan stupac podatkovnog okvira pomoću funkcije groupby.agg()

Višestruka združivanja mogu se primijeniti metodom 'groupby()' pomoću pandas funkcije agg(). Pozivni popis može se proslijediti metodi. Pogledajmo kako možemo agregirati naše podatke pomoću ugrađenih metoda knjižnice numpy. Za razliku od prethodnog primjera, primijenit ćemo više funkcija na jedan stupac podatkovnog okvira. Funkcija pd.DataFrame() koristit će se za stvaranje podatkovnog okvira za ovo s najmanje jednim stupcem koji sadrži numeričke vrijednosti.


Stvoren je potreban okvir podataka s jednim numeričkim stupcem, tj. 'ocjenama' s vrijednostima 41, 40, 35, 39, 49, 31, 34 i 42. Postoje još 3 stupca 'student', 'predmeti' i 'diploma' u našem podatkovnom okviru koji se može podijeliti u grupe pomoću funkcije groupby(). Vrijednosti u stupcu 'studenti' i 'predmeti' su ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') i ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Dok stupanj stupca sadrži vrijednosti podataka kao nizove, tj. ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Pretpostavimo da moramo grupirati podatke stupaca 'subjekata' i odrediti i srednju vrijednost i zbroj stupaca 'oznaka' za svaki grupirani podatak.

Naveli smo naziv stupca 'predmeti' kao niz unutar funkcije groupby() za pretvaranje podataka u grupe kategorija. Za stupac s ocjenama upotrijebili smo metodu agg(), a unutar funkcije agg() naveli smo numpy funkcije np.sum i np.mean za pronalaženje zbroja i prosjeka ocjena svake grupe podataka u stupcu subjekti. Zbroj i srednja vrijednost za grupnu vrijednost 'AI' su 91 odnosno 45,5. Zbroj ocjena za vrijednost ‘C++’ je 75, a srednja vrijednost 37,5. Za grupu JAVA zbroj bodova je 71, a srednja vrijednost 35,5, dok su zbroj i srednja vrijednost za Python 74, odnosno 37.

Primjer # 03: Primjena višestrukih funkcija na višestruke stupce podatkovnog okvira pomoću funkcije groupby.agg()

Umjesto primjene različitih funkcija na jedan stupac podatkovnog okvira, možemo primijeniti više funkcija na različite numeričke stupce. Možemo upotrijebiti rječnik u funkciji agg() kao ulaz za primjenu određene metode združivanja na različite stupce okvira podataka. Uvezimo biblioteke pandas i numpy prije stvaranja podatkovnog okvira s više numeričkih stupaca.

Postoje četiri stupca u novostvorenom podatkovnom okviru s nazivima 'player', 'least_score', 'highest_score' i 'location'. U stupcu 'igrač' pohranili smo imena nekoliko igrača kao vrijednosti niza podataka ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), u stupcu 'least_score' nalaze se najniži rezultati igrača za neke utakmice (12, 34, 2, 21, 9, 1, 0, 34), dok u stupcu 'highest_score' imamo najveći bodovi igrača (12, 34, 2, 21, 9, 1, 0, 34), a u stupcu 'lokacija' nalaze se nazivi dvorana na kojima su igrači igrali svoje utakmice ('Francuska', 'Engleska', 'Dubai', ' Dubai', 'Engleska', 'Francuska', 'Dubai', 'Francuska').

Pretpostavimo da nakon grupiranja podataka u stupac 'igrači' moramo pronaći prosjek za vrijednosti stupca 'least_score' i zbroj za vrijednosti podataka 'hightest_score' za svaku grupu.

Unutar funkcije agg() proslijedili smo python rječnik {‘highest_score’ : ‘sum’, ‘least_score’ : ‘mean’} kako bismo pronašli zbroj i prosječnu vrijednost za određeni stupac u odnosu na svaku grupu. Može se vidjeti da grupirana vrijednost Alex ima zbroj vrijednosti 'highest_score' 132 i prosjek vrijednosti 'least_score' 17,5. Za 'Fin' zbroj vrijednosti je 199, a prosjek je 18,3333333 u stupcima 'highest_score' i 'least_score'. Grupna vrijednost Leo ima vrijednost zbroja 180 u 'highest_score' i prosječnu vrijednost 7,666667 u 'least_score'.

Zaključak

U ovom vodiču raspravljali smo o funkcijama groupby() i agregacije u pandama. Također smo razgovarali o tome kako koristiti funkciju groupby.agg(). Implementirali smo tri primjera u ovom članku da bismo vas naučili kako koristiti jednu funkciju združivanja na stupcu podatkovnog okvira grupiranjem podataka jednog i više stupaca, kako primijeniti višestruke funkcije združivanja na jedan stupac podatkovnog okvira i kako primijeniti višestruke funkcije agregacije na više stupaca podatkovnog okvira pomoću funkcije groupby.agg().