0Pricing
Pandas & NumPy Academy · Lekcja

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())     # 9

sum() 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 3

Agregacja 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.0

np.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

  1. Funkcje uniwersalne (ufuncs)
  2. Funkcje agregujące
  3. Zasady broadcastingu
  4. Maskowanie boolowskie i zaawansowane indeksowanie
← Powrót do Pandas & NumPy Academy