Potion Bottle Icon Manuel d'alchimie du code Potion Bottle Icon

Date de la première bordée de neige à Montréal — Analyse avec R

- 512 mots - Temps de lecture estimé: 3 minutes


Sun Face IconQuand tombe la première bordée de neige de 10 cm à Montréal ?Sun Face Icon


En analysant les données historiques d’Environnement Canada avec R et ggplot2, ce projet trouve les dates des premières bordées de neige année par année, en filtrant les accumulations d’au moins 10 cm à partir du mois de septembre.

Tu t’es déjà demandé, en regardant la première neige tomber, si elle arrivait plus tôt ou plus tard que les années précédentes ? Moi oui. Et comme j’aime répondre à ce genre de question avec des données, j’ai monté un petit script R qui analyse les relevés météo de Montréal.

🌘 Les données

Environnement Canada publie des données climatologiques quotidiennes pour les grandes villes canadiennes. Les fichiers CSV contiennent, entre autres, les accumulations de neige au centimètre près. Pour Montréal, on trouve un fichier par année.

🌘 Le script R

Le script charge l’ensemble des fichiers CSV, filtre les journées où l’accumulation de neige atteint au moins 10 cm (ma définition de « bordée »), et ne garde qu’une seule date par année — la plus hâtive à partir de septembre.

library(tidyverse)

fichiers <-
  list.files(path = "data",
             pattern = "*.csv",
             full.names = TRUE)

bordee <- 10
premier_mois <- 9

col_spec <- cols(
  .default = col_double(),
  `Nom de la Station` = col_character(),
  `Date/Heure` = col_date()
)

data_neige <- fichiers %>%
  lapply(
    FUN = function(x)
      x %>%
      read_csv(
        # Séparateur décimal
        locale = locale(decimal_mark = ","),
        col_types = col_spec,
        # Valeurs manquantes
        na = c("T", "E", "M", "<31")
      )
  ) %>%
  bind_rows()

premiere_bordee <-
  data_neige %>%
  # On sélectionne les données d'intérêt
  select(`Date/Heure`, `Année`, Mois, Jour, `Neige tot. (cm)`) %>%
  # On sélectionne les bordées
  filter(`Neige tot. (cm)` >= bordee) %>%
  # On sélectionne à partir de septembre de chaque année
  filter(Mois >= premier_mois) %>%
  # On trie par date
  arrange(`Année`, Mois, Jour) %>%
  # On regroupe par année
  group_by(`Année`) %>%
  # On garde la première date par année
  filter(row_number() == 1) %>%
  # On formate les données pour affichage sur un graphique
  transmute(Date = ISOdate(0, Mois, Jour), neige_cm = `Neige tot. (cm)`)

graph.neige <-
  ggplot2::ggplot(data = premiere_bordee, aes(x = `Année`, y = Date)) +
  geom_point(aes(size = neige_cm)) +
  ggtitle("Date de la première bordée (10 cm) à Montréal")

ggsave("montreal_neige_2019_premiere_bordee.png", plot = graph.neige)

Quelques détails techniques que j’aime bien dans ce code :

🌘 Le graphique

Date de la première bordée de neige à Montréal

Chaque point représente la première journée où la neige au sol a atteint 10 cm ou plus, pour une année donnée. La taille du point est proportionnelle à l’accumulation mesurée ce jour-là.

🌘 Ce qu’on y voit

Sans surprise, les premières bordées s’échelonnent de la mi-octobre à la mi-décembre. Certaines années sont plus généreuses que d’autres — en quantité comme en précocité. Le graphique ne montre pas de tendance claire au réchauffement sur cette métrique précise, mais c’est un échantillon limité et une définition arbitraire de la bordée.

🌘 Pour aller plus loin

Tu peux facilement adapter ce script à ta ville : télécharge les fichiers CSV d’Environnement Canada pour une autre station, ajuste le seuil de bordée ou le mois de départ, et observe les variations locales. C’est tout l’intérêt des données ouvertes — elles permettent ce genre de micro-analyse sans dépendre d’un média ou d’un rapport officiel.

Si tu reproduis l’analyse pour une autre ville, je serais curieux de voir les résultats. Tu peux ouvrir un ticket sur le dépôt original pour partager ton graphique.

Abonne-toi au fil RSS pour ne rien manquer.

Étiquettes