Dans NumPy, pour remplacer N๐โN ( ๐งโ๐ฉโ.๐งโ๐โ๐งโ ) dans un tableau ( ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ ) par des valeurs comme 0 , utilisez ๐งโ๐ฉโ.๐งโ๐โ๐งโ_๐ญโ๐จโ_๐งโ๐ฎโ๐ฆโ() . De plus, bien que ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() soit principalement utilisรฉ pour identifier N๐โN , ses rรฉsultats peuvent รชtre utilisรฉs pour remplacer N๐โN . Vous pouvez รฉgalement remplacer N๐โN par la moyenne des valeurs non NaN.
- N๐โN ( ๐งโ๐ฉโ.๐งโ๐โ๐งโ ) dans NumPy
- Remplacez N๐โN par ๐งโ๐ฉโ.๐ โ๐โ๐งโ๐โ๐ซโ๐จโ๐ฆโ๐ญโ๐ฑโ๐ญโ() par ๐โ๐ขโ๐ฅโ๐ฅโ๐ขโ๐งโ๐ โ_๐ฏโ๐โ๐ฅโ๐ฎโ๐โ๐ฌโ
- Remplacez N๐โN par ๐งโ๐ฉโ.๐งโ๐โ๐งโ_๐ญโ๐จโ_๐งโ๐ฎโ๐ฆโ()
- Identifiez et remplacez N๐โN par ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ()
Pour supprimer la ligne ou la colonne contenant N๐โN au lieu de les remplacer, consultez l’article suivant.
Pour gรฉrer les valeurs manquantes dans pandas, consultez l’article suivant.
La version de NumPy utilisรฉe dans cet article est la suivante. Notez que les fonctionnalitรฉs peuvent varier selon les versions.
import numpy as np print(np.__version__) # 1.26.1
N๐โN ( ๐งโ๐ฉโ.๐งโ๐โ๐งโ ) dans NumPy
Lorsque vous lisez un fichier CSV avec ๐งโ๐ฉโ.๐ โ๐โ๐งโ๐โ๐ซโ๐จโ๐ฆโ๐ญโ๐ฑโ๐ญโ() , par dรฉfaut, les donnรฉes manquantes sont reprรฉsentรฉes par N๐โN (Pas un nombre). Elles sont affichรฉes sous la forme ๐งโ๐โ๐งโ lors de la sortie avec ๐ฉโ๐ซโ๐ขโ๐งโ๐ญโ() .
- รฉchantillon_nan.csv
- NumPy : lecture et รฉcriture de fichiers CSV (np.loadtxt, np.genfromtxt, np.savetxt)
a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]]
Si vous souhaitez gรฉnรฉrer N๐โN explicitement, utilisez ๐งโ๐ฉโ.๐งโ๐โ๐งโ ou ๐โ๐ฅโ๐จโ๐โ๐ญโ(‘๐งโ๐โ๐งโ’) . Vous pouvez รฉgalement importer le module ๐ฆโ๐โ๐ญโ๐กโ de la bibliothรจque standard et utiliser ๐ฆโ๐โ๐ญโ๐กโ.๐งโ๐โ๐งโ . Ils sont tous identiques.
a_nan = np.array([0, 1, np.nan, float('nan')]) print(a_nan) # [ 0. 1. nan nan]
รtant donnรฉ que la comparaison de N๐โN avec == revenir F๐โ๐ฅโ๐ฌโ๐โ , utilisez ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() pour vรฉrifier si la valeur est N๐โN .
print(np.nan == np.nan) # False print(np.isnan(np.nan)) # True
๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() peut รฉgalement vรฉrifier si chaque รฉlรฉment d’un ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ est N๐โN .
print(a_nan == np.nan) # [False False False False] print(np.isnan(a_nan)) # [False False True True]
Remplacez N๐โN par ๐งโ๐ฉโ.๐ โ๐โ๐งโ๐โ๐ซโ๐จโ๐ฆโ๐ญโ๐ฑโ๐ญโ() par ๐โ๐ขโ๐ฅโ๐ฅโ๐ขโ๐งโ๐ โ_๐ฏโ๐โ๐ฅโ๐ฎโ๐โ๐ฌโ
Pour remplir les donnรฉes manquantes dans un fichier CSV, utilisez l’argument ๐โ๐ขโ๐ฅโ๐ฅโ๐ขโ๐งโ๐ โ_๐ฏโ๐โ๐ฅโ๐ฎโ๐โ๐ฌโ avec ๐งโ๐ฉโ.๐ โ๐โ๐งโ๐โ๐ซโ๐จโ๐ฆโ๐ญโ๐ฑโ๐ญโ() .
Par exemple, remplissez N๐โN avec 0 :
a_fill = np.genfromtxt('data/src/sample_nan.csv', delimiter=',', filling_values=0) print(a_fill) # [[11. 12. 0. 14.] # [21. 0. 0. 24.] # [31. 32. 33. 34.]]
Notez que le remplissage avec la moyenne des valeurs non NaN n’est pas possible lors de la lecture initiale avec ๐งโ๐ฉโ.๐ โ๐โ๐งโ๐โ๐ซโ๐จโ๐ฆโ๐ญโ๐ฑโ๐ญโ() . Pour cela, reportez-vous ร la mรฉthode dรฉcrite ci-dessous.
Remplacez N๐โN par ๐งโ๐ฉโ.๐งโ๐โ๐งโ_๐ญโ๐จโ_๐งโ๐ฎโ๐ฆโ()
Vous pouvez utiliser ๐งโ๐ฉโ.๐งโ๐โ๐งโ_๐ญโ๐จโ_๐งโ๐ฎโ๐ฆโ() pour remplacer N๐โN .
Notez que ๐งโ๐ฉโ.๐งโ๐โ๐งโ_๐ญโ๐จโ_๐งโ๐ฎโ๐ฆโ() remplace รฉgalement l’infini ( ๐ขโ๐งโ๐โ ). Voir l’article suivant pour plus de dรฉtails.
Lorsque vous spรฉcifiez le tableau ( ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ ) comme premier argument de ๐งโ๐ฉโ.๐งโ๐โ๐งโ_๐ญโ๐จโ_๐งโ๐ฎโ๐ฆโ() , par dรฉfaut, un nouveau ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ est gรฉnรฉrรฉ avec N๐โN remplacรฉ par 0 . Le ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ original reste fidรจle.
a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] print(np.nan_to_num(a)) # [[11. 12. 0. 14.] # [21. 0. 0. 24.] # [31. 32. 33. 34.]] print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]]
La dรฉfinition du deuxiรจme argument ( ๐โ๐จโ๐ฉโ๐ฒโ ) sur F๐โ๐ฅโ๐ฌโ๐โ modifie le ndarray d’origine.
np.nan_to_num(a, copy=False) print(a) # [[11. 12. 0. 14.] # [21. 0. 0. 24.] # [31. 32. 33. 34.]]
ร partir de la version 1.17 de NumPy, le troisiรจme argument ( ๐งโ๐โ๐งโ ) permet d’indiquer la valeur ร remplacer N๐โN .
a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] print(np.nan_to_num(a, nan=-1)) # [[11. 12. -1. 14.] # [21. -1. -1. 24.] # [31. 32. 33. 34.]]
Vous pouvez utiliser ๐งโ๐ฉโ.๐งโ๐โ๐งโ๐ฆโ๐โ๐โ๐งโ() pour remplacer N๐โN par la moyenne des valeurs non NaN. Ce remplacement peut รชtre effectuรฉ pour l’ensemble du tableau ou sรฉparรฉment pour chaque ligne ou colonne.
print(np.nanmean(a)) # 23.555555555555557 print(np.nan_to_num(a, nan=np.nanmean(a))) # [[11. 12. 23.55555556 14. ] # [21. 23.55555556 23.55555556 24. ] # [31. 32. 33. 34. ]] print(np.nanmean(a, axis=0, keepdims=True)) # [[21. 22. 33. 24.]] print(np.nan_to_num(a, nan=np.nanmean(a, axis=0, keepdims=True))) # [[11. 12. 33. 14.] # [21. 22. 33. 24.] # [31. 32. 33. 34.]] print(np.nanmean(a, axis=1, keepdims=True)) # [[12.33333333] # [22.5 ] # [32.5 ]] print(np.nan_to_num(a, nan=np.nanmean(a, axis=1, keepdims=True))) # [[11. 12. 12.33333333 14. ] # [21. 22.5 22.5 24. ] # [31. 32. 33. 34. ]]
Si vous spรฉcifiez un ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ comme troisiรจme argument ( ๐งโ๐โ๐งโ ) dans ๐งโ๐ฉโ.๐งโ๐โ๐งโ_๐ญโ๐จโ_๐งโ๐ฎโ๐ฆโ() , il sera diffusรฉ pour correspondre ร la forme du ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ spรฉcifiรฉ comme premier argument.
Si ๐คโ๐โ๐โ๐ฉโ๐โ๐ขโ๐ฆโ๐ฌโ est dรฉfini sur T๐ซโ๐ฎโ๐โ dans ๐งโ๐ฉโ.๐งโ๐โ๐งโ๐ฆโ๐โ๐โ๐งโ() , le tableau rรฉsultant est diffusรฉ correctement. Bien que ๐คโ๐โ๐โ๐ฉโ๐โ๐ขโ๐ฆโ๐ฌโ=F๐โ๐ฅโ๐ฌโ๐โ (par dรฉfaut) soit correct pour ๐โ๐ฑโ๐ขโ๐ฌโ=0 , il est moins sujet aux erreurs de toujours dรฉfinir ๐คโ๐โ๐โ๐ฉโ๐โ๐ขโ๐ฆโ๐ฌโ=T๐ซโ๐ฎโ๐โ quel que soit l’axe.
Pour les versions antรฉrieures ร 1.17, oรน l’argument ๐งโ๐โ๐งโ n’est pas implรฉmentรฉ, utilisez la mรฉthode suivante pour remplacer N๐โN par des valeurs autres que 0 .
Identifiez et remplacez N๐โN par ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ()
Vous pouvez utiliser ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() pour vรฉrifier si les valeurs d’un ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ sont N๐โN .
a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]] print(np.isnan(a)) # [[False False True False] # [False True True False] # [False False False False]]
Avec le rรฉsultat de ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() , vous pouvez attribuer une valeur spรฉcifique pour remplacer N๐โN .
a[np.isnan(a)] = 0 print(a) # [[11. 12. 0. 14.] # [21. 0. 0. 24.] # [31. 32. 33. 34.]]
Vous pouvez รฉgalement utiliser ๐งโ๐ฉโ.๐งโ๐โ๐งโ๐ฆโ๐โ๐โ๐งโ() pour remplacer N๐โN par la moyenne des valeurs non manquantes.
a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') a[np.isnan(a)] = np.nanmean(a) print(a) # [[11. 12. 23.55555556 14. ] # [21. 23.55555556 23.55555556 24. ] # [31. 32. 33. 34. ]]
Pour remplacer par la valeur moyenne de chaque ligne ou colonne, utilisez ๐งโ๐ฉโ.๐ฐโ๐กโ๐โ๐ซโ๐โ() .
a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(np.where(np.isnan(a), np.nanmean(a, axis=0, keepdims=True), a)) # [[11. 12. 33. 14.] # [21. 22. 33. 24.] # [31. 32. 33. 34.]] print(np.where(np.isnan(a), np.nanmean(a, axis=1, keepdims=True), a)) # [[11. 12. 12.33333333 14. ] # [21. 22.5 22.5 24. ] # [31. 32. 33. 34. ]]
