Sostituisci tutti i valori NaN con zeri in una colonna di un DataFrame Pandas

Ahmed Waheed 30 gennaio 2023
  1. Metodo df.fillna() per sostituire tutti i valori NaN con zeri
  2. Metodo df.replace()
Sostituisci tutti i valori NaN con zeri in una colonna di un DataFrame Pandas

Quando lavoriamo con set di dati di grandi dimensioni, a volte ci sono valori NaN nel set di dati che si desidera sostituire con un valore medio o con un valore adeguato. Ad esempio, hai una lista di valutazione degli studenti e alcuni studenti non hanno tentato il quiz in modo che il sistema abbia inserito automaticamente NaN invece di 0.0. Di seguito sono elencati i diversi modi per eseguire questa operazione.

  1. df.fillna()
  2. df.replace()

Useremo lo stesso DataFrame nelle prossime sezioni come segue,

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
print(df)

Quello che segue è il DataFrame con NaN in grado.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    NaN
2  George          50   95.0
3    Noah          65    NaN

Metodo df.fillna() per sostituire tutti i valori NaN con zeri

Sostituiamo i valori NaN con l’aiuto del metodo df.fillna().

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
df = df.fillna(0)
print(df)

Quello che segue è l’output con NaN sostituito da zero.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

Il metodo df.fillna() riempie i valori NaN con il valore dato. Non cambia i dati dell’oggetto ma restituisce un nuovo DataFrame per impostazione predefinita a meno che il parametro inplace non sia impostato su True.

Potremmo riscrivere i codici di cui sopra con il parametro inplace abilitato per essere True.

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
df.fillna(0, inplace=True)
print(df)

Metodo df.replace()

Questo metodo funziona come df.fillna() per sostituire NaN con 0. df.replace() può essere utilizzato anche per sostituire un altro numero. Diamo un’occhiata ai codici.

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
nan_replaced = df.replace(np.nan, 0)
print(nan_replaced)

Il seguente sarà l’output.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

Articolo correlato - Pandas NaN