Panda: come compilare i valori nan utilizzando un dizionario


È possibile utilizzare la funzione fillna() con un dizionario per sostituire i valori NaN in una colonna di un DataFrame Panda in base ai valori in un’altra colonna.

Per fare ciò, è possibile utilizzare la seguente sintassi di base:

 #define dictionary
dict = {' A ': 5 , ' B ': 10 , ' C ': 15 , ' D ': 20 }

#replace values in col2 based on dictionary values in col1
df[' col2 '] = df[' col2 ']. fillna (df[' col1 ']. map (dict))

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: inserisci i valori NaN in Panda utilizzando un dizionario

Supponiamo di avere il seguente DataFrame panda che contiene informazioni sulle vendite effettuate in vari negozi al dettaglio:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'B', 'C', 'D', 'C', 'B', 'D'],
                   ' sales ': [12, np.nan, 30, np.nan, 24, np.nan, np.nan, 13]})

#view DataFrame
print (df)

  blind sales
0 to 12.0
1 A NaN
2 B 30.0
3 C NaN
4 D 24.0
5CNaN
6BNaN
7 D 13.0

Tieni presente che sono presenti più valori NaN nella colonna Vendite .

Diciamo che vogliamo popolare questi NaN nella colonna delle vendite utilizzando valori che corrispondono a valori specifici nella colonna del negozio .

Possiamo usare la seguente sintassi per fare ciò:

 #define dictionary
dict = {' A ': 5 , ' B ': 10 , ' C ': 15 , ' D ': 20 }

#replace values in sales column based on dictionary values in store column
df[' sales '] = df[' sales ']. fillna (df[' store ']. map (dict))

#view updated DataFrame
print (df)

  blind sales
0 to 12.0
1 A 5.0
2 B 30.0
3C 15.0
4 D 24.0
5C 15.0
6 B 10.0
7 D 13.0

Abbiamo utilizzato un dizionario per effettuare le seguenti sostituzioni nella colonna delle vendite:

  • Se il negozio è A , sostituisci NaN in Sales con il valore 5 .
  • Se il negozio è B , sostituisci NaN in sales con il valore 10 .
  • Se store è C , sostituisci NaN in sales con il valore 15 .
  • Se il negozio è D , sostituisci NaN in sales con il valore 20 .

Puoi trovare la documentazione online completa per la funzione fillna() qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come contare i valori mancanti nei panda
Come eliminare righe con valori NaN in Panda
Come eliminare righe contenenti un valore specifico in Pandas

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *