0Pricing
Learn AI with Python · Lekcja

GroupBy i agregacja

df.groupby(), agg(), transform(), apply() oraz nazwane agregacje z Named Aggregation.

GroupBy i agregacja to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Schemat split-apply-combine

GroupBy realizuje schemat split-apply-combine: dzieli wiersze na grupy według klucza, stosuje funkcję do każdej grupy, a następnie łączy wyniki w jedną ramkę danych. Stanowi podstawę większości podsumowań analitycznych.

import pandas as pd
df = pd.DataFrame({
    "dept": ["A", "A", "B", "B", "B"],
    "salary": [50, 70, 40, 60, 80],
})

Podstawy groupby

df.groupby("col") tworzy pogrupowany obiekt. Połączenie go z agregacją, taką jak .mean(), oblicza jedną wartość dla każdej grupy.

print(df.groupby("dept")["salary"].mean())
# dept
# A    60.0
# B    60.0

Wiele agregacji

Wywołaj kilka funkcji redukujących jednocześnie za pomocą .agg([...]), aby otrzymać osobną kolumnę dla każdej funkcji.

print(df.groupby("dept")["salary"].agg(["mean", "min", "max", "count"]))

Słownik agregacji dla poszczególnych kolumn

Przekaż słownik do .agg, aby zastosować różne funkcje do różnych kolumn.

df["bonus"] = [5, 7, 4, 6, 8]
out = df.groupby("dept").agg({"salary": "mean", "bonus": "sum"})
print(out)

Agregacja nazwana

Agregacja nazwana nadaje kolumnom wynikowym czytelne nazwy za pomocą składni pd.NamedAgg. Pozwala to uniknąć niejasnych wielopoziomowych nagłówków kolumn.

out = df.groupby("dept").agg(
    avg_salary=("salary", "mean"),
    total_bonus=("bonus", "sum"),
)
print(out)

Grupowanie według wielu kluczy

Przekaż listę kolumn, aby jednocześnie grupować dane według kilku kluczy i otrzymać hierarchiczny wynik (MultiIndex).

df["level"] = ["jr", "sr", "jr", "sr", "sr"]
print(df.groupby(["dept", "level"])["salary"].mean())

transform: wynik o tym samym kształcie

.transform() zwraca wynik dopasowany do ORYGINALNYCH wierszy, a nie jeden wiersz na grupę. Doskonale nadaje się do dodawania statystyki grupy z powrotem jako nowej kolumny.

df["dept_avg"] = df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "dept_avg"]])

transform do normalizacji

Ponieważ transform rozsyła wynik z powrotem do każdego wiersza, można normalizować dane wewnątrz grup, na przykład odejmując średnią grupy.

df["centered"] = df["salary"] - df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "centered"]])

apply do niestandardowej logiki

.apply() przekazuje każdą grupę (jako pod-DataFrame) do określonej przez użytkownika funkcji. Używaj go do logiki, której nie da się wyrazić za pomocą wbudowanych agregacji, na przykład do zwracania N najlepszych wierszy z każdej grupy.

top = df.groupby("dept").apply(lambda g: g.nlargest(1, "salary"))
print(top[["dept", "salary"]])

agg a transform i apply

agg redukuje każdą grupę do jednej wartości. transform zwraca jedną wartość dla każdego oryginalnego wiersza. apply to elastyczne, ale wolniejsze rozwiązanie ogólnego zastosowania. Dla czytelności i wydajności wybieraj rozwiązanie najbardziej dopasowane do zadania.

Usuwanie grupowania za pomocą reset_index

Wyniki GroupBy umieszczają klucze w indeksie. Wywołaj .reset_index(), aby z powrotem zamienić je w zwykłe kolumny, których oczekuje większość kolejnych operacji.

flat = df.groupby("dept")["salary"].mean().reset_index()
print(flat)
#   dept  salary
# 0    A    60.0
# 1    B    60.0

Szybki test

Sprawdź swoje rozumienie groupby.

Podsumowanie

Najważniejsze informacje o GroupBy:

  • Schemat split-apply-combine za pomocą df.groupby("col")
  • .agg([...]) oraz agregacja za pomocą słownika i agregacja nazwana do obliczania wielu statystyk
  • .transform() zwraca wyniki o kształcie oryginalnych danych
  • .apply() do dowolnej logiki wykonywanej dla każdej grupy
  • Zawsze używaj .reset_index(), aby spłaszczyć klucze grup z powrotem do kolumn

Często zadawane pytania

Czy lekcja „GroupBy i agregacja” jest bezpłatna?

Tak — pełny tekst „GroupBy i agregacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „GroupBy i agregacja”?

df.groupby(), agg(), transform(), apply() oraz nazwane agregacje z Named Aggregation. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „GroupBy i agregacja”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. GroupBy i agregacja
  2. Tabele przestawne i tabele krzyżowe
  3. Zaawansowane scalanie i łączenie
  4. Szeregi czasowe w Pandas
← Powrót do Learn AI with Python