Aller au contenu principal

Ça se réchauffe sur la côte fleurie

Vous aussi, vérifiez que le réchauffement climatique n'est pas qu'une vaste blague en analysant les données près de chez vous :

Image
Réchauffement climatique à Trouville-Deauville.

Graphique que j'avais produit comme exercice pour apprendre à me servir de la librairie Pandas (pour traiter les données) sous Python (un langage de programmation) à partir des données de températures décadaires de Météo-France à Saint-Arnoult.

On voit bien l'augmentation d'un quart de degré par siècle dont nous parlent les climatologues.

Je l'avais déjà posté sur les réseaux mais je profite de pouvoir publier des notes plus longues pour vous mettre le code ci-dessous. Si vous voulez vérifier chez vous aussi, voici comment :

 

----- LA SUITE -----

 

Les étapes sont les suivantes :

  1. Si vous n'avez pas Python, installez-le.
  2. Utilisez Pip pour télécharger les librairies Pandas (données), Matplotlib (graphiques), Seaborn (encore plus jolis graphiques) et Scipy.
  3. Allez télécharger les données décadaires sur Météo-France.
  4. Le code Python :

    # Importation des librairies nécessaires
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    from scipy.stats import linregress

    # Lecture du fichier CSV des données décadaires
    csv_file = "DECADQ_14_previous-1950-2023.csv.gz"
    df = pd.read_csv(csv_file, sep=";")

    # Conversion de la colonne de date au format datetime
    df['AAAAMM'] = pd.to_datetime(df['AAAAMM'], format='%Y%m')

    # Filtrage des données pour la station Saint-Gatien-des-Bois
    df_sg = df.loc[df['NOM_USUEL'] == 'ST GATIEN DES B', ['AAAAMM', 'TM']]

    # Calcul de la moyenne mensuelle des températures
    df_sg_mensuel = df_sg.groupby(df_sg['AAAAMM']).mean()
    df_sg_mensuel.head()

    # Calcul de la moyenne mobile sur 12 mois (moyenne annuelle)
    df_sg_mensuel['TM_MEAN'] = df_sg_mensuel['TM'].rolling(window=12).mean()
    # Préparation des données pour la régression linéaire
    x_numeric = (df_sg_mensuel.index - df_sg_mensuel.index[0]).days / 365.25
    y_values = df_sg_mensuel['TM']

    # Calcul de la régression linéaire pour identifier la tendance
    slope, intercept, r_value, p_value, std_err = linregress(x_numeric, y_values)
    df_sg_mensuel['TM_TENDANCE'] = (slope * x_numeric) + intercept

    # Création du graphique
    plt.figure(figsize=(10, 8))

    # Tracé de la température mensuelle (en gris clair)
    sns.lineplot(x=df_sg_mensuel.index, y=df_sg_mensuel['TM'], 
    label='Température Mensuelle', color="grey", alpha=0.4)

    # Tracé de la moyenne annuelle (courbe bleue)
    sns.lineplot(x=df_sg_mensuel.index, y=df_sg_mensuel['TM_MEAN'], 
    label='Moyenne Annuelle', color='dodgerblue', linewidth=2.5)

    # Tracé de la tendance de réchauffement (ligne rouge pointillée)
    sns.lineplot(x=df_sg_mensuel.index, y=df_sg_mensuel['TM_TENDANCE'], 
    label=f'Régression Linéaire (+{slope*10:.2f}°C/décennie)', 
    color='red', linestyle='--', linewidth=2.5)

    # Personnalisation du graphique
    plt.title('Température à St Gatien des Bois (données décadaires)', fontsize=16)
    plt.xlabel('Années', fontsize=12)
    plt.ylabel('Températures (°C)', fontsize=12)
    plt.grid(False)
    plt.show()

Après les vilains retours de ma vidéo sur le climat, c'est pas mal d'en remettre une couche.

16/8/25 code planète science