Funzioni di aggregazione
Calcoli somma, media, minimo, massimo e deviazione standard sull'intero array o lungo un asse specifico.
Funzioni di aggregazione è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Pandas & NumPy Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Pandas & NumPy Academy include 4 lezioni in totale.
Che cos'è l'aggregazione
L'aggregazione riduce un array a pochi valori riassuntivi, come un totale o una media. Le funzioni integrate di NumPy eseguono questa operazione rapidamente in C, senza bisogno di cicli.
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() e cumsum()
Usi a.sum() per ottenere il totale di ogni elemento e np.cumsum per un totale progressivo: ogni posizione contiene la somma di tutti gli elementi fino a quel punto.
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() e std()
a.mean() restituisce la media e a.std() la deviazione standard. Per impostazione predefinita, std divide per N; passi ddof=1 quando i dati rappresentano un campione.
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() e max() con argmin/argmax
a.min() e a.max() restituiscono rispettivamente il valore più piccolo e quello più grande. Le servono invece le loro posizioni? argmin e argmax restituiscono l'indice di ciascuno.
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 3Aggregazione lungo un asse
L'argomento axis indica quale dimensione ridurre: axis=0 restituisce un valore per colonna, mentre axis=1 uno per riga. Se lo omette, riduce l'intero array.
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 per conservare la forma
L'aggregazione lungo un asse elimina quella dimensione. Aggiunga keepdims=True per conservarla con dimensione 1: è essenziale quando in seguito vuole che il risultato venga sottoposto a broadcasting.
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 ]]Aggregazioni sicure rispetto a NaN
Un solo NaN fa sì che una normale somma o media restituisca NaN. Le versioni sicure rispetto a NaN — np.nansum, np.nanmean e simili — ignorano semplicemente i valori mancanti.
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 e np.percentile
np.median restituisce il valore centrale ed è molto meno influenzata dai valori anomali rispetto alla media. np.percentile trova il valore al di sotto del quale si trova una determinata percentuale dei dati.
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() e np.all()
np.any restituisce True se almeno un elemento soddisfa una condizione; np.all restituisce True solo se la soddisfano tutti gli elementi. Entrambe possono verificare i dati riga per riga o colonna per colonna.
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 conta quanti elementi sono diversi da zero, ovvero quanti sono True. Le passi una condizione come a > 5 per contare le corrispondenze in modo semplice.
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() per i valori distinti
np.unique restituisce i valori distinti ordinati. Aggiungendo return_counts=True, ottiene anche il numero di occorrenze di ciascun valore: una tabella di frequenza istantanea.
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]Verifica rapida
Verifichi la Sua comprensione delle funzioni di aggregazione di NumPy presentate in questa lezione.
Riepilogo della lezione
Ottimo lavoro! Le aggregazioni di NumPy riassumono gli array rapidamente in C, l'argomento axis indica cosa ridurre e le versioni sicure rispetto a NaN ignorano i valori mancanti. Prossimo argomento: il broadcasting.
Domande Frequenti
La lezione «Funzioni di aggregazione» è gratuita?
Sì — il testo completo di «Funzioni di aggregazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Pandas & NumPy Academy, passa a CoddyKit PRO. Il corso Pandas & NumPy Academy include 4 lezioni in totale.
Cosa imparerò in «Funzioni di aggregazione»?
Calcoli somma, media, minimo, massimo e deviazione standard sull'intero array o lungo un asse specifico. Eserciti Pandas & NumPy Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Pandas & NumPy Academy?
Non è richiesta alcuna esperienza precedente. Pandas & NumPy Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Funzioni di aggregazione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Pandas & NumPy Academy?
Sì. Ogni lezione Pandas & NumPy Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Funzioni universali (ufunc)
- Funzioni di aggregazione
- Regole di broadcasting
- Mascheramento booleano e indicizzazione avanzata