Skip to content

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.

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 ๐ฉโ€Œ๐ซโ€Œ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() .

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