05/05/2026
I en verden af dataanalyse med Python og Pandas-biblioteket er groupby()-funktionen et af de mest kraftfulde og alsidige værktøjer, man kan mestre. Den giver dig mulighed for at opdele dine data i logiske grupper, anvende specifikke funktioner på hver gruppe og derefter kombinere resultaterne på en intelligent måde. Denne proces, ofte kaldet "Split-Apply-Combine", er fundamental for at udføre komplekse analyser, beregne gruppespecifikke statistikker og udtrække meningsfuld indsigt fra store datasæt. Uanset om du vil beregne det gennemsnitlige salg pr. produktkategori, finde den højeste score pr. studerende eller filtrere data baseret på gruppekriterier, er groupby() din nøgle til succes. Denne artikel vil guide dig gennem alt, hvad du behøver at vide for at bruge denne funktion effektivt.

Hvad er Pandas GroupBy Operationen?
Kernen i groupby() er en operation, der involverer en eller flere af følgende trin:
- Opdeling (Splitting): Dataen i et DataFrame opdeles i grupper baseret på de kriterier, du angiver. Disse kriterier kan være værdier i en eller flere kolonner.
- Anvendelse (Applying): En funktion anvendes uafhængigt på hver gruppe. Dette kan være en aggregeringsfunktion som
sum()ellermean(), en transformationsfunktion somtransform(), eller en filtreringsfunktion somfilter(). - Kombination (Combining): Resultaterne af funktionsanvendelsen kombineres til en ny datastruktur, typisk et nyt DataFrame eller en Series.
Denne tretrinsproces gør det muligt at udføre meget sofistikerede analyser på en struktureret og effektiv måde. Forestil dig et datasæt med salgsdata fra forskellige regioner. Med groupby() kan du nemt gruppere dataene efter 'region' og derefter beregne det samlede salg, gennemsnitlige salg og antallet af transaktioner for hver region i én enkelt operation.
Forståelse af groupby() Parametrene
For at bruge groupby() effektivt er det vigtigt at forstå dens primære parametre. Disse parametre giver dig finmasket kontrol over, hvordan grupperingen og den efterfølgende operation udføres.
| Parameter | Beskrivelse |
|---|---|
| by | Bestemmer, hvordan grupperne dannes. Det kan være et kolonnenavn, en liste af kolonnenavne, en funktion, en ordbog eller en Series. Dette er den mest centrale parameter. |
| axis | Angiver, om der skal splittes langs rækker (0 eller 'index') eller kolonner (1 eller 'columns'). Standard er 0. For de fleste anvendelser vil du arbejde med rækker. |
| as_index | Boolsk værdi (True/False). Hvis True (standard), bliver gruppens etiketter til indekset for det returnerede objekt. Hvis False, undgås dette, og resultatet bliver et DataFrame med en flad struktur, ligesom i SQL. |
| sort | Boolsk værdi (True/False). Hvis True (standard), sorteres gruppenøglerne. At sætte den til False kan forbedre ydeevnen, da sorteringen springes over. Rækkefølgen af observationer inden for hver gruppe påvirkes ikke. |
| group_keys | Boolsk værdi (True/False). Når du bruger apply(), kan denne parameter tilføje gruppenøglerne til indekset for at identificere de forskellige dele af resultatet. Standard er nu True. |
| dropna | Boolsk værdi (True/False). Hvis True (standard), vil nøgler med NA-værdier blive udeladt fra grupperingen. Hvis False, vil NA-værdier blive behandlet som en separat gruppe. |
Trin 1: Opdeling af Data i Grupper (Splitting)
Det første skridt i processen er at opdele dit datasæt. Lad os se på forskellige måder at gøre dette på ved hjælp af et eksempeldatasæt.
import pandas as pd data = { 'Navn': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Alder': [27, 24, 22, 32, 33, 36, 27, 32], 'Kvalifikation': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA'] } df = pd.DataFrame(data) Gruppering efter en enkelt kolonne
Den mest almindelige måde at gruppere på er ved at angive navnet på en enkelt kolonne. Dette opretter grupper for hver unik værdi i den pågældende kolonne.
# Grupper DataFrame efter 'Navn' kolonnen grupperet_efter_navn = df.groupby('Navn') # For at se grupperne kan du bruge .groups attributten print(grupperet_efter_navn.groups) # Output: {'Abhi': [7], 'Anuj': [1, 5], 'Gaurav': [4], 'Jai': [0, 2], 'Princi': [3, 6]} Outputtet viser en ordbog, hvor nøglerne er de unikke navne, og værdierne er lister over rækkeindekser, der tilhører hver gruppe.
Gruppering efter flere kolonner
For en mere detaljeret analyse kan du gruppere efter flere kolonner. Dette gøres ved at give en liste af kolonnenavne til groupby(). Dette skaber en hierarkisk gruppering.

