Pandas Groupby søker

Pandas Groupby søker
Det mest populære Python -biblioteket for datamanipulering og analyse er Pandas. Dataanalyse krever ofte at dataene blir delt inn i grupper for å utføre forskjellige operasjoner på hver gruppe. Split-Apply-Combine Strategy brukes av Groupby-funksjonen i Pandas. Dette innebærer å skille et objekt, bruke funksjoner på objektet og kombinere resultatene. I dette innlegget for å manipulere grupperte data på en rekke måter, vil Groupby -funksjonen bli brukt. En av de ofte brukte metodene som brukes til forbehandling av data er søke om() metode. Bruke en funksjon på hvert element i en serie pandaer, og på hver Dataframes kolonne eller rad i pandaer, gjøres enklere. Apply () -metoden i pandaer vil bli dekket i denne artikkelen sammen med GroupBy () -funksjonen.

Varmt å bruke Apply () -funksjonen på grupperte data

Vi kan bruke Apply () -funksjonen for forskjellige funksjoner på DataFrames rader og kolonner. Objektene som leveres til funksjonen er objekter for serier hvis indeksverdi enten er indeksen for DataFrame -radene (Axis = 0) eller antall kolonner i DataFrame (Axis = 1). Bruke denne metoden vil returnere DataFrame eller -serien langs den spesifiserte aksen. Hvis vi ønsker å endre en bestemt kolonne uten å endre andre kolonner, kan vi bruke denne funksjonen. De DATAFRAME.søke om() Metodens syntaks er gitt nedenfor.

Syntaks: Dataramme.Bruk (func, akse = 0, rå = falsk, resultat_type = ingen, args = (), ** kwds)

Hvor:

func: Representerer funksjonen som vil bli brukt på hver rad eller kolonne

akser: Angir retningen som metoden skal brukes på: 0 eller “indeks” bruker funksjonen på alle kolonnene, mens 1 eller “kolonner” bruker funksjonen på alle rader.

Resultat_type: Tilbyr alternativene "redusere", "utvide", "kringkasting" og "ingen". 'Ingen' er standardverdien.

Disse fungerer bare med Axis = 1 (kolonner):

utvide: Kolonner vil bli opprettet fra resultatene som ligner lister.

redusere: I motsetning til "utvide", returnerer dette en serie når det er mulig i stedet for å utvide resultater som ligner lister.

kringkaste: De originale kolonnene og indeksen vil bli holdt, og den vil kringkaste resultatene til DataFrame i sin opprinnelige form.

La oss også se på syntaksen til Groupby () -funksjonen for å gruppere dataene:

Syntaks: Dataramme.GroupBy (av = ingen, Axis = 0, Level = Ingen, AS_INDEX = True, Sort = True, Group_Keys = True, Squeeze = Nodefault.no_default, observert = falsk, dropna = true)

av: funksjon, liste over etiketter, kartlegging eller etikett. For Groupby brukes den til å lage gruppene. Gruppene vil bli bestemt ut fra DICT -verdiene eller serien hvis en av dem er gitt. Den bruker verdiene som den er for å generere gruppene hvis en ndarray eller liste med en lik lengde som den valgte aksen er gitt. For å gruppere av DataFrame -kolonnene i seg selv, kan en liste over etiketter eller en enkelt etikett gis/bestå. Husk at hver tuple blir sett på som en nøkkel (singel).

akser: 'indeks' eller 0, 'kolonner' eller 1, 0 som standard. Del langs kolonner eller rader.

nivå: navn på nivået, sekvensen til slikt eller int. standard ingen. Gruppedata er basert på et spesifikt nivå eller nivåer hvis Axis -indeksen er en multiindex.

as_index: bool, det er sant som standard. Returner et objekt med gruppenavn som indeks for aggregert utgang. Gjelder bare for DataFrame -inngang. Effektivt er "SQL-stil" gruppert utgang "som indeks = falsk".

sortere: bool, det er sant som standard. Gruppetøkler i orden. Ved å slå av dette vil ytelsen din bli bedre.

GROUP_KEYS: bool, det er sant som standard. Legg til gruppetaster i indeksen når du ringer, gjelder for å identifisere delene.

klemme: bool, det er usant som standard. Hvis mulig, reduser du returtypens dimensjonalitet; Hvis ikke, returnerer den en jevn type.

