Quand tombe la première bordée de neige de 10 cm à Montréal ?
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 :
- La gestion du séparateur décimal (
locale(decimal_mark = ",")) parce que les données québécoises utilisent la virgule. - Les valeurs manquantes codées
"T","E","M","<31"qu’il faut déclarer expliciteement avecna =. - Le filtre
Mois >= premier_moisqui commence la recherche en septembre, pour ne pas confondre une bordée tardive au printemps avec celle de l’automne suivant.
🌘 Le graphique

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.