GroupBy, agregacja i tabele przestawne
Proszę podsumowywać dane za pomocą operacji groupby i tabel przestawnych.
GroupBy, agregacja i tabele przestawne to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 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 Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Podstawy groupby
df.groupby("col") dzieli obiekt DataFrame na grupy według unikatowych wartości kolumny. Aby uzyskać wyniki, należy dodać operację agregacji.
import pandas as pd
df = pd.DataFrame({
"dept":["HR","IT","HR","IT","HR"],
"salary":[60,80,65,90,70]
})
print(df.groupby("dept")["salary"].mean())
# HR 65.0
# IT 85.0Wiele funkcji agregujących
Za pomocą agg() można jednocześnie zastosować wiele funkcji agregujących.
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept")["sal"].agg(["mean","max","count"])
print(result)Nazwane agregacje
Argumenty nazwane w agg() pozwalają jawnie nadawać nazwy kolumnom wynikowym (Pandas 0.25+).
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept").agg(
avg_sal=("sal","mean"),
max_sal=("sal","max"),
count=("sal","size")
)
print(result)groupby dla wielu kolumn
Przekazanie listy kolumn pozwala utworzyć hierarchiczne grupy.
import pandas as pd
df = pd.DataFrame({
"year":[2023,2023,2024,2024],
"dept":["HR","IT","HR","IT"],
"sal":[60,80,65,90]
})
print(df.groupby(["year","dept"])["sal"].sum())transform()
transform zwraca obiekt Series wyrównany do oryginalnego indeksu — jest to przydatne do dodawania statystyk na poziomie grup z powrotem do oryginalnego obiektu DataFrame.
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
df["dept_avg"] = df.groupby("dept")["sal"].transform("mean")
print(df)filter()
filter(func) pozostawia tylko te grupy, dla których funkcja zwraca True.
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})
# Keep only departments with mean salary > 70:
result = df.groupby("dept").filter(lambda g: g["sal"].mean() > 70)
print(result)pivot_table
pd.pivot_table tworzy podsumowanie w stylu arkusza kalkulacyjnego z niestandardową agregacją.
import pandas as pd
df = pd.DataFrame({
"year":[2023,2023,2024,2024],
"region":["East","West","East","West"],
"sales":[100,150,120,200]
})
pt = pd.pivot_table(df, values="sales",
index="year", columns="region",
aggfunc="sum")
print(pt)crosstab
pd.crosstab oblicza tabelę krzyżową — jest to przydatne do zliczania kombinacji wartości kategorialnych.
import pandas as pd
df = pd.DataFrame({"gender":["M","F","M","F","M"],"result":["pass","pass","fail","fail","pass"]})
print(pd.crosstab(df["gender"], df["result"]))apply()
apply(func) stosuje niestandardową funkcję do obiektu DataFrame każdej grupy (axis=0) albo do każdego wiersza lub kolumny (axis=1).
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})
def range_sal(g):
return g["sal"].max() - g["sal"].min()
print(df.groupby("dept").apply(range_sal))unstack do zmiany kształtu
Po wykonaniu grupowania wielopoziomowego za pomocą unstack() można przenieść najbardziej wewnętrzny poziom indeksu do kolumn.
import pandas as pd
df = pd.DataFrame({"year":[2023,2023,2024],"dept":["HR","IT","HR"],"sal":[60,80,65]})
result = df.groupby(["year","dept"])["sal"].mean().unstack()
print(result)resample dla szeregów czasowych
resample("M") grupuje obiekt DataFrame szeregu czasowego według okresu kalendarzowego, umożliwiając agregacje miesięczne lub roczne.
import pandas as pd
idx = pd.date_range("2024-01-01", periods=90, freq="D")
df = pd.DataFrame({"sales": range(90)}, index=idx)
monthly = df.resample("ME").sum()
print(monthly)Szybkie sprawdzenie
Co zwraca groupby().transform("mean")?
Podsumowanie
groupby dzieli dane na grupy w celu wykonania agregacji. agg() służy do stosowania wielu funkcji, transform() do przekazywania statystyk grup z powrotem do wierszy, filter() do usuwania grup, a pivot_table()/crosstab() do tworzenia podsumowań wielowymiarowych.
Często zadawane pytania
Czy lekcja „GroupBy, agregacja i tabele przestawne” jest bezpłatna?
Tak — pełny tekst „GroupBy, agregacja i tabele przestawne” 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 Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „GroupBy, agregacja i tabele przestawne”?
Proszę podsumowywać dane za pomocą operacji groupby i tabel przestawnych. Ćwiczysz Python Academy 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ąć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy 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 3 z 4.
Ile czasu zajmuje lekcja „GroupBy, agregacja i tabele przestawne”?
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 Python Academy?
Tak. Każda lekcja Python Academy 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
- Podstawy Series i DataFrame
- Indeksowanie, filtrowanie i maski logiczne
- GroupBy, agregacja i tabele przestawne
- Scalanie, łączenie i czyszczenie danych