Partie 2 · Dates
Les variables temporelles
Une date lue d'un fichier est du texte. Il faut la convertir pour calculer dessus.
| Besoin | pandas | Python pur |
|---|---|---|
| Convertir | pd.to_datetime(col, format=...) | datetime.strptime(txt, fmt) |
| Dates invalides | errors='coerce' → NaT | try/except ValueError → None |
| Composantes | .dt.year/.month/.day/.dayofweek/.hour | d.year, d.month, d.weekday(), d.hour |
| Delta | différence de deux dates → timedelta, .dt.total_seconds() | soustraction → timedelta, .total_seconds() |
Le paramètre format est crucial quand le format n'est pas standard : 26/10/2023 se lit %d/%m/%Y et 2023-10-28 14:30 se lit %Y-%m-%d %H:%M. Sans lui, 03/04/2023 est ambigu (3 avril ou 4 mars ?). Le jour de la semaine suit la convention : dayofweek = 0 pour lundi … 6 pour dimanche, comme weekday().
Fuseaux horaires : un datetime est naïf (sans fuseau) ou conscient (aware). tz_localize() ajoute un fuseau à une série naïve ; tz_convert() convertit une série consciente vers un autre fuseau. Crucial pour des journaux d'événements mondiaux.
Vérifie que tu as compris
26/10/2023 ?Vérifie que tu as compris
tz_localize et tz_convert ?À toi de coder
Indicateurs temporels
On crée souvent des features à partir des dates : ancienneté (écart à une date de référence), delta entre deux événements (en heures : total_seconds() / 3600), jour de la semaine, indicateur week-end. Attention : .days d'un timedelta ne donne que la partie « jours » ; pour des heures, passer par total_seconds().
Vérifie que tu as compris
total_seconds() / 3600 ?