[Python] Comment extraire / supprimer / convertir une matrice contenant des valeurs manquantes (NaN)

[Python] Comment extraire / supprimer / convertir une matrice contenant des valeurs manquantes (NaN)

Lors de la lecture d'un fichier csv ou excel, s'il y a une cellule vide, elle sera lue comme une valeur manquante (NaN).

Un résumé de la recherche, de la suppression et de la conversion d'une matrice contenant cette valeur manquante (NaN).


**table des matières**
  1. [Identification des éléments / matrices contenant des valeurs manquantes](# 1 Identification des matrices d'éléments contenant des valeurs manquantes)
    1. isna()
      1. isna().all()
      2. isna().any()
      3. isna().all().any()
      4. isna().any().any()
    2. isnull()
  2. [Comptez le nombre de valeurs manquantes](# 2 Comptez le nombre de valeurs manquantes)
    1. isna().sum()
    2. isna().sum().sum()
    3. len() - count()
  3. [Supprimer la valeur manquante](# 3 Supprimer la valeur manquante)
  4. [Liste des options dropna](Liste des options pour #dropna)
  5. [Supprimer toutes les matrices de valeurs manquantes](# 5 Supprimer toutes les matrices de valeurs manquantes)
  6. [axis = 0 (omis)](# axis0 omis) 2. axis=1 3. dropna(how='all').dropna(how='all', axis=1)
  7. [Supprimer en spécifiant le nombre de cellules non manquantes](# 6 Supprimer en spécifiant le nombre de cellules non manquantes)
    1. df.dropna(thresh=n)
    2. df.dropna(thresh=n, axis=1)
  8. [Spécifiez la ligne / colonne pour laquelle vous souhaitez supprimer NaN](Spécifiez la matrice pour laquelle vous souhaitez supprimer # 7nan)
    1. df.dropna(subset=['AAA', 'BBB'])
    2. df.dropna(subset=['aaa', 'bbb'], axis=1)
  9. [Autoriser l'écrasement de la suppression](# 8 Autoriser l'écrasement de la suppression)
  10. [Convertir la valeur manquante](# 9 Convertir la valeur manquante)
  11. [Remplacer la table entière](#Remplacer la table entière) 1. fillna('AAA')
  12. [option méthode](option méthode # 1-2) 3. fillna(method='ffill') 4. fillna(method='ffill', axis=1) 5. fillna(method='bfill') 6. fillna(method='bfill', axis=1)
  13. [Spécifiez le nombre de NaN à remplacer](#Spécifiez le nombre de nans à remplacer) 1. fillna('AAA', limit=n) 2. fillna('AAA', limit=n, axis=1) 3. fillna(method='ffill', limit=n) 4. fillna(method='ffill', limit=n, axis=1)
  14. [Autoriser l'écrasement](# Autoriser l'écrasement)

## 1. 1. Identification des éléments / matrices contenant des valeurs manquantes **①isna()**  1-1. isna().all()  1-2. isna().any()  1-3. isna().all().any()  1-4. isna().any().any() **②isnull()**
** ▼ Utilisation ** - ** L'identification d'élément ** est la ** méthode isna **. -Pour savoir si ** tout ** d'une ligne ou d'une colonne est NaN, combinez la méthode ** isna et la méthode all **. -Pour savoir s'il y a NaN dans l'élément ** de la ligne ou de la colonne **, combinez la ** méthode isna et n'importe quelle méthode **. -La méthode isnull est un alias pour la ** méthode isna ** (alias). La page officielle utilise principalement isna.
## Données d'origine à utiliser Lisez le fichier csv 6 par 6 comme indiqué ci-dessous.

image.png

Contient des cellules sans valeurs entrées ou des matrices vides.

▼ [Référence] Lisez le fichier test.csv sur le bureau.

Lire le fichier csv


import pandas as pd
df = pd.read_csv('~/desktop/test.csv')
df

Voir ci-dessous pour plus de détails sur la lecture des fichiers csv avec python.

Comment lire le fichier csv Application de lecture de fichiers csv


### Lire les données (stockées dans la variable df) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/d1656f44-8997-228f-ae49-1d46eb24da4c.png)

-La cellule vide devient "NaN". -Les erreurs de formule "#REF!", "# DIV / 0!" Et "#NAME?" Ne sont pas reconnues comme des valeurs manquantes (comme elles l'étaient). ・ La première ligne est reconnue comme un en-tête


①isna() Utilisé pour vérifier si chaque élément est NaN. S'il s'agit de NaN, "True" est renvoyé, sinon "False" est renvoyé. (Type booléen: booléen)

** 1-1. Cartographie de l'ensemble du tableau **

df.isna() └ "df": données avec un tableau

Mapper la table entière


df.isna()

▼ Sortie image.png

NaN est affiché comme "True" et d'autres sont affichés comme "False".

▼ Données d'origine image.png


** 1-2. Mappage par ligne, colonne, élément spécifique ** Il est également possible de mapper une matrice ou un élément spécifique en spécifiant la plage cible.

pd.isna (plage spécifiée) └ "pd.isna ()": pd devient un objet


** ▼ Colonne spécifiée sur la carte **

Mapper la colonne spécifiée


pd.isna(df['col1'])

#production
0    False
1    False
2    False
3    False
4     True
5    False
Name: col1, dtype: bool

** ▼ Ligne spécifiée sur la carte **

Mapper la ligne spécifiée


pd.isna(df['col1'])

#production
0    False
1    False
2    False
3    False
4     True
5    False
Name: col1, dtype: bool

** ▼ Ligne spécifiée sur la carte **

Mapper la ligne spécifiée


pd.isna(df.loc[[3]])

▽ Sortie image.png


** ▼ Mapper plusieurs lignes **

Mapper la ligne spécifiée


pd.isna(df[1:4])

▽ Sortie image.png


** ▼ Juger la cellule spécifiée **

Si vous mettez une valeur dans "()" de pd.isna (), il sera jugé si c'est NaN ou non. ⇒Saisissez l'élément de cellule.


** ① Jugez la cellule avec le nom de ligne "0" et le nom de colonne "col4" ** -Spécification de cellule: `df.loc [0, 'col4']`

Juge cellule (spécifiée par le nom de la matrice)


pd.isna(df.loc[0,'col4'])

#production
#True

** ② Jugez la cellule avec le numéro de ligne "1" et le numéro de colonne "3" ** -Spécification de la cellule: `df.iloc [1,3]`

Juge cellule (spécifiée par le nom de la matrice)


pd.isna(df.iloc[1,3])

#production
#True

Il existe différentes manières de spécifier la plage d'une table DataFrame. Cliquez ici pour plus de détails


1-1. isna().all() Répertoriez les lignes ou les colonnes avec ** tout le contenu NaN **.

Vrai si applicable. Faux si non applicable.

Que ce soit une ligne ou une colonne est commuté par la présence ou l'absence de l'option "axe = 1".

Df.isna (). All (): ** Colonne ** liste ・ Df.isna (). All (axis = 1): ** Ligne ** liste


** ▼ Table d'origine ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bd35b75c-b12b-62fc-75b3-339b4a4f126e.png)
** ▼ Liste des colonnes ** `df.isna().all()`

Liste des colonnes


df.isna().all()

#production
col1          False
Unnamed: 1    False
col3          False
col4           True
Unnamed: 4     True
col6          False
dtype: bool

Les noms de colonne «col4» et «Sans nom: 4» sont vides.


** ▼ Liste des lignes ** `df.isna().all(axis=1)`

Liste des lignes


df.isna().all(axis=1)

0    False
1    False
2    False
3    False
4     True
5    False
dtype: bool

Le nom de la ligne «4» est vide


1-2. isna().any() Répertoriez les lignes ou colonnes contenant ** au moins un NaN **.

Vrai si applicable. Faux si non applicable.

Que ce soit une ligne ou une colonne est commuté par la présence ou l'absence de l'option "axe = 1".

Df.isna (). Any (): ** Colonne ** liste ・ Df.isna (). Any (axis = 1): ** Ligne ** liste


** ▼ Table d'origine ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bd35b75c-b12b-62fc-75b3-339b4a4f126e.png)
** ▼ Liste des colonnes ** `df.isna().any()`

Liste des colonnes


df.isna().any()

#production
col1          True
Unnamed: 1    True
col3          True
col4          True
Unnamed: 4    True
col6          True
dtype: bool

Toutes les colonnes contiennent NaN.


** ▼ Liste des lignes ** `df.isna().any(axis=1)`

Liste des lignes


df.isna().any(axis=1)

0    True
1    True
2    True
3    True
4    True
5    True
dtype: bool

Toutes les lignes contiennent NaN.


1-3. isna().all().any() ** S'il y a au moins une colonne vide dans le tableau ** renvoie False s'il n'y a pas de True.

Il peut être utilisé lorsque vous souhaitez voir l'état rapidement.


** ▼ Ce que vous faites ** Obtenez une liste montrant l'état de chaque colonne comme Vrai ou Faux avec ʻisna (). All`.

ʻAny () `renvoie True s'il y a au moins un True dans la liste, False sinon.

Vérifiez s'il y a au moins une colonne vide


df.isna().all().any()

#production
# True

1-3'. isna().all(axis=1).any() En spécifiant "axis = 1" dans l'option de la méthode all,

S'il y a au moins une ** toutes les lignes vides ** dans le tableau, False est renvoyé s'il n'y a pas de True.

Vérifiez s'il y a au moins une ligne vierge


df.isna().all(axis=1).any()

#production
# True

1-4. isna().any().any() Renvoie True ** s'il y a même un ** NaN dans la table, False sinon.

Contient-il au moins un NaN?


df.isna().any().any()

#production
# True

②isnull() Alias de méthode Isna Même si isna ci-dessus est remplacé par isnull, le processus est exactement le même.
>> Lien vers la page officielle - [isna()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) - [all()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.all.html) - [any()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.any.html) - [isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isnull.html)
## 2. Comptez le nombre de valeurs manquantes ①isna().sum() ②isna().sum().sum() ③len() - count()
①isna().sum() Comptez le nombre de NaN que contient chaque ligne ou colonne.

Que ce soit une ligne ou une colonne est commuté par la présence ou l'absence de l'option "axe = 1".

Df.isna (). Sum (): Nombre de comptage par ** colonne ** ・ Df.isna (). Sum (axis = 1): Nombre de comptage par ** ligne **


** ▼ Table d'origine ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bd35b75c-b12b-62fc-75b3-339b4a4f126e.png)
** ▼ Compter NaN dans la colonne ** `df.isna().sum()`

Comptez le NaN contenu dans chaque colonne


df.isna().sum()

#production

col1          1
Unnamed: 1    2
col3          1
col4          6
Unnamed: 4    6
col6          2
dtype: int64

** ▼ Compter NaN en ligne ** `df.isna().sum(axis=1)`

Comptez le NaN contenu dans chaque ligne


df.isna().sum(axis=1)

#production

0    2
1    3
2    3
3    2
4    6
5    2
dtype: int64

②isna().sum().sum() Comptez le nombre de NaN contenus dans la table entière.
** ▼ Ce que vous faites ** Comptez le nombre de NaN pour chaque ligne avec ʻisna (). Sum () `.

De plus, en faisant sum (), le nombre de NaN dans chaque ligne est additionné.

Nombre de NaN dans la table entière


df.isna().sum().sum()

#production
# 18

③len() - count()

len (df ['nom de la ligne']) --count (df ['nom de la ligne'])

Recherchez le nombre de NaN dans la ligne ou la colonne spécifiée.


** ▼ Ce que vous faites ** ① `len (df ['nom de la ligne'])` └ Comptez le nombre d'éléments dans la ligne spécifiée

count (df ['nom de la ligne']) └ Nombre d'éléments autres que NaN contenus dans la ligne spécifiée

En définissant ①-②, le nombre de NaN contenus dans la ligne spécifiée est calculé.

Supplément

méthode de comptage: compte le nombre d'éléments autres que NaN

** ▼ Colonne cible (colonne contenant deux NaN. Nom de la colonne: col6) **

Colonne cible


df.col6

0      A
1    NaN
2      C
3      D
4    NaN
5      F

** ▼ Résultat de l'exécution **

Nombre de NaN dans la ligne spécifiée


len(df['col6'])-df['col6'].count()

#production
# 2

>> Page officielle - [méthode somme](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.sum.html) - [méthode de comptage](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.count.html)
## 3. 3. Supprimer les valeurs manquantes La valeur manquante NaN peut être supprimée à l'aide de la méthode dropna.

▼ Liste des options Dropna

option Contenu
axis=0 Ligne (facultatif)
axis=1 Colonne
how='any' Supprimer s'il y a même un NaN(Optionnel)
how='all' Supprimer si tout NaN
thresh=n Pas NaN(Valide)Ne pas supprimer s'il y a n cellules ou plus
subset=['A',,] Supprimer les lignes contenant NaN dans le nom de colonne spécifié (supprimer NaN du nom de colonne spécifié)
subset=['a',,], axis=1 Supprimer les colonnes contenant NaN dans le nom de ligne spécifié (supprimer NaN du nom de ligne spécifié)
inplace=True Autoriser l'écrasement

** Table originale ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/84b5b6ed-38e4-a9b3-14ac-16e6d18ce605.png)
### 5. Supprimer toutes les matrices de valeurs manquantes -Spécifier "** how = 'all' **" comme option. -Spécifiez la ligne ou la colonne avec l'axe.

① axe = 0 (omis)  ②axis=1  ③dropna(how='all').dropna(how='all', axis=1)


#### ① axe = 0 (omis) -Supprimer les "lignes" contenant des blancs. -La valeur par défaut est "axis = 0" (facultatif) └ Les deux processus suivants sont identiques.

dropna(how='all') dropna(how='all', axis=0)


Supprimer toutes les lignes vides


df.dropna(how='all')

▽ Sortie image.png

Ligne 4 supprimée.

②axis=1 dropna(how='all', axis=1)

Supprimez les "colonnes" qui contiennent des blancs.


Supprimer toutes les colonnes vides


df.dropna(how='all')

▽ Sortie image.png

Suppression de deux colonnes, col4 et Sans nom: 4.


③dropna(how='all').dropna(how='all', axis=1) 

Suppression des lignes et des colonnes où tous les éléments sont vides.

Après avoir supprimé les lignes vides avec dropna (how = 'all') Supprimez les colonnes vides avec dropna (how = 'all', axis = 1).


Supprimer les lignes et les colonnes vides


df.dropna(how='all').dropna(how='all', axis=1)

▽ Sortie

image.png

Ligne 4, colonne col4, Sans nom: 4 supprimés.


### 6. Supprimer une matrice contenant au moins une valeur manquante -Spécifier "** how = 'any' **" comme option. ・ La valeur par défaut est cet état (facultatif) -Spécifiez la ligne ou la colonne avec l'axe. -La table d'origine n'est pas écrasée └ Le réglage de l'écrasement est également possible en option.

① Par défaut  ②axis=1


** ▼ Table d'origine **
image.png

Il y a quatre NaN. (Ligne, colonne) = (4,1), (5,2), (1,5), (4,5)


#### ① Par défaut ** Supprimé toute ligne contenant NaN. ** **

La valeur par défaut de la méthode dropna est que how = 'any' est spécifié comme option.


** ▼ Exemple d'exécution **
image.png

Dans chaque cas, les lignes 1, 4, 5 et 6 incluant NaN ont été supprimées.


②axis=1 Supprimé ** colonnes ** contenant au moins un NaN.

Puisque «how =» any »peut être omis, les deux processus suivants sont identiques.

dropna(axis=1) dropna(how='any', axis=1)


** ▼ Exemple d'exécution **
image.png

Tous contiennent un ou plusieurs NaN, col1, Sans nom: 1, col5 supprimé.


## 6. Supprimer en spécifiant le nombre de cellules qui ne sont pas des valeurs manquantes Exemple: ignorez s'il y a au moins n valeurs non manquantes. S'il est inférieur à cela, supprimez-le.

①df.dropna(thresh=n) ②df.dropna(thresh=n, axis=1)

▽ Supplément thresh est une abréviation de "seuil".


### ▼ Données d'origine
image.png

・ Table 10 lignes x 6 colonnes -Le nombre de NaN est 1 dans la 0ème ligne (9 cellules ne le sont pas). Le nombre de NaN augmente d'une colonne à la fois. ・ Toutes les 4e colonnes sont vides


①df.dropna(thresh=n) Exemple: `df.dropna (thresh = 1)` └ "df": données de table └ "thresh = 1": seuil 1

Lignes supprimées avec une ou moins de cellules autres que NaN. Identique à la suppression de toutes les lignes NaN.

** ▼ Lorsque seuil = 1 **

Spécifier un seuil (n)=1)


df.dropna(thresh=1)
image.png

Il n'y a pas de cellules NaN uniquement, donc toutes les lignes restent.


** ▼ Lorsque seuil = 4 **

Spécifier un seuil (n)=4)


df.dropna(thresh=4)
image.png

Les lignes avec 4 cellules ou moins autres que NaN, les lignes 1, 2 et 3 sont supprimées.


** ▼ Lorsque seuil = 7 **

Spécifier un seuil (n)=7)


df.dropna(thresh=7)
image.png

Comme il n'y a pas de lignes avec 7 cellules ou plus autres que NaN, supprimez tout.


②df.dropna(thresh=n, axis=1) Exemple: `df.dropna (thresh = 1, axis = 1)` └ "df": données de table └ "thresh = 1": seuil 1

Colonnes supprimées avec une ou moins de cellules autres que NaN. Identique à la suppression de toutes les colonnes NaN.


** ▼ Lorsque seuil = 1, axe = 1 **

Spécifier un seuil (n)=1)


df.dropna(thresh=1, axis=1)
image.png

Toute la colonne NaN 4 supprimée.


** ▼ Lorsque seuil = 7, axe = 1 **

Spécifier un seuil (n)=7)


df.dropna(thresh=7, axis=1)
image.png

Les colonnes avec 7 cellules ou moins autres que NaN, les lignes 4, 5 et 6 sont supprimées.


** ▼ Lorsque seuil = 11, axe = 1 **

Spécifier un seuil (n)=11)


df.dropna(thresh=11, axis=1)

image.png

Puisqu'il n'y a pas de colonne avec 11 cellules ou plus autres que NaN, supprimez tout.


## 7. Spécifiez la ligne / colonne pour laquelle vous souhaitez supprimer NaN Utilisez l'option de sous-ensemble. Au lieu de supprimer la ligne / colonne spécifiée, le NaN qu'il contient est supprimé.

①df.dropna(subset=['AAA', 'BBB']) ②df.dropna(subset=['aaa', 'bbb'], axis=1)


### ▼ Données d'origine |![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/d1a720eb-4f71-9f8e-ffd3-d7bc3d357768.png)| |:--|

・ 10 lignes x 6 colonnes ・ Le nom de la ligne est le numéro de ligne x ligne ・ Le nom de la colonne est col x numéro de colonne

①df.dropna(subset=['AAA', 'BBB']) Supprimez la ligne en spécifiant le nom de la colonne.

df.dropna(subset=['AAA', 'BBB']) └ "df": variable avec table └ "sous-ensemble": option pour spécifier le nom de la table ou de la colonne └ "AAA" "BBB": nom de colonne (facultatif)

-La cible de suppression est une ligne ou une colonne est spécifiée par la présence ou l'absence d'axe.


** ▼ Supprimer la ligne spécifiée ** `df.dropna(subset=['col1','col3','col5'])` └ Supprimez la ligne contenant au moins un NaN dans les colonnes col1, col3, col5. ⇛ NaN disparaît de la colonne spécifiée.

Supprimer la ligne en spécifiant le nom de la colonne


df.dropna(subset=['col1','col3','col5'])
image.png

Lignes 1, 2, 3, 4, 5 supprimées. Les colonnes spécifiées col1,3,5 ne contiennent plus NaN.


②df.dropna(subset=['aaa', 'bbb'], axis=1) Spécifiez le nom de la ligne et supprimez la colonne. NaN est supprimé de la ligne spécifiée.
`df.dropna(subset=['row0','row3'], axis=1)`

Supprimez la colonne avec NaN dans les lignes 0 et 3. (NaN disparaît de la colonne spécifiée)

Supprimer la ligne en spécifiant le nom de la colonne


df.dropna(subset=['row0','row3'], axis=1)
image.png

Suppression des colonnes col3, col4, col5.


## 8. Autoriser l'écrasement de la suppression Utilisez l'option inplace.

Ne pas écraser par défaut.  └inplace=False

Décrivez ce qui suit pour autoriser l'écrasement.  └**inplace=True**


** ▼ Autoriser l'écrasement **

Écraser l'autorisation


df.dropna(thresh=5, inplace=True)
df
image.png

** ▼ Par défaut (ne pas écraser) **

Pas d'écrasement


df.dropna(thresh=5)
df
image.png

Le tableau reste le même.


>> Page officielle [méthode dropna](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html?highlight=dropna)
## 9. Convertir les valeurs manquantes Vous pouvez remplacer NaN par la valeur spécifiée avec la méthode fillna.

La méthode de remplacement et les conditions de NaN à remplacer sont spécifiées en option.


### ▼ Liste des options Fillna
option Contenu
axis=0 Ligne (omise)
axis=1 Colonne
value Valeur à convertir NaN
method='bfill' Convertir en valeur dans la cellule inférieure de NaN
method='backfill' 'bfill'Pareil que
method='ffill' Convertir NaN en valeur dans la cellule supérieure
method='pad' 'ffill'Pareil que
method='bfill', axis=1 Convertir en valeur dans la cellule de droite de NaN
method='ffill', axis=1 Convertir en valeur dans la cellule gauche de NaN
limit=n Remplacez jusqu'au nième NaN. Ne remplacez plus.
inplace=True Autoriser l'écrasement

** ① Remplacez tout le tableau **  1-1. fillna('AAA') 1-2. Option de méthode  1-3. fillna(method='ffill')  1-4. fillna(method='ffill', axis=1)  1-5. fillna(method='bfill')  1-6. fillna(method='bfill', axis=1)

** ② Spécifiez le nombre de NaN à remplacer **  1-1. fillna('AAA', limit=n)  1-2. fillna('AAA', limit=n, axis=1)  1-3. fillna(method='ffill', limit=n)  1-4. fillna(method='ffill', limit=n, axis=1)

** ③ Autoriser l'écrasement **


### ▼ Données d'origine
image.png

## ① Remplacez toute la table 1-1. fillna('AAA') `fillna('AAA')` └ "AAA": remplacez NaN par le caractère spécifié (facultatif)

fillna('AAA')


df.fillna('AAA')

image.png


### 1-2. Option de méthode Il peut être remplacé par une valeur * adjacente à NaN en utilisant l'option method.

** ▼ Exemple: lorsque vous spécifiez de remplacer par la valeur dans la cellule de droite **

Avant le remplacement: NaN NaN NaN AAA Après remplacement: AAA AAA AAA AAA

** Liste d'options de la méthode ▼ **

method sens Contenu
ffill forward fill Remplacez par la valeur de la première cellule (ligne: haut, colonne: gauche)
pad padding Identique à ffill
bfill backward fill Remplacez par la valeur dans la cellule arrière (ligne: bas, colonne: droite)
backfill backward fill Identique à bfill

Lorsque vous spécifiez une ligne, déterminez si elle est avant ou après en fonction du numéro de ligne. (Haut ou bas)

Lorsque vous spécifiez une colonne, déterminez si elle est recto ou verso en fonction du numéro de colonne. (Gauche ou droite)

Erreur


ValueError: Cannot specify both 'value' and 'method'.

1-3. fillna(method='ffill') `fillna(method='ffill')`

Remplacez par la valeur de la ligne du haut.

ffill


df.fillna(method='ffill')

image.png

Convertissez en une valeur supérieure à NaN. Non remplacé si la rangée supérieure est NaN.


1-4. fillna(method='ffill', axis=1) `fillna(method='ffill', axis=1)`

Remplacez par la valeur de la colonne avant.

ffill,axis=1


df.fillna(method='ffill', axis=1)

image.png


1-5. fillna(method='bfill') `fillna(method='bfill')`

Remplacez par la valeur de la dernière ligne.

bfill


df.fillna(method='bfill')

image.png


1-6. fillna(method='bfill', axis=1) `fillna(method='bfill', axis=1)`

Remplacez par la valeur de la colonne arrière.

bfill,axis=1


df.fillna(method='bfill', axis=1)

image.png

(2) Spécifiez le nombre de NaN à remplacer

En utilisant l'option limit, vous pouvez spécifier le nombre de NaN à remplacer.

limit=n Remplacez jusqu'au nième. Ne remplacez plus.

** Exemple: lorsque limit = 2, la valeur à remplacer AAA et l'axe est une colonne **

■ Avant le remplacement AAA NaN NaN AAA AAA AAA NaN NaN NaN AAA AAA NaN AAA NaN AAA NaN NaN AAA NaN NaN

■ Après remplacement AAA AAA AAA AAA AAA AAA AAA AAA NaN AAA AAA AAA AAA AAA AAA AAA AAA AAA NaN NaN

-Remplacez chaque ligne de la gauche au deuxième NaN.


1-1. fillna('AAA', limit=n) `fillna('AAA', limit=3)`

À partir du haut de l'ordre des numéros de ligne, NaN remplace jusqu'à la seconde.

limit=2


df.fillna('AAA', limit=2)

image.png

Remplacez de haut en bas pour chaque colonne. Ne remplacez plus.


1-2. fillna('AAA', limit=n, axis=1) `fillna('AAA', limit=3, axis=1)`

Remplacez du haut au troisième NaN dans l'ordre des numéros de ligne.

limit=3,axis=1


df.fillna('AAA', limit=3, axis=1)

image.png


1-3. fillna(method='ffill', limit=n) `fillna(method='ffill', limit=3)`

Remplace jusqu'au troisième NaN dans l'ordre des numéros de ligne par la valeur précédente.

ffill,limit=3


df.fillna(method='ffill', limit=3)

image.png


1-4. fillna(method='ffill', limit=n, axis=1) `fillna(method='ffill', limit=3, axis=1)`

Remplacez jusqu'au troisième NaN dans l'ordre des numéros de colonne par la valeur précédente.

ffill,limit=3,axis=1


df.fillna(method='ffill', limit=3)

image.png


### ③ Autoriser l'écrasement Utilisez l'option inplace.

Ne pas écraser par défaut.  └inplace=False

Décrivez ce qui suit pour autoriser l'écrasement.  └**inplace=True**


** ▼ Autoriser l'écrasement **

Écraser l'autorisation


df.fillna('AAA', inplace=True)
df
image.png

** ▼ Par défaut (ne pas écraser) **

Pas d'écrasement


df.fillna('AAA')
df
image.png

Le tableau reste le même.


>> Page officielle [méthode dropna](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html?highlight=dropna)
[Retour en haut](#python Comment extraire, supprimer et convertir une matrice contenant une valeur manquante nan)

Recommended Posts

[Python] Comment extraire / supprimer / convertir une matrice contenant des valeurs manquantes (NaN)
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Comment convertir / restaurer une chaîne avec [] en python
Comment convertir un tableau en dictionnaire avec Python [Application]
[Python] Comment permuter les valeurs de tableau
Comment supprimer un conteneur Docker
[Python] Comment obtenir et modifier les lignes / colonnes / valeurs d'une table.
Comment supprimer plusieurs positions (index) spécifiées dans une liste Python
[Python] Comment créer une matrice de motifs répétitifs (repmat / tile)
[Python] Comment convertir un fichier db en csv
[Python] Comment rendre une classe itérable
Comment convertir Python en fichier exe
[Python] Comment inverser une chaîne de caractères
Comment obtenir stacktrace en python
Comment extraire une zone de polygone en Python
Comment exécuter des scripts Maya Python
[Python] Comment créer une liste de types de dictionnaire, ajouter / modifier / supprimer des éléments et extraire avec une instruction for
Comment lire un fichier CSV avec Python 2/3
Comment ouvrir un navigateur Web à partir de python
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Comment créer un fichier JSON en Python
Convertir les valeurs d'époque Windows à ce jour avec python
Comment générer un objet Python à partir de JSON
Comment ajouter un chemin de recherche de module Python
Comment extraire le coefficient de la formule minute
Comment notifier les canaux Discord en Python
[Python] Comment dessiner un histogramme avec Matplotlib
Comment tester unitaire une fonction contenant l'heure actuelle à l'aide de Freezegun en Python
Comment vérifier les valeurs manquantes (Kaggle: House Prices)
[Python] Comment supprimer les valeurs en double de la liste
Comment convertir le type Python # pour les super débutants de Python: str
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Comment configurer un environnement Python à l'aide de pyenv
Convertir un fichier texte avec des valeurs hexadécimales en fichier binaire
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
[Python] Comment développer des variables dans une chaîne de caractères
Comment écrire un type liste / dictionnaire de Python3
Comment convertir des nombres à virgule flottante en nombres binaires en Python
Comment créer un environnement Django (python) sur Docker
Comment extraire des valeurs Null et des valeurs non Null avec des pandas
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Comment créer un package Python à l'aide de VS Code
[Python] Comment écrire une docstring conforme à PEP8
Comment convertir un spectrogramme Mel en un fichier wav
[Python] Comment créer une matrice de corrélation et une carte thermique
Comment enregistrer une table récupérée par python en csv
[Python] Création d'une méthode pour convertir la base en 1 seconde
python, php, ruby Comment convertir un décimal en n
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Comment exécuter une commande à l'aide d'un sous-processus en Python
[Python] Comment afficher les valeurs de liste dans l'ordre
Comment lire un csv contenant uniquement des entiers en Python
Comment créer un environnement Python sur Amazon Linux 2
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib