Pandas fillna Spalte

Suraj Joshi 30 Januar 2023 17 Februar 2021 Pandas Pandas NaN
  1. DataFrame.fillna() Methode
  2. Füllen des gesamten DataFrame mit dem angegebenen Wert mit der Methode DataFrame.fillna()
  3. Füllen von NaN-Werten der angegebenen Spalte mit einem angegebenen Wert
Pandas fillna Spalte

Dieses Tutorial erklärt, wie wir NaN-Werte mit Hilfe der Methode DataFrame.fillna() mit angegebenen Werten füllen können.

Wir verwenden in diesem Artikel den unten stehenden DataFrame.

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)

Ausgabe:

   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

DataFrame.fillna() Methode

Syntax:

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

Die Methode DataFrame.fillna() ermöglicht es uns, die NaN-Werte im DataFrame mit dem angegebenen value oder der methode zu füllen.

Füllen des gesamten DataFrame mit dem angegebenen Wert mit der Methode 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")

Ausgabe:

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 

Es werden alle NaN-Werte im DataFrame student_df durch 0 ersetzt, das als Argument an die Methode DataFrame.fillna() übergeben wird.

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")

Ausgabe:

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 

Es werden alle NaN-Werte im student_df mit dem Wert gefüllt, der vor dem NaN-Wert in derselben Spalte wie der NaN-Wert steht.

Füllen von NaN-Werten der angegebenen Spalte mit einem angegebenen Wert

Um bestimmte Werte mit angegebenen Werten zu füllen, übergeben wir der Methode fillna() ein Dictionary mit dem Spaltennamen als Schlüssel und dem Wert, der für die NaN-Werte dieser Spalte verwendet werden soll, als Wert.

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")

Ausgabe:

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 

Es werden alle NaN-Werte in der Spalte Age mit dem Wert 17 und alle NaN-Werte in der Spalte Income(in $) mit 300 gefüllt. Die NaN-Werte in der Spalte Roll No werden so belassen, wie sie sind.

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Verwandter Artikel - Pandas NaN

  • Wie ersetzt man alle NaN-Werte durch Nullen in einer Spalte eines Pandas-DataFrame
  • Wie prüft man, ob NaN im Pandas-DataFrame vorhanden ist
  • Pandas lassen Zeilen mit NaN fallen