Pandas Groupby Agregat

Pandas Groupby Agregat



Tehnika groupby je bistvena zaradi tega, kako dobro združuje podatke v smislu zmogljivosti in velikosti kode. Izraz »groupby« običajno opisuje postopek, ki vključuje naslednje korake:

  • Razcepitev : Z uporabo določenih pogojev za nize podatkov lahko razdelimo podatke v skupine.
  • Prijavljanje : Postopek, kjer individualno uporabimo metodo za vsako skupino.
  • Kombiniranje : Postopek za združevanje različnih nizov podatkov za oblikovanje podatkovne strukture po uporabi metode groupby().

V procesu združevanja se za vsako skupino izračuna sumarna statistika. Za vsako skupino agregirana metoda vrne agregirano vrednost (eno vrednost). Na združenih podatkih lahko izvedemo več operacij združevanja, potem ko podatke razdelimo v skupine s funkcijo groupby.







Zakaj Pande ponujajo različne metode združevanja podatkov?

Pande ponujajo široko paleto funkcij in funkcij za pomoč pri analizi in združevanju podatkov. Uporaba metod pivot(), groupby() in pivot_table(), na primer, vsaka ponuja drugačen pogled na to, kako bi bili podatki združeni. Zagotavljajo praktične pristope k izvajanju različnih nalog, namesto da bi jih preprosto prepakirali.



Kako uporabljati funkcijo .agg() v Pandas

Preprosto povprečje ali vsota vrednosti je agregacijska funkcija, ki se najpogosteje uporablja. Za klic agregatne funkcije lahko uporabite stolpec podatkovnega okvira ali več stolpcev. Videli boste veliko načinov za združevanje podatkov z metodo Pandas groupby. Da pokažemo, kako lažji je postopek, si oglejmo nekaj spodnjih primerov. Osnovne matematične operacije, kot so vsota, minimum, maksimum, povprečni absolutni odklon, standardni odklon, povprečje, mediana, varianca in produkt, so med najpogosteje uporabljenimi vgrajenimi funkcijami združevanja. Za povzetek podatkov lahko združimo groupby in funkcijo agg().



Primer # 01: Določanje vsote stolpcev z združevanjem podatkov v skupine s funkcijo groupby.agg().

Najprej bomo ustvarili podatkovni okvir s funkcijo pd.DataFrame(), da bomo lahko združili podatke iz stolpca ali stolpcev podatkovnega okvira in nato določili njihovo srednjo vrednost. Preden ustvarimo podatkovni okvir, moramo uvoziti module pand in knjižnico numpy.





Kot lahko vidite, smo za ustvarjanje našega podatkovnega okvira uporabili slovar pand. Naš podatkovni okvir df ima štiri stolpce: »pacient«, »skupina«, »starost« in »stekleničke s krvjo«. Vrednosti podatkov ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') so vsebovane v stolpcu »pacient«, medtem ko vrednosti podatkov ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) in ( 2, 3, 1, 1, 2, 3, 2, 1) so v stolpcih »skupina«, »starost« in »steklenice_krvi«. Recimo, da moramo določiti vsoto vrednosti v stolpcu 'blood_bottles' z združevanjem vrednosti v stolpcu 'group'.



Za skupinske podatke „A“ je vsota vrednosti „blood_bottles“ 7. Za skupinske vrednosti „B“ in „C“ je vsota vrednosti „blood_bottles“ 2 oziroma 6. Združimo lahko tudi več stolpcev, da določimo vsoto za vsako skupino.

Kot lahko opazimo, smo posredovali seznam oznak stolpcev, tj. ['pacient', 'group'] znotraj funkcije groupby(), da ustvarimo skupine kategorij v vsakem določenem stolpcu. Za vsako skupino določenih stolpcev smo določili vsoto vrednosti v 'blood_bottles'. Na primer, 'Ali' je v stolpcu 'skupina' vrednosti A in C. V skupini A je vsota vrednosti 'blood_bottles' za Ali 2 in 5 v skupini 'C'.

Primer # 02: Uporaba več funkcij v enem stolpcu podatkovnega okvira z uporabo funkcije groupby.agg().

