Funzione Pandas DataFrame DataFrame.fillna()

Suraj Joshi 30 gennaio 2023
  1. Sintassi di pandas.DataFrame.fillna():
  2. Codici di esempio: Riempi tutti i valori NaN in DataFrame con il metodo DataFrame.fillna()
  3. Codici di esempio: Metodo DataFrame.fillna() Con il parametro method
  4. Codici di esempio: Metodo DataFrame.fillna() con parametro limit
Funzione Pandas DataFrame DataFrame.fillna()

La funzione pandas.DataFrame.fillna() sostituisce i valori NaN in DataFrame con un certo valore.

Sintassi di pandas.DataFrame.fillna():

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

Parametri

value Scalare, dict, Series o DataFrame. Valore utilizzato per sostituire i valori NaN
method backfill, bfill, pad, ffill o None. Metodo utilizzato per riempire i valori NaN.
axis Riempi i valori mancanti lungo la riga (axis = 0) o la colonna (axis = 1)
inplace Booleano. Se True, modifica il chiamante DataFrame sul posto
limit Numero intero.
Se il metodo è specificato, è il numero massimo di valori NaN consecutivi da riempire in avanti / all’indietro.
Se il method non è fornito, è il numero massimo di NaN in asse da riempire.
downcast Dizionario. Specifica il downcast dei tipi di dati

Ritorno

Se inplace è True, un DataFrame sostituisce tutti i valori NaN con un valore dato; altrimenti None.

Codici di esempio: Riempi tutti i valori NaN in DataFrame con il metodo DataFrame.fillna()

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

filled_df = df.fillna(5)

print("Filled DataFrame:")
print(filled_df)

Produzione:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  5.0
2  3.0  8.0
3  5.0  5.0
4  3.0  3.0

Riempie tutti i valori NaN in DataFrame con 5 fornito come argomento nel metodo pandas.DataFrame.fillna().

DataFrame.fillna() con Mean

Sarebbe anche una buona idea sostituire i valori NaN di una colonna per mezzo di quella colonna.

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

df.fillna(df.mean(),inplace=True)

print("Filled DataFrame:")
print(df)

Produzione:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
      X    Y
0  1.00  4.0
1  2.00  5.0
2  3.00  8.0
3  2.25  5.0
4  3.00  3.0

Riempie i valori NaN della colonna X per mezzo della colonna X e i valori NaN della colonna Y per mezzo della colonna Y.

A causa di inplace=True, l’originale DataFrame viene modificato dopo aver chiamato la funzione fillna().

DataFrame.fillna() Con 0

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

df.fillna(0,inplace=True)

print("Filled DataFrame:")
print(df)

Produzione:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  0.0
2  3.0  8.0
3  0.0  0.0
4  3.0  3.0

Riempie tutto NaN con 0.

Codici di esempio: Metodo DataFrame.fillna() Con il parametro method

Possiamo anche riempire i valori NaN in DataFrame usando diverse scelte del parametro method.

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

filled_df = df.fillna(method="backfill")

print("Filled DataFrame:")
print(filled_df)

Produzione:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  8.0
2  3.0  8.0
3  3.0  3.0
4  3.0  3.0

L’impostazione di method="backfill" riempie tutti i valori NaN di DataFrame con il valore dopo il valore NaN nella stessa colonna.

Possiamo anche usare i metodi bfill, pad e ffill per riempire i valori NaN in DataFrame.

method Descrizione
backfill / bfill riempire tutti i valori NaN di DataFrame con il valore dopo il valore NaN nella stessa colonna.
ffill / pad riempire tutti i valori NaN di DataFrame con il valore prima del valore NaN nella stessa colonna.

Codici di esempio: Metodo DataFrame.fillna() con parametro limit

Il parametro limit nel metodo DataFrame.fillna()limita il numero massimo di valori NaN consecutivi che devono essere riempiti dal metodo.

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2,np.nan, 3,3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

filled_df = df.fillna(3,limit=1)

print("Filled DataFrame:")
print(filled_df)

Produzione:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  NaN  8.0
3  3.0  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  3.0
2  3.0  8.0
3  3.0  NaN
4  3.0  3.0

Qui, una volta che un NaN è inserito in una colonna, l’altro valore NaN nella stessa colonna rimane così com’è.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Pandas DataFrame