Analyser et manipuler des dates

Transformation de données avec Polars

Liam Brannigan

Data Scientist & Polars Contributor

Données de séries temporelles

Séries temporelles des prix du marché

Transformation de données avec Polars

Données de séries temporelles

Séries temporelles des ventes

Transformation de données avec Polars

Données de séries temporelles

Séries temporelles des écoulements

Transformation de données avec Polars

Données de séries temporelles

Séries temporelles des décomptes

Transformation de données avec Polars

Ensemble de données des prix de l'électricité

shape: (24, 3)
| time             | price | solar |
| ---              | ---   | ---   |
| str              | f64   | f64   |
|------------------|-------|-------|
| 05/07/2025 00:00 | 34.2  | 0.0   |
| ...              | ...   | ...   |
| 05/07/2025 12:00 | 0.0   | 462.0 |
  • time - valeurs horaires
  • price - £ par mégawattheure
  • solar - W par mètre carré
  • solar > 400 = chaude journée d'été
Transformation de données avec Polars

Lien entre prix et solaire

Série temporelle des prix de l'électricité

Transformation de données avec Polars

Lien entre prix et solaire

Série temporelle des prix de l'électricité

Transformation de données avec Polars

Types datetime dans Polars

  • Date - date du calendrier - 2000-01-01
  • Datetime - date et heure - 2000-01-01 12:00:00
  • Time - heure du jour - 12:00:00
  • Duration - durée - 3 hours
Transformation de données avec Polars

Analyse automatique des dates-heures

pl.read_csv(
  "electricity_prices",

)
Transformation de données avec Polars

Analyse automatique des dates-heures

pl.read_csv(
  "electricity_prices",
  try_parse_dates=True
)
  • format : YYYY-MM-DD
  • p. ex. 2025-07-05
  • p. ex. 2025-07-05 12:00:00
Transformation de données avec Polars

Nos données exigent une analyse manuelle

| time             | price | solar |
| ---              | ---   | ---   |
| str              | f64   | f64   |
|------------------|-------|-------|
| 05/07/2025 00:00 | 34.2  | 0.0   |
| 05/07/2025 01:00 | 28.7  | 0.0   |
  • format : DD/MM/YYYY HH:MM
  • non détecté automatiquement par Polars
Transformation de données avec Polars

Analyser avec strptime

prices.with_columns(
    pl.col("time").str.strptime(                             )
)
Transformation de données avec Polars

Analyser avec strptime

prices.with_columns(
    pl.col("time").str.strptime(pl.Datetime,                 )
)
Transformation de données avec Polars

Analyser avec strptime

prices.with_columns(
    pl.col("time").str.strptime(pl.Datetime, "%d/%m/%Y      ")
)
Transformation de données avec Polars

Analyser avec strptime

prices.with_columns(
    pl.col("time").str.strptime(pl.Datetime, "%d/%m/%Y %H:%M")
)
Transformation de données avec Polars

Analyser avec strptime

prices.with_columns(
    pl.col("time").str.strptime(pl.Datetime, "%d/%m/%Y %H:%M")
)
| time                | price | solar |
| ---                 | ---   | ---   |
| datetime[us]        | f64   | f64   |
|---------------------|-------|-------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   |
| 2025-07-05 01:00:00 | 28.7  | 0.0   |
| 2025-07-05 02:00:00 | 27.5  | 0.0   |
Transformation de données avec Polars

Extraire des composants datetime

Tableau de données de séries temporelles

Transformation de données avec Polars

Extraire des composants datetime

Tableau de séries temporelles avec la date en surbrillance sur une ligne

Transformation de données avec Polars

Extraire des composants datetime

Tableau de séries temporelles avec l'heure en surbrillance sur une ligne

Transformation de données avec Polars

Extraire des composants datetime

Tableau de séries temporelles avec l'heure (heure) en surbrillance sur une ligne

Transformation de données avec Polars

