Pandade rühmitus

Pandade Ruhmitus



Groupby tehnika on oluline, kuna see koondab andmeid nii jõudluse kui ka koodi suuruse osas. Termin 'grupimees' kirjeldab tavaliselt protseduuri, mis hõlmab järgmisi samme:

  • Poolitamine : Andmekogumitele teatud tingimusi rakendades saame jagada andmed rühmadesse.
  • Taotlemine : Protsess, kus rakendame igale rühmale eraldi meetodit.
  • Kombineerimine : protseduur erinevate andmekogumite kombineerimiseks andmestruktuuri moodustamiseks pärast meetodi groupby() kasutamist.

Summeerimise käigus arvutatakse iga rühma kohta kokkuvõtlik statistika. Iga rühma jaoks tagastab koondamismeetod koondväärtuse (ühe väärtuse). Pärast andmete jagamist rühmadesse funktsiooni groupby abil saame rühmitatud andmetega teha mitmeid koondamistoiminguid.







Miks pakuvad Pandad mitmesuguseid andmete koondamise meetodeid?

Pandad pakuvad laia valikut funktsioone ja funktsioone, mis aitavad andmeid analüüsida ja koondada. Näiteks meetodite pivot(), groupby() ja pivot_table() kasutamine pakub igaüks erineva vaatenurga andmete koondamisele. Need pakuvad praktilisi lähenemisviise erinevate ülesannete täitmiseks, mitte lihtsalt ümberpakendamiseks.



Funktsiooni .agg() kasutamine Pandases

Lihtne keskmine või väärtuste summa on kõige sagedamini kasutatav liitfunktsioon. Koondfunktsiooni kutsumiseks võite kasutada andmeraami veergu või mitut veergu. Näete palju võimalusi andmete koondamiseks Pandade rühmapõhise meetodi abil. Et näidata, kui palju lihtsam see protseduur on, vaatame mõnda allpool toodud näidet. Põhilised matemaatilised toimingud, nagu summa, miinimum, maksimum, keskmine absoluuthälve, standardhälve, keskmine, mediaan, dispersioon ja korrutis, on ühed kõige sagedamini kasutatavad sisseehitatud liitmisfunktsioonid. Andmete kokkuvõtteks saame ühendada groupby ja funktsiooni agg().



Näide # 01: määrake veergude summa andmete rühmitamise teel, kasutades funktsiooni groupby.agg()

Esmalt loome andmeraami funktsiooni pd.DataFrame() abil, et saaksime andmeraami veerust või veergudest andmed rühmitada ja seejärel määrata nende keskmise väärtuse. Enne andmeraami loomist peame importima pandade moodulid ja numpy raamatukogu.





Nagu näete, kasutasime andmeraami loomiseks pandade sõnastikku. Meie df-andmeraamil on neli veergu: 'patsient' 'rühm', 'vanus' ja 'verepudelid'. Andmeväärtused ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') sisalduvad veerus 'patsient', samas kui andmeväärtused ('A' ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) ja ( 2, 3, 1, 1, 2, 3, 2, 1) sisalduvad vastavalt veergudes “grupp”, “vanus” ja “verepudelid”. Oletame, et peame määrama väärtuste summa veerus „blood_bottles”, rühmitades väärtused veerus „grupp”.



Rühmaandmete 'A' puhul on 'blood_bottles' väärtuste summa 7. Rühma väärtuste 'B' ja 'C' puhul on 'blood_bottles' väärtuste summa vastavalt 2 ja 6. Samuti saame rühmitada mitu veergu, et määrata iga rühma summa.

Nagu võib täheldada, oleme funktsiooni groupby() sees edastanud veergude siltide loendi, st ['patsient', 'rühm'], et luua igas määratud veerus kategooriate rühmad. Iga määratud veergude rühma jaoks oleme määranud väärtuste summa jaotises „blood_bottles”. Näiteks 'Ali' on veerus 'group' väärtused A ja C. Rühmas A on Ali väärtuse 'blood_bottles' väärtuste summa 2 ja rühmas 'C' 5.

Näide # 02: Mitme funktsiooni rakendamine andmekaadri ühele veerule Funktsiooni groupby.agg() kasutamine

Meetodiga „groupby()” saab rakendada mitut liitmist, kasutades pandafunktsiooni agg(). Meetodile saab edastada helistamisloendi. Vaatame, kuidas saame oma andmeid koondada, kasutades numpy raamatukogu sisseehitatud meetodeid. Erinevalt eelmisest näitest rakendame andmeraami ühele veerule mitu funktsiooni. Funktsiooni pd.DataFrame() kasutatakse selleks andmeraami loomiseks, milles on vähemalt üks arvväärtusi sisaldav veerg.


