{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "d7968d57", "metadata": {}, "outputs": [], "source": [ "# Préparation commune des TP Python\n", "# Le notebook utilise uniquement les ressources fournies dans le dossier codes/.\n", "from pathlib import Path\n", "import importlib.util\n", "import subprocess\n", "import sys\n", "\n", "REQUIRED_PACKAGES = {'numpy': 'numpy', 'pandas': 'pandas', 'matplotlib': 'matplotlib'}\n", "missing = [package for module, package in REQUIRED_PACKAGES.items()\n", " if importlib.util.find_spec(module) is None]\n", "if missing:\n", " print(\"Installation des paquets manquants :\", \", \".join(missing))\n", " subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", *missing])\n", "\n", "WORKDIR = Path.cwd().resolve()\n", "CODES_DIR = WORKDIR.parent if WORKDIR.name == \"correction\" else WORKDIR\n", "TOOLBOX_DIR = CODES_DIR / \"toolbox\"\n", "DATA_DIR = CODES_DIR / \"data\"\n", "if not CODES_DIR.is_dir():\n", " raise FileNotFoundError(\"Exécutez le notebook depuis le dossier codes/.\" )\n", "if TOOLBOX_DIR.is_dir():\n", " sys.path.insert(0, str(TOOLBOX_DIR))\n", "\n", "DATA_FILE = DATA_DIR / \"temperature_historique.csv\"\n", "if not DATA_FILE.is_file():\n", " raise FileNotFoundError(\n", " f\"Donnée du cours introuvable : {DATA_FILE}. \"\n", " \"Téléchargez le dossier codes complet, avec data/.\"\n", " )\n", "\n", "print(\"Environnement prêt :\", CODES_DIR)\n" ] }, { "cell_type": "markdown", "id": "be1e8dfb", "metadata": {}, "source": [ "# TP1 — Données climatiques historiques et tendances\n", "\n", "**Date de la séance :** mercredi 2 septembre 2026, 08:30–10:30\n", "\n", "**Objectifs**\n", "- Manipuler une série temporelle de température globale\n", "- Estimer une tendance de réchauffement climatique\n", "- Distinguer variabilité naturelle et tendance de long terme\n", "- Projeter la date de dépassement de seuils de réchauffement (+1,5°C, +2°C)\n", "\n", "**Prérequis** : numpy, pandas, matplotlib (bases de manipulation de tableaux et de graphiques)." ] }, { "cell_type": "code", "execution_count": null, "id": "6ff96383", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "6da0b839", "metadata": {}, "source": [ "## Partie 1 — Chargement des données" ] }, { "cell_type": "code", "execution_count": null, "id": "32956ef0", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(DATA_DIR / \"temperature_historique.csv\")\n", "print(df.shape)\n", "df.head()" ] }, { "cell_type": "markdown", "id": "788079ba", "metadata": {}, "source": [ "**Question 1.** Tracez l'anomalie de température de 1880 à 2023." ] }, { "cell_type": "code", "execution_count": null, "id": "044145a1", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "ecdc87b9", "metadata": {}, "source": [ "## Partie 2 — Tendance linéaire" ] }, { "cell_type": "markdown", "id": "fca6b15c", "metadata": {}, "source": [ "**Question 2.** Calculez la tendance linéaire avec `np.polyfit`. Ajoutez la droite de tendance au graphique." ] }, { "cell_type": "code", "execution_count": null, "id": "7057973d", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "1f94a217", "metadata": {}, "source": [ "## Partie 3 — Variabilité naturelle et tendance longue" ] }, { "cell_type": "markdown", "id": "3981289b", "metadata": {}, "source": [ "**Question 3.** Calculez une moyenne mobile sur 10 ans. Tracez l'anomalie, la tendance et la moyenne mobile." ] }, { "cell_type": "code", "execution_count": null, "id": "f071558c", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "2446feff", "metadata": {}, "source": [ "## Partie 4 — Moyennes décennales" ] }, { "cell_type": "markdown", "id": "c2d48770", "metadata": {}, "source": [ "**Question 4.** Calculez la température moyenne par décennie (1880-1889, 1890-1899, ..., 2010-2019). Tracez un graphique en barres." ] }, { "cell_type": "code", "execution_count": null, "id": "193ec7a3", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "8143df95", "metadata": {}, "source": [ "## Partie 5 — Projection" ] }, { "cell_type": "markdown", "id": "bce416d5", "metadata": {}, "source": [ "**Question 5.** En prolongeant la tendance linéaire, en quelle année atteint-on +1,5°C ? +2°C ?" ] }, { "cell_type": "code", "execution_count": null, "id": "8997aabf", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "75c14d62", "metadata": {}, "source": [ "## Interprétation\n", "\n", "**Répondez en quelques phrases :**\n", "1. Quelle est la vitesse de réchauffement observée depuis 1880 ?\n", "2. Est-ce que la tendance s'accélère ou reste-t-elle constante ?\n", "3. Quelle est la différence entre variabilité naturelle et tendance climatique ?\n", "4. Que représente l'anomalie de température par rapport à la météo quotidienne ?" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.10" } }, "nbformat": 4, "nbformat_minor": 5 }