Inizia subitoInizia gratis

Crea feature per i giorni della settimana

Possiamo creare feature da date e orari per aggiungere ancora più informazioni ai nostri modelli non lineari. Gran parte dei dati finanziari ha datetimes, che includono molte informazioni: anno, mese, giorno e talvolta ora, minuto e secondo. Possiamo anche ottenere il giorno della settimana e, per esempio, il trimestre dell'anno o il tempo trascorso da un certo evento (ad es. le trimestrali).

Qui ricaveremo solo il giorno della settimana, dato che il nostro insieme di dati non risale molto indietro nel tempo. La proprietà dayofweek dell'indice datetime di pandas ci aiuterà a ottenere il giorno della settimana. Poi trasformeremo dayofweek in variabili fittizie con get_dummies() di pandas. Questo crea colonne per ciascun giorno della settimana con valori binari (0 o 1). Elimineremo la prima colonna perché può essere dedotta dalle altre.

Questo esercizio fa parte del corso

Machine Learning per la finanza in Python

Visualizza corso

Istruzioni dell'esercizio

  • Usa la proprietà dayofweek dell'indice di lng_df per ottenere i giorni della settimana.
  • Usa la funzione get_dummies sulla variabile dei giorni della settimana, assegnandole il prefisso 'weekday'.
  • Imposta l'indice della variabile days_of_week uguale a quello di lng_df così possiamo unirle.
  • Concatena i DataFrame lng_df e days_of_week in un unico DataFrame.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# Use pandas' get_dummies function to get dummies for day of the week
days_of_week = pd.get_dummies(lng_df.index.____,
                              prefix=____,
                              drop_first=True)

# Set the index as the original dataframe index for merging
days_of_week.index = lng_df.____

# Join the dataframe with the days of week dataframe
lng_df = pd.concat([lng_df, ____], axis=1)

# Add days of week to feature names
feature_names.extend(['weekday_' + str(i) for i in range(1, 5)])
lng_df.dropna(inplace=True)  # drop missing values in-place
print(lng_df.head())
Modifica ed esegui il codice