Nõutav andmeraam on loodud ühe numbrilise veeruga, st 'märgid' väärtustega 41, 40, 35, 39, 49, 31, 34 ja 42. Veel on 3 veergu 'õpilane', 'ained' ja 'kraad' meie andmeraamis, mida saab funktsiooni groupby() abil rühmadeks jagada. Väärtused veerus 'õpilased' ja 'subjects' on ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') ja ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Veeru aste sisaldab andmeväärtusi stringidena, st ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Oletame, et peame rühmitama veeru 'subjektid' andmed ja määrama iga rühmitatud andmete jaoks nii veeru 'märgiste' keskmise kui ka summa.

Andmete teisendamiseks kategooriarühmadesse oleme määranud veeru „teemad” nime stringina funktsiooni groupby() sees. Märkide veeru jaoks oleme kasutanud meetodit agg() ja funktsiooni agg() sees oleme määranud numpy funktsioonid np.sum ja np.mean, et leida veergude subjektide iga rühma andmete hinnete summa ja keskmine. Grupi väärtuse 'AI' summa ja keskmine väärtus on vastavalt 91 ja 45,5. Väärtuse C++ hindesumma on 75 ja keskmine väärtus 37,5. Rühma JAVA puhul on punktide summa 71 ja keskmine väärtus 35,5, samas kui Pythoni puhul on summa ja keskmine väärtus vastavalt 74 ja 37.

Näide # 03: Mitme funktsiooni rakendamine andmeraami mitmele veerule Funktsiooni groupby.agg() kasutamine

Selle asemel, et rakendada ühe andmekaadri veerule erinevaid funktsioone, saame erinevatele numbriveergudele rakendada mitut funktsiooni. Saame kasutada funktsiooni agg() sõnastikku sisendina, et rakendada eri andmeraami veergudele spetsiifilist liitmismeetodit. Impordime pandad ja numpy teegid enne mitme numbriveeruga andmeraami loomist.

Uues andmeraamis on neli veergu nimedega 'mängija', 'väikseim_skoor', 'kõrgeim_skoor' ja 'asukoht'. Veerus 'mängija' oleme salvestanud stringiandmete väärtustena mõne mängija nimed ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), veerus 'least_score' on mängijate madalaimad punktisummad mõne matši kohta (12, 34, 2, 21, 9, 1, 0, 34), samas kui veerus 'highest_score' on mängijate kõrgeimad punktisummad. (12, 34, 2, 21, 9, 1, 0, 34) ja veerus 'asukoht' on nende mängupaikade nimed, kus mängijad on oma mänge mänginud ('Prantsusmaa', 'Inglismaa', 'Dubai', ' Dubai', 'Inglismaa', 'Prantsusmaa', 'Dubai', 'Prantsusmaa').

Oletame, et pärast andmete rühmitamist veergu 'mängijad', peame leidma iga rühma veeru 'least_score' väärtuste keskmise ja summa 'highest_score' andmeväärtuste jaoks.

Funktsiooni agg() sees edastasime pythoni sõnastiku {'highest_score' : 'sum', 'least_score' : 'mean'}, et leida iga rühma kohta määratud veeru summa ja keskmine väärtus. Näha on, et grupeeritud väärtusel Alex on 'highest_score' väärtuse summa 132 ja 'least_score' väärtuse keskmine 17,5. „Fin” puhul on väärtuste summa 199 ja keskmine väärtus 18,3333333 veergudes „highest_score” ja „least_score”. Rühma väärtuse Lõvi summaarne väärtus on 180 väärtuses 'kõrgeim_skoor' ja keskmine väärtus 7,666667 lahtris 'least_score'.

Järeldus

Selles õpetuses oleme arutanud pandade groupby() ja liitmisfunktsioone. Oleme arutanud ka funktsiooni groupby.agg() kasutamist. Rakendasime selles artiklis kolm näidet, et õpetada teile, kuidas kasutada andmeraami veerus ühte liitmisfunktsiooni, rühmitades ühe ja mitme veeru andmed, kuidas rakendada andmeraami ühele veerule mitut koondamisfunktsiooni ja kuidas rakendada mitut koondamisfunktsioonid andmeraami mitmes veerus, kasutades funktsiooni groupby.agg().