Dans NumPy, pour supprimer des lignes ou des colonnes contenant N๐โN ( ๐งโ๐ฉโ.๐งโ๐โ๐งโ ) d’un tableau ( ๐งโ๐โ๐โ๐ซโ๐ซ๐โ๐ฒโ ), utilisez ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() pour identifier N๐โN et des mรฉthodes comme ๐โ๐งโ๐ฒโ() ou ๐โ๐ฅโ๐ฅโ() pour extraire les lignes ou les colonnes qui ne contiennent pas N๐โN .
De plus, vous pouvez supprimer toutes les valeurs N๐โN d’un tableau, mais cela aplatira le tableau.
Pour les bases de la gestion de N๐โN en Python, reportez-vous ร l’article suivant.
Pour remplacer N๐โN par d’autres valeurs au lieu de les supprimer, reportez-vous ร 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. Par exemple, envisagez de lire le fichier CSV suivant, qui contient des donnรฉes manquantes, en utilisant ๐งโ๐ฉโ.๐ โ๐โ๐งโ๐โ๐ซโ๐จโ๐ฆโ๐ญโ๐ฑโ๐ญโ() .
- รฉchantillon_nan.csv
- NumPy : lecture et รฉcriture de fichiers CSV (np.loadtxt, np.genfromtxt, np.savetxt)
import numpy as np print(np.__version__) # 1.26.1 a = np.genfromtxt('data/src/sample_nan.csv', delimiter=',') print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. 33. 34.]]
Supprimer tous les N๐โN d’un tableau
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]]
L’application de l’opรฉrateur de nรฉgation ( ~ ) ร ce ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ rรฉsultant transforme N๐โN en F๐โ๐ฅโ๐ฌโ๐โ , qui peut รชtre utilisรฉ comme masque pour supprimer N๐โN (extraire les valeurs non NaN). รtant donnรฉ que le nombre d’รฉlรฉments restants change, le ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ rรฉsultant ne conserve pas la mรชme forme que le ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ d’origine , mais devient aplati (converti en unidimensionnel).
print(~np.isnan(a)) # [[ True True False True] # [ True False False True] # [ True True True True]] print(a[~np.isnan(a)]) # [11. 12. 14. 21. 24. 31. 32. 33. 34.]
Supprimer les lignes contenant N๐โN
Pour supprimer les lignes contenant N๐โN , appelez la mรฉthode ๐โ๐งโ๐ฒโ() sur le ๐งโ๐โ๐โ๐ซโ๐ซ๐โ๐ฒโ gรฉnรฉrรฉ par ๐งโ๐ฉโ.๐ขโ๐ฌโ๐งโ๐โ๐งโ() . La mรฉthode ๐โ๐งโ๐ฒโ() renvoie T๐ซโ๐ฎโ๐โ s’il ya au moins un T๐ซโ๐ฎโ๐โ dans ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ .
En dรฉfinissant ๐โ๐ฑโ๐ขโ๐ฌโ=1 dans ๐โ๐งโ๐ฒโ() , il vรฉrifie s’il ya au moins un T๐ซโ๐ฎโ๐โ dans chaque ligne, indiquant la prรฉsence de 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]] print(np.isnan(a).any(axis=1)) # [ True True False]
En utilisant l’opรฉrateur de nรฉgation ( ~ ) pour รฉchanger T๐ซโ๐ฎโ๐โ et F๐โ๐ฅโ๐ฌโ๐โ , les lignes sans N๐โN deviennent T๐ซโ๐ฎโ๐โ .
print(~np.isnan(a).any(axis=1)) # [False False True]
En appliquant ce ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ aux lignes (la premiรจre dimension) du ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ d’origine , vous peut supprimer les lignes avec N๐โN (extraire les lignes sans N๐โN ).
print(a[~np.isnan(a).any(axis=1), :]) # [[31. 32. 33. 34.]]
Vous pouvez omettre la spรฉcification de la colonne ( : ) comme indiquรฉe ci-dessous.
print(a[~np.isnan(a).any(axis=1)]) # [[31. 32. 33. 34.]]
Pour supprimer uniquement les lignes oรน tous les รฉlรฉments sont N๐โN , utilisez ๐โ๐ฅโ๐ฅโ() au lieu de ๐โ๐งโ๐ฒโ() .
Le paramรจtre ๐โ๐ฑโ๐ขโ๐ฌโ=1 vรฉrifie si tous les รฉlรฉments de chaque ligne sont T๐ซโ๐ฎโ๐โ . Ici, ๐งโ๐ฉโ.๐งโ๐โ๐งโ est attribuรฉ aux รฉlรฉments ร des fins d’explication.
a[1, 0] = np.nan a[1, 3] = np.nan print(a) # [[11. 12. nan 14.] # [nan nan nan nan] # [31. 32. 33. 34.]] print(np.isnan(a).all(axis=1)) # [False True False] print(~np.isnan(a).all(axis=1)) # [ True False True] print(a[~np.isnan(a).all(axis=1)]) # [[11. 12. nan 14.] # [31. 32. 33. 34.]]
Supprimer les colonnes contenant N๐โN
Le processus de suppression des colonnes contenant N๐โN est similaire ร celui utilisรฉ pour les lignes.
L’utilisation de ๐โ๐งโ๐ฒโ() avec ๐โ๐ฑโ๐ขโ๐ฌโ=0 vรฉrifie s’il ya au moins un T๐ซโ๐ฎโ๐โ dans chaque colonne, indiquant la prรฉsence de N๐โN . Appliquez l’opรฉrateur de nรฉgation ( ~ ) pour convertir les colonnes sans N๐โN en T๐ซโ๐ฎโ๐โ .
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]] print(np.isnan(a).any(axis=0)) # [False True True False] print(~np.isnan(a).any(axis=0)) # [ True False False True]
En applique ce ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ aux colonnes (la deuxiรจme dimension) du ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ d’origine , vous peut supprimer les colonnes avec N๐โN (extraire les colonnes sans N๐โN ).
print(a[:, ~np.isnan(a).any(axis=0)]) # [[11. 14.] # [21. 24.] # [31. 34.]]
Pour supprimer uniquement les colonnes oรน tous les รฉlรฉments sont N๐โN , utilisez ๐โ๐ฅโ๐ฅโ() au lieu de ๐โ๐งโ๐ฒโ() .
a[2, 2] = np.nan print(a) # [[11. 12. nan 14.] # [21. nan nan 24.] # [31. 32. nan 34.]] print(np.isnan(a).all(axis=0)) # [False False True False] print(~np.isnan(a).all(axis=0)) # [ True True False True] print(a[:, ~np.isnan(a).all(axis=0)]) # [[11. 12. 14.] # [21. nan 24.] # [31. 32. 34.]]
