CommencezCommencez gratuitement

Créer des variables pour les jours de la semaine

Nous pouvons créer des caractéristiques à partir des dates et heures pour enrichir encore nos modèles non linéaires. La plupart des données financières ont des horodatages qui renferment beaucoup d'information : année, mois, jour, et parfois heure, minute et seconde. Nous pouvons aussi en extraire le jour de la semaine, le trimestre de l'année, ou le temps écoulé depuis un événement (p. ex. la publication des résultats).

Ici, nous allons seulement récupérer le jour de la semaine, puisque notre jeu de données ne remonte pas très loin. La propriété dayofweek de l'index datetime de pandas nous aidera à obtenir le jour. Ensuite, nous appliquerons get_dummies() de pandas à dayofweek. 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.

Cette activité fait partie du cours

Machine Learning pour la finance en Python

Voir le cours

Instructions de l’exercice

  • Utilisez la propriété dayofweek de l'index de lng_df pour obtenir les jours de la semaine.
  • Appliquez la fonction get_dummies à la variable des jours de la semaine, avec le préfixe 'weekday'.
  • Réglez l'index de la variable days_of_week pour qu'il corresponde à l'index de lng_df afin de pouvoir fusionner les deux.
  • Regroupez les DataFrames lng_df et days_of_week en un seul DataFrame à l'aide de la concaténation.

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