observert: bool, det er usant som standard. Bare hvis en eller flere av gruppene er kategorisk, vil dette gjelde. Bare vis utgangsverdien for kategoriske gruppere hvis de er sann og viser alle utgangsverdier hvis de er falske.

Dropna: bool, det er sant som standard. Hvis sant og gruppetastene har Na -verdier, vil NA -verdiene og den tilsvarende raden og kolonnen bli fjernet.

La oss demonstrere noen eksempler som vil hjelpe deg å lære å bruke GroupBy () og anvende () -funksjon sammen i pandaer.

Eksempel 1: Bestem hyppigheten av verdier i en DataFrame -kolonne

For å finne hyppigheten av verdier i en DataFrame -kolonne, må vi først kreve en DataFrame. DataFrame vil bli opprettet ved hjelp av PD.DataFrame () -funksjon.

Vi har laget en dataaframe. La oss finne hyppigheten av distinkte dataverdier i kolonnen 'Group'. Før du finner frekvensen, vil vi først gruppere dataene ved hjelp av GroupBy () -metoden. Deretter vil vi definere en funksjon i Apply () -funksjonen for å finne hyppigheten.

Dataene i kolonnen 'Group' er nå gruppert. For å finne frekvensen har vi brukt innebygde funksjoner og attributter til pandaer: telle () og form []. Inne i bruksfunksjonen, Lambda Funksjon brukes til å utføre den spesifiserte funksjonen eller uttrykket. Funksjonen har bestemt frekvensen for kategori x er 0.57 og for y er 0.42. Gruppe X vises i 57% av radene; mens gruppe y vises i 42%.

Eksempel nr. 2: Bestem maksimalverdien i en DataFrame -kolonne

Vi kan bruke GroupBy () sammen med Apply () -funksjonen for å bestemme maksimale verdier for hver grupperte data. Igjen, vi oppretter en dataaframe slik at vi kan finne maksimal verdi etter å ha gruppert dataene i kolonnen.

Først vil vi gruppere dataene fra kolonne 'team' for å lage kategorier. Deretter vil vi bruke Apply () -funksjonen inne som vi vil bruke aggregeringsfunksjonen 'Max' for å finne maksimal verdi i kolonnen 'Points' for hver kategori.

Kolonneteamet er gruppert i tre kategorier. Deretter har Apply () -funksjonen bestemt den maksimale verdien av kolonnen 'Point' for hver kategori. Kategorien 'Ace' har maksimal verdi på 14; mens 15 og 17 er maksimalt verdier for henholdsvis grupper beta og champ.

Eksempel nr. 3: Utføre tilpassede beregninger ved å bruke Apply () -funksjon etter gruppering av dataene

I stedet for bare å bruke innebygde aggregeringsfunksjoner til pandaer, kan vi også definere tilpassede funksjoner eller lage et uttrykk i søke om() funksjon for å utføre tilpassede beregninger. La oss lage et dataaframe som vi vil gruppere dataene til en spesifikk kolonne. Deretter vil vi utføre beregninger på det.

La oss beregne den gjennomsnittlige forskjellen mellom verdier for hver gruppe.

Dataene i kolonnen 'Student' er gruppert i tre kategorier 'Billy', 'Jim' og 'Mandy'. Gjennomsnittlig forskjell mellom kolonnen 'Total_marks' og 'oppnådde_marks' oppnås ved å trekke fra verdiene til 'oppnådde_marks' kolonne fra kolonnen 'Total_marks' og bruke gjennomsnittlig () -funksjonen på den. Gjennomsnittlig forskjellsverdi for kategorien 'Billy' er 3.66. Mens den gjennomsnittlige forskjellen for grupperte verdier Jim og Mandy er henholdsvis 3 og 4.

Konklusjon

I denne opplæringen har vi diskutert hvordan du bruker GroupBy () og Apply () -funksjoner sammen i pandaer. Vi har sett syntaks for begge funksjonene sammen med deres parametere for å forstå deres funksjonalitet. Vi implementerte noen få eksempler i denne opplæringen for å lære deg hvordan du kan bruke GroupBy () og Apply () -funksjonene ved å bruke de innebygde funksjonene eller ved å definere tilpassede funksjoner i pandaer.