Funkcje agregujące
Obliczać sumę, średnią, minimum, maksimum i odchylenie standardowe dla całej tablicy lub wzdłuż określonej osi
Funkcje agregujące to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 2 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 Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Czym jest agregacja?
Agregacja sprowadza tablicę do kilku wartości podsumowujących, takich jak suma lub średnia. Wbudowane funkcje NumPy wykonują to szybko w języku C, bez potrzeby używania pętli.
import numpy as np
a = np.array([3, 7, 2, 9, 1, 6])
print('sum:', a.sum()) # 28
print('mean:', a.mean()) # 4.666...
print('max:', a.max()) # 9sum() i cumsum()
Użyj a.sum(), aby obliczyć sumę wszystkich elementów, oraz np.cumsum, aby uzyskać sumę narastającą — w każdym miejscu znajduje się suma wszystkich elementów aż do tego miejsca.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a.sum()) # 15
print(np.cumsum(a)) # [ 1 3 6 10 15]mean() i std()
a.mean() zwraca średnią, a a.std() — odchylenie standardowe. Domyślnie std dzieli przez N; przekaż ddof=1, gdy dane są próbą.
import numpy as np
a = np.array([2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0])
print('mean:', a.mean()) # 5.0
print('std (pop):', a.std()) # 2.0
print('std (sample):', a.std(ddof=1)) # 2.138...min() i max() z argmin/argmax
a.min() i a.max() zwracają odpowiednio najmniejszą i największą wartość. Potrzebujesz zamiast tego ich pozycji? argmin i argmax zwracają indeks każdej z nich.
import numpy as np
a = np.array([3, 7, 2, 9, 1, 6])
print('min:', a.min(), 'at index', a.argmin()) # 1 at 4
print('max:', a.max(), 'at index', a.argmax()) # 9 at 3Agregacja wzdłuż osi
Argument axis określa, który wymiar ma zostać zredukowany: axis=0 zwraca jedną wartość dla każdej kolumny, a axis=1 — jedną dla każdego wiersza. Jeśli go pominiesz, zredukujesz całą tablicę.
import numpy as np
m = np.array([[1, 2, 3],
[4, 5, 6]])
print(m.sum(axis=0)) # [5 7 9] -- column sums
print(m.sum(axis=1)) # [ 6 15] -- row sums
print(m.mean(axis=0)) # [2.5 3.5 4.5]keepdims=True dla zachowania kształtu
Agregacja wzdłuż osi usuwa ten wymiar. Dodaj keepdims=True, aby zachować go z rozmiarem 1 — jest to niezbędne, gdy później chcesz, aby wynik został ponownie rozszerzony zgodnie z broadcastingiem.
import numpy as np
m = np.array([[1, 2, 3],
[4, 5, 6]])
row_sums = m.sum(axis=1, keepdims=True)
print(row_sums.shape) # (2, 1)
normed = m / row_sums
print(normed.round(3))
# [[0.167 0.333 0.5 ]
# [0.267 0.333 0.4 ]]Agregacje odporne na NaN
Jedna wartość NaN sprawia, że zwykła suma lub średnia zwraca NaN. Wersje odporne na NaN — np.nansum, np.nanmean i podobne — po prostu pomijają brakujące wartości.
import numpy as np
a = np.array([1.0, np.nan, 3.0, np.nan, 5.0])
print(a.sum()) # nan
print(np.nansum(a)) # 9.0
print(np.nanmean(a)) # 3.0
print(np.nanmax(a)) # 5.0np.median i np.percentile
np.median zwraca wartość środkową i jest znacznie bardziej odporna na wartości odstające niż średnia. np.percentile znajduje wartość, poniżej której znajduje się określony procent danych.
import numpy as np
a = np.array([1, 2, 3, 4, 100]) # outlier at 100
print('mean:', a.mean()) # 22.0 -- skewed
print('median:', np.median(a)) # 3.0 -- robust
print(np.percentile(a, [25, 50, 75])) # [ 2. 3. 4.]np.any() i np.all()
np.any zwraca True, jeśli co najmniej jeden element spełnia warunek; np.all zwraca True tylko wtedy, gdy spełniają go wszystkie elementy. Obie funkcje mogą sprawdzać elementy osobno dla każdego wiersza lub kolumny.
import numpy as np
a = np.array([1, -2, 3, -4])
print(np.any(a < 0)) # True (some are negative)
print(np.all(a > 0)) # False (not all are positive)
# Row-wise check on 2D
m = np.array([[1, 2], [-1, 3]])
print(np.all(m > 0, axis=1)) # [ True False]np.count_nonzero()
np.count_nonzero zlicza elementy, które nie są równe zero — lub te, które mają wartość True. Przekaż mu warunek, taki jak a > 5, aby łatwo policzyć pasujące elementy.
import numpy as np
a = np.array([3, 0, 7, 0, 2, 0])
print(np.count_nonzero(a)) # 3
print(np.count_nonzero(a > 2)) # 2 (elements 3 and 7)
m = np.array([[0, 1], [1, 1]])
print(np.count_nonzero(m, axis=0)) # [1 2]np.unique() dla unikatowych wartości
np.unique zwraca posortowane unikatowe wartości. Dodaj return_counts=True, aby otrzymać także informację, ile razy występuje każda z nich — w ten sposób natychmiast uzyskasz tabelę częstości.
import numpy as np
a = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3])
uniq, counts = np.unique(a, return_counts=True)
print(uniq) # [1 2 3 4 5 6 9]
print(counts) # [2 1 2 1 2 1 1]Szybkie sprawdzenie
Sprawdź swoją znajomość funkcji agregujących NumPy z tej lekcji.
Podsumowanie lekcji
Świetna praca! Agregacje NumPy szybko podsumowują tablice w języku C, argument axis określa, co ma zostać zredukowane, a wersje odporne na NaN pomijają brakujące wartości. Dalej: broadcasting.
Często zadawane pytania
Czy lekcja „Funkcje agregujące” jest bezpłatna?
Tak — pełny tekst „Funkcje agregujące” 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 Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Funkcje agregujące”?
Obliczać sumę, średnią, minimum, maksimum i odchylenie standardowe dla całej tablicy lub wzdłuż określonej osi Ćwiczysz Pandas & NumPy 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ąć Pandas & NumPy Academy?
Nie wymagamy żadnego doświadczenia. Pandas & NumPy 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 2 z 4.
Ile czasu zajmuje lekcja „Funkcje agregujące”?
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 Pandas & NumPy Academy?
Tak. Każda lekcja Pandas & NumPy 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
- Funkcje uniwersalne (ufuncs)
- Funkcje agregujące
- Zasady broadcastingu
- Maskowanie boolowskie i zaawansowane indeksowanie