CommencerCommencez gratuitement

Créer des features de jour de la semaine

Nous pouvons créer des features à partir des dates pour ajouter encore plus d'informations à nos modèles non linéaires. La plupart des données financières comportent des dates, qui contiennent beaucoup d'informations : année, mois, jour, et parfois heure, minute et seconde. Nous pouvons aussi extraire le jour de la semaine, le trimestre de l'année, ou le temps écoulé depuis un événement (par exemple une annonce de résultats).

Ici, nous allons uniquement récupérer le jour de la semaine, car notre jeu de données ne remonte pas très loin. La propriété dayofweek de l'index datetime pandas va nous aider à obtenir le jour de la semaine. Ensuite, nous allons créer des variables indicatrices à partir de dayofweek avec get_dummies() de pandas. Cela crée des colonnes pour chaque jour de la semaine avec des valeurs binaires (0 ou 1). Nous supprimons la première colonne, car elle peut être déduite des autres.

Cet exercice fait partie du cours

<cours>Machine Learning pour la finance en Python</cours>
Voir le cours

Instructions de l’exercice

  • Utilisez la propriété dayofweek à partir de l'index de lng_df pour obtenir les jours de la semaine.
  • Utilisez la fonction get_dummies sur la variable des jours de la semaine, avec le préfixe 'weekday'.
  • Définissez l'index de la variable days_of_week pour qu'il soit le même que l'index de lng_df, afin de pouvoir fusionner les deux.
  • Concaténez les DataFrames lng_df et days_of_week en un seul DataFrame.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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())
Modifier et exécuter le code