Več združevanj je mogoče uporabiti z metodo »groupby()« z uporabo pandas funkcije agg(). Seznam, ki ga je mogoče klicati, se lahko posreduje metodi. Poglejmo, kako lahko svoje podatke združimo z uporabo vgrajenih metod knjižnice numpy. Za razliko od prejšnjega primera bomo uporabili več funkcij za en sam stolpec podatkovnega okvira. Funkcija pd.DataFrame() bo uporabljena za ustvarjanje podatkovnega okvira za to z vsaj enim stolpcem, ki vsebuje številske vrednosti.


Zahtevani podatkovni okvir je bil ustvarjen z enim številčnim stolpcem, tj. 'oceni' z vrednostmi 41, 40, 35, 39, 49, 31, 34 in 42. Obstajajo še 3 stolpci 'študent', 'predmeti' in 'diploma' v našem podatkovnem okviru, ki ga je mogoče razdeliti v skupine z uporabo funkcije groupby(). Vrednosti v stolpcu 'študenti' in 'predmeti' so ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') in ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Medtem ko stopnja stolpca vsebuje podatkovne vrednosti kot nize, tj. Recimo, da moramo združiti podatke stolpcev 'predmetov' in določiti povprečje in vsoto stolpcev 'oznak' za vsak združen podatek.

Ime stolpca »predmeti« smo določili kot niz znotraj funkcije groupby() za pretvorbo podatkov v skupine kategorij. Za stolpec z ocenami smo uporabili metodo agg(), znotraj funkcije agg() pa smo določili funkciji numpy np.sum in np.mean za iskanje vsote in povprečja ocen vsake skupine podatkov v stolpcu Subjects. Vsota in srednja vrednost za vrednost skupine 'AI' sta 91 oziroma 45,5. Vsota točk za vrednost 'C++' je 75, srednja vrednost pa 37,5. Za skupino JAVA je vsota ocen 71 in srednja vrednost 35,5, medtem ko sta vsota in srednja vrednost za Python 74 oziroma 37.

Primer # 03: Uporaba več funkcij v več stolpcih podatkovnega okvira z uporabo funkcije groupby.agg().

Namesto da bi uporabili različne funkcije za stolpec posameznega podatkovnega okvira, lahko uporabimo več funkcij za različne številske stolpce. Slovar lahko uporabimo v funkciji agg() kot vhod za uporabo specifične metode združevanja za različne stolpce podatkovnega okvira. Uvozimo knjižnici pandas in numpy, preden ustvarimo podatkovni okvir z več številskimi stolpci.

V novo ustvarjenem podatkovnem okvirju so štirje stolpci z imeni 'player', 'least_score', 'highest_score' in 'location'. V stolpcu 'igralec' smo shranili imena nekaj igralcev kot podatkovne vrednosti niza ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), v stolpcu 'least_score' so najnižje ocene igralcev za nekatere tekme (12, 34, 2, 21, 9, 1, 0, 34), v stolpcu 'highest_score' pa najvišje ocene igralcev. (12, 34, 2, 21, 9, 1, 0, 34) in v stolpcu 'lokacija' so imena prizorišč, kjer so igralci igrali svoje tekme ('Francija', 'Anglija', 'Dubaj', ' Dubaj', 'Anglija', 'Francija', 'Dubaj', 'Francija').

Recimo, da moramo po združevanju podatkov v stolpec »igralci« najti povprečje za vrednosti stolpca »least_score« in vsoto za vrednosti podatkov »hightest_score« za vsako skupino.

Znotraj funkcije agg() smo posredovali slovar python {'highest_score' : 'sum', 'least_score' : 'mean'} za iskanje vsote in povprečne vrednosti za določen stolpec glede na vsako skupino. Vidimo lahko, da ima združena vrednost Alex vsoto vrednosti 'highest_score' 132 in povprečje vrednosti 'least_score' 17,5. Za »Fin« je vsota vrednosti 199, povprečje pa 18,3333333 v stolpcu »highest_score« oziroma »least_score«. Vrednost skupine Leo ima vsoto 180 v 'highest_score' in povprečno vrednost 7,666667 v 'least_score'.

Zaključek

V tej vadnici smo razpravljali o funkcijah groupby() in združevanju v pandah. Razpravljali smo tudi o uporabi funkcije groupby.agg(). V tem članku smo uvedli tri primere, da vas naučimo, kako uporabiti eno funkcijo združevanja v stolpcu podatkovnega okvira z združevanjem podatkov enega in več stolpcev, kako uporabiti več funkcij združevanja v enem stolpcu podatkovnega okvira in kako uporabiti več funkcije združevanja v več stolpcih podatkovnega okvira s funkcijo groupby.agg().