Extraire la date

prices.with_columns(
    pl.col("time").dt.date()
)
Transformation de données avec Polars

Extraire la date

prices.with_columns(
    pl.col("time").dt.date().alias("date")
)
Transformation de données avec Polars

Extraire la date

prices.with_columns(
    pl.col("time").dt.date().alias("date")
)
| time                | price | solar | date       |
| ---                 | ---   | ---   | ---        |
| datetime[µs]        | f64   | f64   | date       |
|---------------------|-------|-------|------------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   | 2025-07-05 |
| 2025-07-05 01:00:00 | 28.7  | 0.0   | 2025-07-05 |
| 2025-07-05 02:00:00 | 27.5  | 0.0   | 2025-07-05 |
Transformation de données avec Polars

Extraire l'heure

prices.with_columns(
    pl.col("time").dt.time().alias("time_of_day")
)
Transformation de données avec Polars

Extraire l'heure

prices.with_columns(
    pl.col("time").dt.time().alias("time_of_day")
)
| time                | price | solar | time_of_day |
| ---                 | ---   | ---   | ---         |
| datetime[us]        | f64   | f64   | time        |
|---------------------|-------|-------|-------------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   | 00:00:00    |
| 2025-07-05 01:00:00 | 28.7  | 0.0   | 01:00:00    |
| 2025-07-05 02:00:00 | 27.5  | 0.0   | 02:00:00    |
Transformation de données avec Polars

Extraire l'heure (heure)

prices.with_columns(
    pl.col("time").dt.hour().alias("hour")
)
Transformation de données avec Polars

Extraire l'heure (heure)

prices.with_columns(
    pl.col("time").dt.hour().alias("hour")
)
| time                | price | solar | hour |
| ---                 | ---   | ---   | ---  |
| datetime[µs]        | f64   | f64   | i8   |
|---------------------|-------|-------|------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   | 0    |
| 2025-07-05 01:00:00 | 28.7  | 0.0   | 1    |
| 2025-07-05 12:00:00 | 0.0   | 462.0 | 12   |
Transformation de données avec Polars

Autres composants datetime

  • .dt.year() - extraire l'année
  • .dt.month() - extraire le mois (1-12)
  • .dt.day() - extraire le jour du mois
  • .dt.minute() - extraire la minute
  • ...
1 https://docs.pola.rs/api/python/dev/reference/expressions/temporal.html
Transformation de données avec Polars

Ajuster des dates-heures

  • .dt.offset_by() - ajuster des dates-heures
  • "1h" - avancer de 1 heure
  • "-2d" - reculer de 2 jours
Transformation de données avec Polars

Ajuster des dates-heures

  • .dt.offset_by() - ajuster des dates-heures
  • "1h" - avancer de 1 heure
  • "-2d" - reculer de 2 jours
1 https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.dt.offset_by.html
Transformation de données avec Polars

Ajouter une fin de fenêtre temporelle

prices.with_columns(
    pl.col("time").dt.offset_by("1h")
)
Transformation de données avec Polars

Ajouter une fin de fenêtre temporelle

prices.with_columns(
    pl.col("time").dt.offset_by("1h").alias("time_end")
)
Transformation de données avec Polars

Ajouter une fin de fenêtre temporelle

prices.with_columns(
    pl.col("time").dt.offset_by("1h").alias("time_end")
)
| time                | price | solar | time_end            |
| ---                 | ---   | ---   | ---                 |
| datetime[µs]        | f64   | f64   | datetime[µs]        |
|---------------------|-------|-------|---------------------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   | 2025-07-05 01:00:00 |
| 2025-07-05 01:00:00 | 28.7  | 0.0   | 2025-07-05 02:00:00 |
| 2025-07-05 02:00:00 | 27.5  | 0.0   | 2025-07-05 03:00:00 |
Transformation de données avec Polars

Passons à la pratique !

Transformation de données avec Polars

Preparing Video For Download...