GroupBy och aggregering
df.groupby(), agg(), transform(), apply() och namngivna aggregeringar med Named Aggregation.
GroupBy och aggregering är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
Idén med split-apply-combine
GroupBy följer mönstret split-apply-combine: dela upp raderna i grupper utifrån en nyckel, tillämpa en funktion på varje grupp och kombinera sedan resultaten till en enda DataFrame. Det ligger till grund för de flesta analytiska sammanställningar.
import pandas as pd
df = pd.DataFrame({
"dept": ["A", "A", "B", "B", "B"],
"salary": [50, 70, 40, 60, 80],
})Grundläggande groupby
df.groupby("col") skapar ett grupperat objekt. Genom att kedja en aggregering som .mean() beräknas ett värde per grupp.
print(df.groupby("dept")["salary"].mean())
# dept
# A 60.0
# B 60.0Flera aggregeringar
Anropa flera reduktioner samtidigt med .agg([...]), vilket skapar en kolumn per funktion.
print(df.groupby("dept")["salary"].agg(["mean", "min", "max", "count"]))Aggregeringsordlista per kolumn
Skicka en ordlista till .agg för att tillämpa olika funktioner på olika kolumner.
df["bonus"] = [5, 7, 4, 6, 8]
out = df.groupby("dept").agg({"salary": "mean", "bonus": "sum"})
print(out)Namngiven aggregering
Med namngiven aggregering får resultatkolumnerna tydliga namn genom syntaxen pd.NamedAgg. Det undviker förvirrande kolumnrubriker på flera nivåer.
out = df.groupby("dept").agg(
avg_salary=("salary", "mean"),
total_bonus=("bonus", "sum"),
)
print(out)Gruppera efter flera nycklar
Skicka en lista med kolumner för att gruppera efter flera nycklar samtidigt, vilket ger ett hierarkiskt resultat (MultiIndex).
df["level"] = ["jr", "sr", "jr", "sr", "sr"]
print(df.groupby(["dept", "level"])["salary"].mean())transform: samma form som resultat
.transform() returnerar ett resultat som är justerat efter de URSPRUNGLIGA raderna, inte en rad per grupp. Det är perfekt för att lägga till gruppstatistik som en ny kolumn.
df["dept_avg"] = df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "dept_avg"]])transform för normalisering
Eftersom transform broadcastar tillbaka till varje rad kan Ni normalisera inom grupper, till exempel genom att subtrahera gruppens medelvärde.
df["centered"] = df["salary"] - df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "centered"]])apply för anpassad logik
.apply() skickar varje grupp (som en underordnad DataFrame) till Er funktion. Använd det för logik som inbyggda aggregeringar inte kan uttrycka, till exempel att returnera de N främsta raderna per grupp.
top = df.groupby("dept").apply(lambda g: g.nlargest(1, "salary"))
print(top[["dept", "salary"]])agg jämfört med transform och apply
agg reducerar varje grupp till ett värde. transform returnerar ett värde per ursprunglig rad. apply är den flexibla (långsammare) lösningen för övriga fall. Välj den mest specifika för tydlighet och hastighet.
Avgruppering med reset_index
GroupBy-resultat placerar nycklarna i indexet. Anropa .reset_index() för att omvandla dem tillbaka till vanliga kolumner, vilket de flesta efterföljande koddelar förväntar sig.
flat = df.groupby("dept")["salary"].mean().reset_index()
print(flat)
# dept salary
# 0 A 60.0
# 1 B 60.0Snabbkontroll
Testa Er förståelse av groupby.
Sammanfattning
Grunderna i GroupBy:
- Split-apply-combine via
df.groupby("col") .agg([...])samt aggregering med ordlista eller namn för flera statistiska mått.transform()returnerar resultat med den ursprungliga formen.apply()för godtycklig logik per grupp- Anropa alltid
.reset_index()för att omvandla gruppnycklarna tillbaka till kolumner
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 53
- Lektioner
- 225
Vanliga frågor
Är lektionen ”GroupBy och aggregering” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”GroupBy och aggregering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
Vad lär jag mig i ”GroupBy och aggregering”?
df.groupby(), agg(), transform(), apply() och namngivna aggregeringar med Named Aggregation. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?
Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”GroupBy och aggregering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?
Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- GroupBy och aggregering
- Pivottabeller och korstabellulering
- Avancerad sammanfogning och join
- Tidsserier i Pandas