Come creare una colonna di offset in pandas (con esempi)


Puoi utilizzare la funzione shift() in Panda per creare una colonna che visualizzi i valori spostati da un’altra colonna.

Questa funzione utilizza la seguente sintassi di base:

 df[' lagged_col1 '] = df[' col1 ']. shift ( 1 )

Da notare che il valore della funzione shift() indica il numero di valori per i quali calcolare lo spostamento.

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

Esempio: creare una colonna di offset in Pandas

Supponiamo di avere il seguente DataFrame panda che mostra le vendite effettuate da un negozio in 10 giorni consecutivi:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' day ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29, 15, 18]})
#view DataFrame
print (df)

   day sales
0 1 18
1 2 10
2 3 14
3 4 13
4 5 19
5 6 24
6 7 25
7 8 29
8 9 15
9 10 18

Possiamo utilizzare la funzione shift() per creare una colonna di spostamento che mostri le vendite del giorno precedente per ogni riga:

 #add column that represents lag of sales column
df[' sales_previous_day '] = df[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

   day sales sales_previous_day
0 1 18 NaN
1 2 10 18.0
2 3 14 10.0
3 4 13 14.0
4 5 19 13.0
5 6 24 19.0
6 7 25 24.0
7 8 29 25.0
8 9 15 29.0
9 10 18 15.0

Ecco come interpretare il risultato:

  • Il primo valore nella colonna del ritardo è NaN poiché non esiste un valore precedente nella colonna delle vendite .
  • Il secondo valore nella colonna offset è 18 poiché è il valore precedente nella colonna Vendite .
  • Il terzo valore nella colonna offset è 10 poiché è il valore precedente nella colonna Vendite .

E così via.

Tieni presente che possiamo anche aggiungere più colonne offset al DataFrame se vogliamo:

 #add two lag columns
df[' sales_previous_day '] = df[' sales ']. shift ( 1 )
df[' sales_previous_day2 '] = df[' sales ']. shift ( 2 ) 

#view updated DataFrame
print (df)

   day sales sales_previous_day sales_previous_day2
0 1 18 NaN NaN
1 2 10 18.0 NaN
2 3 14 10.0 18.0
3 4 13 14.0 10.0
4 5 19 13.0 14.0
5 6 24 19.0 13.0
6 7 25 24.0 19.0
7 8 29 25.0 24.0
8 9 15 29.0 25.0
9 10 18 15.0 29.0

Puoi utilizzare lo stesso approccio generale per aggiungere tutte le colonne di offset che desideri.

Nota : per creare una colonna primaria, utilizzare semplicemente valori negativi nella funzione shift() .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:

Come eliminare colonne in Pandas
Come escludere colonne in Pandas
Come applicare una funzione alle colonne selezionate in Pandas
Come modificare l’ordine delle colonne in Pandas DataFrame

Aggiungi un commento

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