Pandas elimina le righe con NaN
-
Pandas elimina le righe con NaN utilizzando il metodo
DataFrame.notna()
-
Pandas elimina solo righe con valori
NaN
per tutte le colonne utilizzando il metodoDataFrame.dropna()
-
Pandas elimina le righe solo con valori
NaN
per una colonna specifica utilizzando il metodoDataFrame.dropna()
-
Pandas rilascia righe con valori
NaN
per qualsiasi colonna utilizzando il metodoDataFrame.dropna()
Questo tutorial spiega come possiamo eliminare tutte le righe con valori NaN
utilizzando i metodi DataFrame.notna()
e DataFrame.dropna()
.
Useremo DataFrame nel codice di esempio riportato di seguito.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print(data)
Produzione:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
2 Neesham 18.0 NaN 2500.0
3 Chris 21.0 3500.0 25000.0
4 Alice NaN NaN NaN
Pandas elimina le righe con NaN utilizzando il metodo DataFrame.notna()
Il metodo DataFrame.notna()
restituisce un oggetto booleano con lo stesso numero di righe e colonne del chiamante DataFrame. Se un elemento non è NaN
, viene mappato al valore True
nell’oggetto booleano, e se un elemento è un NaN
, viene mappato al valore False
.
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Name": ["Alice", "Steven", "Neesham", "Chris", "Alice"],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data[data["Income($)"].notna()]
print("DataFrame after removing rows with NaN value in Income Field:")
print(data)
Produzione:
Initial DataFrame:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
2 Neesham 18.0 NaN 2500.0
3 Chris 21.0 3500.0 25000.0
4 Alice NaN NaN NaN
DataFrame after removing rows with NaN value in Income Field:
Name Age Income($) Expense($)
0 Alice 19.0 4000.0 3000.0
1 Steven NaN 5000.0 2000.0
3 Chris 21.0 3500.0 25000.0
Qui, applichiamo il metodo notna()
alla colonna Income($)
, che restituisce un oggetto serie con valori True
o False
a seconda dei valori della colonna. Quando passiamo l’oggetto booleano come indice al DataFrame originale, otteniamo solo righe senza valori NaN
per la colonna Income($)
.
Pandas elimina solo righe con valori NaN
per tutte le colonne utilizzando il metodo DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna(how="all")
print("DataFrame after removing rows with NaN value in All Columns:")
print(data)
Produzione:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in All Columns:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
Rimuove solo le righe con valori NaN
per tutti i campi nel DataFrame. Abbiamo impostato how='all'
nel metodo dropna()
per consentire al metodo di eliminare la riga solo se tutti i valori di colonna per la riga sono NaN
.
Pandas elimina le righe solo con valori NaN
per una colonna specifica utilizzando il metodo DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna(subset=["Id"])
print("DataFrame after removing rows with NaN value in Id Column:")
print(data)
Produzione:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in Id Column:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
Elimina tutte le colonne nel DataFrame, che hanno il valore NaN
solo nella colonna Id
.
Pandas rilascia righe con valori NaN
per qualsiasi colonna utilizzando il metodo DataFrame.dropna()
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
data = pd.DataFrame(
{
"Id": [621, 645, 210, 345, None],
"Age": [19, None, 18, 21, None],
"Income($)": [4000, 5000, None, 3500, None],
"Expense($)": [3000, 2000, 2500, 25000, None],
}
)
print("Initial DataFrame:")
print(data)
print("")
data = data.dropna()
print("DataFrame after removing rows with NaN value in any column:")
print(data)
Produzione:
Initial DataFrame:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
1 645.0 NaN 5000.0 2000.0
2 210.0 18.0 NaN 2500.0
3 345.0 21.0 3500.0 25000.0
4 NaN NaN NaN NaN
DataFrame after removing rows with NaN value in any column:
Id Age Income($) Expense($)
0 621.0 19.0 4000.0 3000.0
3 345.0 21.0 3500.0 25000.0
Per impostazione predefinita, il metodo dropna()
rimuoverà tutte le righe che hanno almeno un valore NaN
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArticolo correlato - Pandas DataFrame Row
- Ottieni il conteggio delle righe di un DataFrame Pandas
- Mescola casualmente le righe DataFrame in Pandas
- Filtra le righe del dataframe in base ai valori delle colonne in Pandas
- Scorri le righe di un DataFrame in Pandas
- Ottieni l'indice di tutte le righe la cui colonna specifica soddisfa una determinata condizione in Pandas
- Ottieni l'indice delle righe la cui colonna corrisponde a un valore specifico in Pandas