From 10bd6f8e7c2d8517f6396da32e13e74aa0a4377c Mon Sep 17 00:00:00 2001 From: d17ec882235694d4a5db9f8242ebebeb Date: Sun, 10 Nov 2024 19:52:29 +0000 Subject: [PATCH] exo --- module3/exo3/Untitled.ipynb | 6 ++ module3/exo3/exercice_fr.ipynb | 124 ++++++++++++++++++++++++++++++++- 2 files changed, 127 insertions(+), 3 deletions(-) create mode 100644 module3/exo3/Untitled.ipynb diff --git a/module3/exo3/Untitled.ipynb b/module3/exo3/Untitled.ipynb new file mode 100644 index 0000000..7fec515 --- /dev/null +++ b/module3/exo3/Untitled.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/module3/exo3/exercice_fr.ipynb b/module3/exo3/exercice_fr.ipynb index 0bbbe37..5e68a05 100644 --- a/module3/exo3/exercice_fr.ipynb +++ b/module3/exo3/exercice_fr.ipynb @@ -1,5 +1,124 @@ { - "cells": [], + "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Valeurs manquantes :\n", + " from Dec 2022 through Feb 2023 0\n", + "dtype: int64\n" + ] + }, + { + "ename": "KeyError", + "evalue": "\"['2008' '12'] not in index\"", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# Conversion de l'année et du mois en un format de date standard pour faciliter l'analyse chronologique\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0mraw_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'date'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_datetime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mraw_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'2008'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'12'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massign\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mday\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;31m# Tracé de la concentration de CO₂ au fil du temps\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2131\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mSeries\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2132\u001b[0m \u001b[0;31m# either boolean or fancy integer index\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2133\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2134\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mDataFrame\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2135\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_frame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_getitem_array\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2175\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_take\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvert\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2176\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2177\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_convert_to_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2178\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_take\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvert\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2179\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_convert_to_indexer\u001b[0;34m(self, obj, axis, is_setter)\u001b[0m\n\u001b[1;32m 1267\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0many\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1268\u001b[0m raise KeyError('{mask} not in index'\n\u001b[0;32m-> 1269\u001b[0;31m .format(mask=objarr[mask]))\n\u001b[0m\u001b[1;32m 1270\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1271\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_values_from_object\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: \"['2008' '12'] not in index\"" + ] + } + ], + "source": [ + "# Analyse des données de CO₂ de l'observatoire Mauna Loa\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "\n", + "# URL des données de concentration de CO₂ en format CSV depuis le site de Scripps CO₂ Program\n", + "data_url = \"https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/monthly/monthly_in_situ_co2_mlo.csv\"\n", + "\n", + "# Chargement des données et ignorer les lignes de commentaires en début de fichier\n", + "# (Lignes de commentaires de 0 à 56 incluses, donc on saute les 57 premières lignes)\n", + "raw_data = pd.read_csv(data_url, sep=';', skiprows=57)\n", + "\n", + "# Affichage des premières lignes du jeu de données pour comprendre sa structure\n", + "raw_data.head()\n", + "\n", + "# Vérification des valeurs manquantes\n", + "print(\"Valeurs manquantes :\")\n", + "print(raw_data.isnull().sum())\n", + "\n", + "# Suppression des lignes avec des valeurs manquantes\n", + "data = raw_data.dropna()\n", + "\n", + "# Conversion de l'année et du mois en un format de date standard pour faciliter l'analyse chronologique\n", + "raw_data['date'] = pd.to_datetime(raw_data[['2008', '12']].assign(day=1))\n", + "\n", + "# Tracé de la concentration de CO₂ au fil du temps\n", + "plt.figure(figsize=(12, 6))\n", + "plt.plot(data['date'], data['average'], label='Concentration moyenne de CO₂ (ppm)', color='black')\n", + "plt.xlabel('Année')\n", + "plt.ylabel('Concentration de CO₂ (ppm)')\n", + "plt.title('Concentration mensuelle moyenne de CO₂ à Mauna Loa (1958 - présent)')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# Analyse des tendances avec une moyenne annuelle glissante pour observer la tendance à long terme\n", + "data['yearly_avg'] = data['average'].rolling(window=12).mean()\n", + "\n", + "plt.figure(figsize=(12, 6))\n", + "plt.plot(data['date'], data['average'], label='CO₂ mensuel', color='grey')\n", + "plt.plot(data['date'], data['yearly_avg'], label='Moyenne annuelle glissante', color='blue')\n", + "plt.xlabel('Année')\n", + "plt.ylabel('Concentration de CO₂ (ppm)')\n", + "plt.title('Tendance de la concentration de CO₂ à Mauna Loa')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# Étude de l'incidence annuelle\n", + "# Extraction de l'année pour faciliter le regroupement annuel\n", + "data['year'] = data['date'].dt.year\n", + "\n", + "# Calcul de la concentration annuelle moyenne\n", + "yearly_co2 = data.groupby('year')['average'].mean()\n", + "\n", + "# Visualisation de l'évolution annuelle\n", + "plt.figure(figsize=(12, 6))\n", + "yearly_co2.plot(style='*', color='green')\n", + "plt.xlabel(\"Année\")\n", + "plt.ylabel(\"Concentration annuelle moyenne de CO₂ (ppm)\")\n", + "plt.title(\"Évolution de la concentration annuelle moyenne de CO₂ à Mauna Loa\")\n", + "plt.show()\n", + "\n", + "# Distribution des concentrations annuelles de CO₂ pour évaluer les années avec les concentrations les plus élevées\n", + "df_yearly_co2 = yearly_co2.sort_values().reset_index()\n", + "df_yearly_co2.columns = ['Année', 'Concentration moyenne de CO₂ (ppm)']\n", + "df_yearly_co2\n", + "\n", + "# Histogramme de la distribution annuelle de CO₂\n", + "yearly_co2.hist(xrot=20, color='skyblue')\n", + "plt.xlabel(\"Concentration annuelle moyenne de CO₂ (ppm)\")\n", + "plt.ylabel(\"Nombre d'années\")\n", + "plt.title(\"Distribution de la concentration annuelle moyenne de CO₂ à Mauna Loa\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], "metadata": { "kernelspec": { "display_name": "Python 3", @@ -16,10 +135,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.3" + "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 } - -- 2.18.1