Pandas Groupby Aggregate

Pandas Groupby Aggregate



Groupby metode ir būtiska, jo tā apkopo datus gan veiktspējas, gan koda lieluma ziņā. Termins “grupējošs” parasti apraksta procedūru, kas ietver šādas darbības:

  • Sadalīšana : piemērojot noteiktus nosacījumus datu kopām, mēs varam sadalīt datus grupās.
  • Pieteikšanās : process, kurā mēs individuāli piemērojam metodi katrai grupai.
  • Apvienojot : procedūra dažādu datu kopu apvienošanai, lai izveidotu datu struktūru pēc groupby() metodes izmantošanas.

Apkopošanas procesā katrai grupai tiek aprēķināta kopsavilkuma statistika. Katrai grupai apkopošanas metode atgriež apkopotu vērtību (vienu vērtību). Mēs varam veikt vairākas apkopošanas darbības ar grupētiem datiem pēc datu sadalīšanas grupās, izmantojot funkciju groupby.







Kāpēc pandas nodrošina dažādas datu apkopošanas metodes?

Pandas piedāvā plašu iespēju un funkciju klāstu, lai palīdzētu analizēt un apkopot datus. Piemēram, pivot(), groupby() un pivot_table() metožu izmantošana piedāvā atšķirīgu skatījumu uz to, kā dati tiks apkopoti. Tie nodrošina praktisku pieeju dažādu uzdevumu veikšanai, nevis vienkārši pārsaiņošanai.



Kā lietot .agg() funkciju Pandas

Vienkārša vidējo vērtību jeb vērtību summa ir visbiežāk izmantotā apkopošanas funkcija. Varat izmantot datu rāmja kolonnu vai vairākas kolonnas, lai izsauktu apkopošanas funkciju. Jūs redzēsit daudzus veidus, kā apkopot datus, izmantojot Pandas groupby metodi. Lai parādītu, cik vienkāršāka ir procedūra, apskatīsim dažus tālāk sniegtos piemērus. Matemātiskās pamatoperācijas, piemēram, summa, minimums, maksimums, vidējā absolūtā novirze, standarta novirze, vidējā, mediāna, dispersija un reizinājums, ir vienas no visbiežāk izmantotajām iebūvētajām apkopošanas funkcijām. Lai apkopotu datus, mēs varam apvienot groupby un agg() funkciju.



01. piemērs: nosakiet kolonnu summu, grupējot datus, izmantojot funkciju groupby.agg()

Vispirms mēs izveidosim datu rāmi, izmantojot funkciju pd.DataFrame(), lai mēs varētu grupēt datus no datu rāmja kolonnas vai kolonnām un pēc tam noteikt to vidējo vērtību. Pirms datu rāmja izveides mums ir jāimportē pandu moduļi un numpy bibliotēka.





Kā redzat, datu ietvara izveidei izmantojām pandu vārdnīcu. Mūsu df datu ietvarā ir četras kolonnas: “pacients” “group”, “vecums” un “asins pudeles”. Datu vērtības ('Ali', 'Džons', 'Maiks', 'Maiks', 'Džons', 'Ali', 'Ali', 'Mike') ir ietvertas kolonnā 'pacients', savukārt datu vērtības ('A' ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) un ( 2, 3, 1, 1, 2, 3, 2, 1) ir iekļauti attiecīgi kolonnās “grupa”, “vecums” un “asins pudeles”. Pieņemsim, ka mums ir jānosaka vērtību summa kolonnā “blood_bottles”, grupējot vērtības kolonnā “grupa”.



Grupas datiem “A” “blood_bottles” vērtību summa ir 7. Grupas vērtībām “B” un “C” “blood_bottles” vērtību summa ir attiecīgi 2 un 6. Mēs varam arī grupēt vairākas kolonnas, lai noteiktu katras grupas summu.

Kā redzams, mēs esam nodevuši kolonnu etiķešu sarakstu, t.i., ['pacients', 'group'] funkcijā groupby(), lai izveidotu kategoriju grupas katrā norādītajā kolonnā. Katrai norādīto kolonnu grupai esam noteikuši vērtību summu “blood_bottles”. Piemēram, “Ali” ir kolonnas “grupa” vērtībās A un C. Grupā A “blood_bottles” vērtību summa Ali ir 2 un 5 grupā “C”.

02. piemērs: vairāku funkciju izmantošana vienai datu rāmja kolonnai, izmantojot funkciju groupby.agg()

Vairākus apkopojumus var lietot, izmantojot metodi “groupby()”, izmantojot pandas funkciju agg(). Izsaucamo sarakstu var nodot metodei. Apskatīsim, kā mēs varam apkopot savus datus, izmantojot numpy bibliotēkas iebūvētās metodes. Atšķirībā no iepriekšējā piemēra, mēs piemērosim vairākas funkcijas vienai datu rāmja kolonnai. Funkcija pd.DataFrame() tiks izmantota, lai šim nolūkam izveidotu datu rāmi ar vismaz vienu kolonnu, kurā ir skaitliskās vērtības.


