Skip to content

NumPy: Calcolare la somma, la media, il massimo e il minimo di ndarray contenenti np.nan

Python

In NumPy, per un array ndarray contenente il valore mancante np.nan, np.sum() restituisce np.nan. È possibile calcolare la somma dei valori escludendo il valore mancante np.nan con np.nansum().

Vengono forniti non solo np.nansum() ma anche np.nanmean(), np.nanmax(), np.nanmin(), np.nanstd() e np.nanvar(). È possibile calcolare la media, il massimo, il minimo, la deviazione standard e la varianza, ignorando il valore mancante np.nan.

Vedere l’articolo seguente su come sostituire np.nan o eliminare righe o colonne contenenti np.nan.

Usa il seguente file CSV con i dati mancanti.

import numpy as np

arr = np.genfromtxt('data/src/sample_nan.csv', delimiter=',')
print(arr)
# [[ 11.  12.  nan  14.]
#  [ 21.  nan  nan  24.]
#  [ 31.  32.  33.  34.]]

Utilizza np.nansum() per ndarray contenente il valore mancante np.nan

Per ndarray il valore mancante np.nan, la funzione np.sum() o il metodo sum() di ndarray contiene np.nan.

print(arr.sum())
# nan

print(np.sum(arr))
# nan

np.nansum() aggiunge la somma dei valori escludendo np.nan.

print(np.nansum(arr))
# 212.0

Come con sum(), puoi anche calcolare somme lungo righe o colonne impostando il parametro axis.

print(np.nansum(arr, axis=0))
# [ 63.  44.  33.  72.]

print(np.nansum(arr, axis=1))
# [  37.   45.  130.]

Nota che nansum() non è fornito come metodo di ndarray.

np.nanmean(), np.nanmax(), np.nanmin(), np.nanstd() e np.nanvar()

Vengono forniti non solo np.nansum() ma anche np.nanmean(), np.nanmax(), np.nanmin(), np.nanstd() e np.nanvar().

È possibile calcolare la media, il massimo, il minimo, la deviazione standard e la varianza, ignorando il valore mancante np.nan.

print(np.nanmean(arr))
# 23.5555555556

print(np.nanmax(arr))
# 34.0

print(np.nanmin(arr))
# 11.0

print(np.nanstd(arr))
# 8.90831211237

print(np.nanvar(arr))
# 79.3580246914