# Grupper efter både 'Navn' og 'Kvalifikation' grupperet_multi = df.groupby(['Navn', 'Kvalifikation']) # Vis de dannede grupper print(grupperet_multi.groups)
Her vil hver unik kombination af 'Navn' og 'Kvalifikation' danne en separat gruppe.
Iterering gennem grupper
Når du har oprettet et GroupBy-objekt, kan du iterere gennem det for at inspicere hver gruppe individuelt. Hver iteration returnerer en tuple bestående af gruppenøglen og et DataFrame med dataene for den pågældende gruppe.
for navn, gruppe_df in grupperet_efter_navn: print(f"Gruppe Navn: {navn}") print(gruppe_df) print("\n") Valg af en specifik gruppe
Hvis du kun er interesseret i data fra en bestemt gruppe, kan du bruge metoden get_group().
# Få kun DataFrame for gruppen 'Jai' jai_gruppe = grupperet_efter_navn.get_group('Jai') print(jai_gruppe) Trin 2: Anvendelse af Funktioner (Applying)
Når dataene er opdelt i grupper, er det tid til at anvende funktioner. Dette er, hvor den virkelige analyse finder sted. Der er tre hovedkategorier af operationer: Aggregering, Transformation og Filtration.
1. Aggregering (Aggregation)
Aggregering indebærer at beregne en opsummerende statistik for hver gruppe, såsom sum, gennemsnit, minimum, maksimum eller antal. Resultatet er et objekt med én værdi pr. gruppe. Du kan bruge indbyggede funktioner som .sum(), .mean(), eller den mere fleksible .agg() metode.
# Beregn den samlede alder for hver navnegruppe alder_sum = df.groupby('Navn')['Alder'].sum() print(alder_sum) # Anvend flere aggregeringsfunktioner på én gang med agg() stats_alder = df.groupby('Navn')['Alder'].agg(['sum', 'mean', 'count', 'std']) print(stats_alder) Metoden .agg() er ekstremt kraftfuld, da den lader dig anvende flere funktioner på én gang og endda omdøbe de resulterende kolonner for klarhed.

2. Transformation (Transformation)
Transformation udfører gruppespecifikke beregninger, men returnerer et objekt, der har samme form og indeks som det oprindelige DataFrame. Dette er nyttigt, når du vil udføre beregninger i forhold til gruppens gennemsnit, f.eks. at standardisere data inden for hver gruppe (z-score).
# Definer en funktion til at beregne z-score z_score = lambda x: (x - x.mean()) / x.std() # Anvend transformationen på 'Alder' kolonnen for hver navnegruppe alder_transform = df.groupby('Navn')['Alder'].transform(z_score) print(alder_transform) Resultatet, alder_transform, vil være en Pandas Series med samme længde som det oprindelige DataFrame, hvor hver værdi er blevet transformeret baseret på statistikken for dens egen gruppe.
3. Filtration (Filtration)
Filtration giver dig mulighed for at fjerne hele grupper baseret på en betingelse. Funktionen, du anvender, skal returnere enten True eller False for hver gruppe. Kun de grupper, hvor funktionen returnerer True, vil blive inkluderet i det endelige resultat.
# Behold kun de grupper, der har 2 eller flere observationer filtreret_df = df.groupby('Navn').filter(lambda x: len(x) >= 2) print(filtreret_df) I dette eksempel vil grupperne for 'Gaurav' og 'Abhi' blive fjernet, da de kun indeholder én observation hver.
Trin 3: Kombination af Resultater (Combining)
Det sidste trin i processen er, hvor Pandas automatisk samler resultaterne fra "Apply"-trinnet til en enkelt datastruktur. Hvis du udførte en aggregering, vil resultatet typisk være en ny Series eller DataFrame, hvor indekset er gruppenøglerne. Hvis du udførte en transformation, vil resultatet have samme indeks som det oprindelige DataFrame. Filtration returnerer en delmængde af det oprindelige DataFrame. At forstå, hvordan resultaterne kombineres, er afgørende for at kunne fortsætte din dataanalyse.
Ofte Stillede Spørgsmål (FAQ)
- Hvad er den primære funktion af `groupby()` i Pandas?
- Den primære funktion er at implementere "Split-Apply-Combine"-strategien. Det giver dig mulighed for at opdele data i grupper baseret på bestemte kriterier, anvende en funktion uafhængigt på hver gruppe og derefter kombinere resultaterne i en ny datastruktur for videre analyse.
- Kan jeg gruppere efter mere end én kolonne?
- Ja, absolut. Du kan gruppere efter flere kolonner ved at give en liste af kolonnenavne til `groupby()`-funktionen, f.eks.
df.groupby(['Kolonne1', 'Kolonne2']). Dette skaber grupper for hver unik kombination af værdier fra de angivne kolonner. - Hvad er forskellen på `agg()` og `transform()`?
- Hovedforskellen ligger i outputtets form.
agg()returnerer et reduceret resultat, hvor der typisk er én række pr. gruppe (f.eks. gennemsnittet for gruppen).transform()returnerer et objekt, der har nøjagtig samme størrelse og indeks som de oprindelige data, hvor hver værdi er blevet transformeret baseret på dens gruppes egenskaber. - Hvordan undgår jeg, at gruppenøglerne bliver til mit nye indeks?
- Du kan bruge parameteren
as_index=Falsei dingroupby()-kald. For eksempel:df.groupby('Navn', as_index=False)['Alder'].sum(). Dette vil returnere et DataFrame med gruppenøglerne som en almindelig kolonne i stedet for indekset.
At mestre groupby()-operationen er en milepæl i enhver dataanalytikers rejse med Pandas. Det åbner op for en verden af komplekse analyser, der kan udføres med få linjer kode. Ved at forstå de tre trin – Split, Apply, Combine – og de forskellige funktioner som aggregation, transformation og filtration, kan du håndtere selv de mest udfordrende datamanipulationsopgaver med lethed og effektivitet.
Hvis du vil læse andre artikler, der ligner Pandas GroupBy: Den Ultimative Guide til Dataanalyse, kan du besøge kategorien Sundhed.