Nepieciešamais datu rāmis ir izveidots ar vienu skaitlisku kolonnu, t.i., 'atzīmes' ar vērtībām 41, 40, 35, 39, 49, 31, 34 un 42. Ir vēl 3 kolonnas 'students', 'priekšmeti' un 'grāds'. mūsu datu rāmī, ko var iedalīt grupās, izmantojot grupuby() funkciju. Vērtības kolonnās “students” un “subjects” ir šādas ('Harijs', 'Rons', 'Harijs', 'Lana', 'Sem', 'Ron', 'Lana', 'Max') un ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Savukārt kolonnas pakāpe satur datu vērtības kā virknes, t.i., (“Ms”, “Bs”, “Bs”, “Ms”, “Ms”, “Ms”, “Bs”, “Bs”). Pieņemsim, ka mums ir jāgrupē ailes “subjekti” dati un katram grupētajam datiem jānosaka gan kolonnas “atzīmju” vidējais, gan summa.

Mēs esam norādījuši slejas “subjekti” nosaukumu kā virkni funkcijā groupby (), lai pārveidotu datus kategoriju grupās. Atzīmju kolonnai esam izmantojuši metodi agg() un funkcijas agg() iekšpusē esam norādījuši numpy funkcijas np.sum un np.mean, lai atrastu katras grupas datu atzīmju summu un vidējo vērtību kolonnas priekšmetos. Grupas vērtības “AI” summa un vidējā vērtība ir attiecīgi 91 un 45,5. Vērtības “C++” atzīmju summa ir 75, un vidējā vērtība ir 37,5. JAVA grupai atzīmju summa ir 71 un vidējā vērtība ir 35,5, savukārt Python summa un vidējā vērtība ir attiecīgi 74 un 37.

03. piemērs: vairāku funkciju izmantošana vairākām datu rāmja kolonnām, izmantojot funkciju groupby.agg()

Tā vietā, lai viena datu rāmja kolonnai lietotu dažādas funkcijas, mēs varam lietot vairākas funkcijas dažādām ciparu kolonnām. Mēs varam izmantot vārdnīcu funkcijā agg() kā ievadi, lai piemērotu noteiktu apkopošanas metodi dažādām datu rāmja kolonnām. Pirms datu rāmja izveides ar vairākām ciparu kolonnām importēsim pandas un numpy bibliotēkas.

Jaunizveidotajā datu rāmī ir četras kolonnas ar nosaukumiem “player”, “least_score”, “highest_score” un “location”. Kolonnā 'player' esam saglabājuši dažu spēlētāju vārdus kā virknes datu vērtības ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), kolonnā 'least_score' ir zemākie spēlētāju rādītāji dažās spēlēs (12, 34, 2, 21, 9, 1, 0, 34), savukārt kolonnā 'highest_score' mums ir visaugstākie spēlētāju rādītāji. (12, 34, 2, 21, 9, 1, 0, 34) un ailē 'atrašanās vieta' ir to vietu nosaukumi, kurās spēlētāji ir aizvadījuši savas spēles ('Francija', 'Anglija', 'Dubaija', ' Dubaija”, “Anglija”, “Francija”, “Dubaija”, “Francija”).

Pieņemsim, ka pēc datu grupēšanas kolonnā “spēlētāji” katrai grupai jāatrod vidējā vērtība kolonnas “least_score” vērtībām un summa “highest_score” datu vērtībām.

Funkcijā agg() mēs nodevām Python vārdnīcu {'highest_score' : 'sum', 'least_score': 'mean'}, lai atrastu summu un vidējo vērtību noteiktai kolonnai katrai grupai. Redzams, ka grupētajai vērtībai Alex ir “augstākā_rezultāta” vērtības summa 132 un vidējā vērtība “least_score” ir 17,5. “Fin” vērtību summa ir 199, un vidējā vērtība ir 18,3333333 attiecīgi kolonnās “highest_score” un “least_score”. Grupas vērtības Lauva summas vērtība ir 180 kategorijā “augstākais_rezultāts” un vidējā vērtība ir 7,666667 kategorijā “vismazākais_rezultāts”.

Secinājums

Šajā apmācībā mēs esam apsprieduši groupby() un agregācijas funkcijas pandās. Mēs arī apspriedām, kā izmantot funkciju groupby.agg(). Šajā rakstā mēs ieviesām trīs piemērus, lai mācītu, kā datu rāmja kolonnā izmantot vienu apkopošanas funkciju, grupējot vienas un vairāku kolonnu datus, kā lietot vairākas apkopošanas funkcijas vienai datu rāmja kolonnai un kā lietot vairākas. apkopošanas funkcijas vairākās datu rāmja kolonnās, izmantojot funkciju groupby.agg().