diff --git a/module3/exo3/exercice.ipynb b/module3/exo3/exercice.ipynb index be81f5569364b2afa2b01d69dfecba7f3db56a91..6d0aa2601495b739d7766380ea5507e6b627afff 100644 --- a/module3/exo3/exercice.ipynb +++ b/module3/exo3/exercice.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -73,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -83,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -113,7 +113,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -130,7 +130,7 @@ } ], "source": [ - "# Réalisation du graphique pour montrer l'oscillation (300 dernières lignes du tableau)\n", + "# Réalisation du graphique complet. Réalisation du graphique pour montrer l'oscillation (300 dernières lignes du tableau)\n", "plt.figure(figsize=(15, 6))\n", "plt.plot(data['Date'][-300:], data['Concentration'][-300:], label='CO2 Concentration')\n", "plt.title('CO2 Concentration Over Time')\n", @@ -143,7 +143,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -169,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -193,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -210,7 +210,7 @@ } ], "source": [ - "# Création du graphique pour montrer la concentration moyenne de CO2 par an au fil du temps\n", + "# Contribution lente. Création du graphique pour montrer la concentration moyenne de CO2 par an au fil du temps\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(data['Date'], data['Mean_CO2_Concentration'], label='Mean CO2 Concentration per Year Over Time')\n", "plt.title('Mean CO2 Concentration per Year Over Time')\n", @@ -222,7 +222,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -246,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -263,7 +263,7 @@ } ], "source": [ - "# Création du graphique pour montrer l'oscillation de la concentration de CO2 par an au fil du temps\n", + "# Oscillation périodique. Création du graphique pour montrer l'oscillation de la concentration de CO2 au fil du temps\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(data['Date'], data['Oscilation'], label='Oscilation CO2 Concentration Over Time')\n", "plt.title('Oscilation CO2 Concentration Over Time')\n", @@ -275,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -292,7 +292,7 @@ } ], "source": [ - "# Création du graphique pour montrer l'oscillation de la concentration de CO2 par an au fil du temps (300 dernières lignes du tableau)\n", + "# Oscillation périodique. Création du graphique pour montrer l'oscillation de la concentration de CO2 au fil du temps (300 dernières lignes du tableau)\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(data['Date'][-300:], data['Oscilation'][-300:], label='Oscilation CO2 Concentration Over Time')\n", "plt.title('Oscilation CO2 Concentration Over Time')\n", @@ -304,18 +304,18 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ - "# Modéliser la évolution lente pour extrapolation jusqu’en 2025\n", + "# Contribution lente. Modéliser la évolution lente pour extrapolation jusqu’en 2025\n", "import numpy as np\n", "from sklearn.linear_model import LinearRegression" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -331,7 +331,7 @@ } ], "source": [ - "# Modéliser une évolution lente en utilisant la régression linéaire\n", + "# Contribution lente. Modéliser une évolution lente en utilisant la régression linéaire\n", "X = np.arange(len(data)).reshape(-1, 1) # Variable indépendante : nombre de semaines\n", "y = data['Mean_CO2_Concentration'].values.reshape(-1, 1) # Variable dépendante : concentration de CO2\n", "\n", @@ -362,7 +362,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -374,7 +374,7 @@ } ], "source": [ - "# Caractériser l’oscillation\n", + "# Oscillation périodique. Caractériser l’oscillation\n", "import numpy as np\n", "# from scipy.fft import fft \n", "# fft de scipy.fft, a des problèmes de chargement, il se peut que nous utilisions une version de SciPy antérieure à 1.4.0. La fonction fft a été ajoutée dans SciPy version 1.4.0.\n", @@ -384,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -406,7 +406,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -419,7 +419,7 @@ } ], "source": [ - "# Calculer la transformée de Fourier de la série chronologique des anomalies CO2\n", + "# Oscillation périodique. Calculer la transformée de Fourier de la série chronologique des anomalies CO2\n", "co2_anomaly_fft = np.fft.fft(data['Oscilation'])\n", "\n", "# Calculer les fréquences correspondant aux composantes de Fourier\n", @@ -437,25 +437,25 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Comment caractériser l'oscillation en calculant la transformée de Fourier donne des valeurs pas faciles à comprendre a priori, une autre manière est choisie pour caractériser l'oscillation\n" + "Comment caractériser l'oscillation périodique en calculant la transformée de Fourier donne des valeurs pas faciles à comprendre a priori, une autre manière est choisie pour caractériser l'oscillation\n" ] } ], "source": [ "# Comment caractériser l'oscillation en calculant la transformée de Fourier donne des valeurs pas faciles à comprendre a priori, une autre manière est choisie pour caractériser l'oscillation\n", - "print(\"Comment caractériser l'oscillation en calculant la transformée de Fourier donne des valeurs pas faciles à comprendre a priori, une autre manière est choisie pour caractériser l'oscillation\")" + "print(\"Comment caractériser l'oscillation périodique en calculant la transformée de Fourier donne des valeurs pas faciles à comprendre a priori, une autre manière est choisie pour caractériser l'oscillation\")" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -472,7 +472,7 @@ } ], "source": [ - "# Création du graphique pour montrer l'oscillation de la concentration de CO2 par an au fil du temps (300 dernières lignes du tableau)\n", + "# Oscillation périodique. Création du graphique pour montrer l'oscillation de la concentration de CO2 au fil du temps (300 dernières lignes du tableau)\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(data['Date'][-300:], data['Oscilation'][-300:], label='Oscilation CO2 Concentration Over Time')\n", "plt.title('Oscilation CO2 Concentration Over Time')\n", @@ -484,7 +484,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -492,22 +492,24 @@ "output_type": "stream", "text": [ "Maximum oscillation amplitude in CO2 anomalies: 4.419807692307586 ppm\n", - "Minimum oscillation amplitude in CO2 anomalies: -4.191923076923047 ppm\n" + "Minimum oscillation amplitude in CO2 anomalies: -4.191923076923047 ppm\n", + "From the graph it is observed that maximum oscillation values around 3 ppm are frequent and the same is true for minimum oscillation values around -3 ppm\n" ] } ], "source": [ - "# Calculez la valeur maximale et minimale de la colonne 'Oscillation'\n", + "# Oscillation périodique. Calculez la valeur maximale et minimale de la colonne 'Oscillation'\n", "maximum_value = data['Oscilation'].max()\n", "minimum_value = data['Oscilation'].min()\n", "\n", "print(\"Maximum oscillation amplitude in CO2 anomalies:\", maximum_value, \"ppm\")\n", - "print(\"Minimum oscillation amplitude in CO2 anomalies:\", minimum_value, \"ppm\")" + "print(\"Minimum oscillation amplitude in CO2 anomalies:\", minimum_value, \"ppm\")\n", + "print(\"From the graph it is observed that maximum oscillation values around 3 ppm are frequent and the same is true for minimum oscillation values around -3 ppm\")" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -519,7 +521,7 @@ } ], "source": [ - "# Trouver les indices où la concentration est égale à zéro\n", + "# Oscillation périodique. Trouver les indices où la concentration est égale à zéro\n", "zero_indices = data.index[data['Oscilation'] == 0].tolist()\n", "\n", "# Calculer les temps entre deux passages à zéro consécutifs\n", @@ -537,7 +539,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -549,7 +551,7 @@ } ], "source": [ - "# Identifier les passages à zéro\n", + "# Oscillation périodique. Identifier les passages à zéro\n", "crosses_by_zero = (data['Oscilation'] * data['Oscilation'].shift(1) < 0) & (data['Oscilation'] != 0) # Série booléenne qui contient True dans les lignes où un passage à zéro se produit dans la colonne « Oscilation » du DataFrame et False dans les autres lignes. Cette série est ensuite utilisée pour filtrer le DataFrame et obtenir les lignes qui correspondent aux passages par zéro\n", "\n", "# Filtrer les lignes contenant des passages à zéro\n", @@ -577,7 +579,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -590,7 +592,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -605,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -635,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -665,7 +667,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -687,7 +689,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -717,7 +719,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -747,7 +749,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -776,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -805,7 +807,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -834,7 +836,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -875,6 +877,20 @@ "outputs": [], "source": [] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null,