Colonne Pandas fillna

Suraj Joshi 30 janvier 2023
  1. Méthode DataFrame.fillna()
  2. Remplir la DataFrame entière avec la valeur spécifiée en utilisant la méthode DataFrame.fillna()
  3. Remplir les valeurs NaN de la colonne spécifiée avec une valeur spécifiée
Colonne Pandas fillna

Ce tutoriel explique comment nous pouvons remplir des valeurs NaN avec des valeurs spécifiées en utilisant la méthode DataFrame.fillna().

Nous utiliserons le DataFrame ci-dessous dans cet article.

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame(
    {
        "Roll No": [501, 502, np.nan, 504, 505, 506],
        "Name": ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
        "Income(in $)": [200, 400, np.nan, 30, np.nan, np.nan],
        "Age": [17, 18, np.nan, 16, 18, np.nan],
    }
)

print(student_df)

Production :

   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma          30.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN

Méthode DataFrame.fillna()

Syntaxe

DataFrame.fillna(
    value=None, method=None, axis=None, inplace=False, limit=None, downcast=None
)

La méthode DataFrame.fillna() nous permet de remplir les valeurs NaN dans la DataFrame avec la value ou methode spécifiée.

Remplir la DataFrame entière avec la valeur spécifiée en utilisant la méthode DataFrame.fillna()

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame(
    {
        "Roll No": [501, 502, np.nan, 504, 505, 506],
        "Name": ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
        "Income(in $)": [200, 400, np.nan, 30, np.nan, np.nan],
        "Age": [17, 18, np.nan, 16, 18, np.nan],
    }
)
filled_df = student_df.fillna(0)

print("DataFrame with NaN values")
print(student_df, "\n")

print("After applying fillna() to the DataFrame:")
print(filled_df, "\n")

Production :

DataFrame with NaN values
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma          30.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN 

After applying fillna() to the DataFrame:
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      0.0       Bob           0.0   0.0
3    504.0      Emma          30.0  16.0
4    505.0      Luna           0.0  18.0
5    506.0     Anish           0.0   0.0 

Il remplace toutes les valeurs NaN dans le DataFrame student_df par 0 qui est passé en argument à la méthode DataFrame.fillna().

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame(
    {
        "Roll No": [501, 502, np.nan, 504, 505, 506],
        "Name": ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
        "Income(in $)": [200, 400, np.nan, 30, np.nan, np.nan],
        "Age": [17, 18, np.nan, 16, 18, np.nan],
    }
)
filled_df = student_df.fillna(method="ffill")

print("DataFrame with NaN values")
print(student_df, "\n")

print("After applying fillna() to the DataFrame:")
print(filled_df, "\n")

Production :

DataFrame with NaN values
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma          30.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN 

After applying fillna() to the DataFrame:
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2    502.0       Bob         400.0  18.0
3    504.0      Emma          30.0  16.0
4    505.0      Luna          30.0  18.0
5    506.0     Anish          30.0  18.0 

Il remplit toutes les valeurs NaN dans le student_df par la valeur qui vient avant la valeur NaN dans la même colonne que la valeur NaN.

Remplir les valeurs NaN de la colonne spécifiée avec une valeur spécifiée

Pour remplir des valeurs particulières avec des valeurs spécifiées, nous passons un dictionnaire à la méthode fillna() avec le nom de la colonne comme clé et la valeur à utiliser pour les valeurs NaN de cette colonne comme valeur.

import numpy as np
import pandas as pd

roll_no = [501, 502, 503, 504, 505]

student_df = pd.DataFrame(
    {
        "Roll No": [501, 502, np.nan, 504, 505, 506],
        "Name": ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
        "Income(in $)": [200, 400, np.nan, 300, np.nan, np.nan],
        "Age": [17, 18, np.nan, 16, 18, np.nan],
    }
)
filled_df = student_df.fillna({"Age": 17, "Income(in $)": 300})

print("DataFrame with NaN values")
print(student_df, "\n")

print("After applying fillna() to the DataFrame:")
print(filled_df, "\n")

Production :

DataFrame with NaN values
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob           NaN   NaN
3    504.0      Emma         300.0  16.0
4    505.0      Luna           NaN  18.0
5    506.0     Anish           NaN   NaN 

After applying fillna() to the DataFrame:
   Roll No      Name  Income(in $)   Age
0    501.0  Jennifer         200.0  17.0
1    502.0    Travis         400.0  18.0
2      NaN       Bob         300.0  17.0
3    504.0      Emma         300.0  16.0
4    505.0      Luna         300.0  18.0
5    506.0     Anish         300.0  17.0 

Il remplit toutes les valeurs NaN de la colonne Age avec la valeur 17 et toutes les valeurs NaN de la colonne Income(in $) avec la valeur 300. Les valeurs NaN de la colonne Roll No sont laissées telles quelles.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Pandas NaN