Pandas elimina le righe con NaN

Pandas elimina le righe con NaN

  1. Pandas elimina le righe con NaN utilizzando il metodo DataFrame.notna()
  2. Pandas elimina solo righe con valori NaN per tutte le colonne utilizzando il metodo DataFrame.dropna()
  3. Pandas elimina le righe solo con valori NaN per una colonna specifica utilizzando il metodo DataFrame.dropna()
  4. Pandas rilascia righe con valori NaN per qualsiasi colonna utilizzando il metodo DataFrame.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.

Articolo 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
  • Articolo correlato - Pandas NaN

  • Sostituisci tutti i valori NaN con zeri in una colonna di un DataFrame Pandas
  • Controlla se NaN esiste in Pandas DataFrame
  • Pandas fillna Colonna