From 7cb1b178dade666dc3de97b89a1b6de14600cceb Mon Sep 17 00:00:00 2001 From: e5e62e6e8091e12ec477af239ac0a4fc Date: Fri, 28 Jul 2023 12:00:45 +0000 Subject: [PATCH] =?UTF-8?q?d=C3=A9composition=20des=20s=C3=A9ries?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module3/exo3/exercice.ipynb | 112 ++++++++++++++++++++++++++++++++---- 1 file changed, 101 insertions(+), 11 deletions(-) diff --git a/module3/exo3/exercice.ipynb b/module3/exo3/exercice.ipynb index f7f6345..deed409 100644 --- a/module3/exo3/exercice.ipynb +++ b/module3/exo3/exercice.ipynb @@ -30,14 +30,16 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "import seaborn as sns\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n", + "\n", + "from statsmodels.tsa.seasonal import seasonal_decompose\n" ] }, { @@ -367,31 +369,119 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "data = data.set_index('index')" + ] + }, + { + "cell_type": "code", + "execution_count": 48, "metadata": {}, "outputs": [ { "data": { + "image/png": "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\n", "text/plain": [ - "[]" + "
" ] }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "fig = plt.subplots(1, 1, figsize=(12, 7))\n", - "plt.plot(data)" + "data.plot(y='ppm', kind='line',figsize=(12, 5), lw=2, title=\"CO2 dans atmosphère\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On observe bien une oscillation périodique ainsi qu'une tendance à la hausse plus lente." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Decomposition des séries" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 65, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "y = data.reset_index()['ppm'].values\n", + "x = data.reset_index()['index'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "res = seasonal_decompose(y, model='additive', freq=52)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback .post_execute at 0x7fe4d605d620> (for post_execute):\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mpost_execute\u001b[0;34m()\u001b[0m\n\u001b[1;32m 147\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mpost_execute\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 148\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_interactive\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[0;32m--> 149\u001b[0;31m \u001b[0mdraw_all\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 150\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 151\u001b[0m \u001b[0;31m# IPython >= 2\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/matplotlib/_pylab_helpers.py\u001b[0m in \u001b[0;36mdraw_all\u001b[0;34m(cls, force)\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mf_mgr\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_all_fig_managers\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 135\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mforce\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mf_mgr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstale\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 136\u001b[0;31m \u001b[0mf_mgr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw_idle\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 137\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 138\u001b[0m \u001b[0matexit\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mregister\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mGcf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdestroy_all\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/matplotlib/backend_bases.py\u001b[0m in \u001b[0;36mdraw_idle\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2053\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_is_idle_drawing\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2054\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_idle_draw_cntx\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[0;32m-> 2055\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2056\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2057\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdraw_cursor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mevent\u001b[0m\u001b[0;34m)\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/matplotlib/backends/backend_agg.py\u001b[0m in \u001b[0;36mdraw\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 435\u001b[0m \u001b[0;31m# if toolbar:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 436\u001b[0m \u001b[0;31m# toolbar.set_cursor(cursors.WAIT)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 437\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrenderer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 438\u001b[0m \u001b[0;31m# A GUI class may be need to update a window using this draw, so\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 439\u001b[0m \u001b[0;31m# don't forget to call the superclass.\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/matplotlib/artist.py\u001b[0m in \u001b[0;36mdraw_wrapper\u001b[0;34m(artist, renderer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_filter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 55\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0martist\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 56\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0martist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_agg_filter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\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/matplotlib/figure.py\u001b[0m in \u001b[0;36mdraw\u001b[0;34m(self, renderer)\u001b[0m\n\u001b[1;32m 1491\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1492\u001b[0m mimage._draw_list_compositing_images(\n\u001b[0;32m-> 1493\u001b[0;31m renderer, self, artists, self.suppressComposite)\n\u001b[0m\u001b[1;32m 1494\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1495\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose_group\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'figure'\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/matplotlib/image.py\u001b[0m in \u001b[0;36m_draw_list_compositing_images\u001b[0;34m(renderer, parent, artists, suppress_composite)\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnot_composite\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mhas_images\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0martists\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 141\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrenderer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 142\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[0;31m# Composite any adjacent images together\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/matplotlib/artist.py\u001b[0m in \u001b[0;36mdraw_wrapper\u001b[0;34m(artist, renderer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_filter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 55\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0martist\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 56\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0martist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_agg_filter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\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/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36mdraw\u001b[0;34m(self, renderer, inframe)\u001b[0m\n\u001b[1;32m 2633\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstop_rasterizing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2634\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2635\u001b[0;31m \u001b[0mmimage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_draw_list_compositing_images\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrenderer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0martists\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2636\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2637\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose_group\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'axes'\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/matplotlib/image.py\u001b[0m in \u001b[0;36m_draw_list_compositing_images\u001b[0;34m(renderer, parent, artists, suppress_composite)\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnot_composite\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mhas_images\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0martists\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 141\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrenderer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 142\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[0;31m# Composite any adjacent images together\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/matplotlib/artist.py\u001b[0m in \u001b[0;36mdraw_wrapper\u001b[0;34m(artist, renderer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart_filter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 55\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0martist\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 56\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0martist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_agg_filter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\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/matplotlib/axis.py\u001b[0m in \u001b[0;36mdraw\u001b[0;34m(self, renderer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0mrenderer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen_group\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1190\u001b[0;31m \u001b[0mticks_to_draw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_update_ticks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrenderer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1191\u001b[0m ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,\n\u001b[1;32m 1192\u001b[0m renderer)\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/axis.py\u001b[0m in \u001b[0;36m_update_ticks\u001b[0;34m(self, renderer)\u001b[0m\n\u001b[1;32m 1026\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1027\u001b[0m \u001b[0minterval\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_view_interval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1028\u001b[0;31m \u001b[0mtick_tups\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miter_ticks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# iter_ticks calls the locator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1029\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_smart_bounds\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mtick_tups\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1030\u001b[0m \u001b[0;31m# handle inverted limits\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/matplotlib/axis.py\u001b[0m in \u001b[0;36miter_ticks\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 973\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmajor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformatter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_locs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmajorLocs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 974\u001b[0m majorLabels = [self.major.formatter(val, i)\n\u001b[0;32m--> 975\u001b[0;31m for i, val in enumerate(majorLocs)]\n\u001b[0m\u001b[1;32m 976\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[0mminorLocs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mminor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlocator\u001b[0m\u001b[0;34m(\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/matplotlib/axis.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 973\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmajor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformatter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_locs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmajorLocs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 974\u001b[0m majorLabels = [self.major.formatter(val, i)\n\u001b[0;32m--> 975\u001b[0;31m for i, val in enumerate(majorLocs)]\n\u001b[0m\u001b[1;32m 976\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[0mminorLocs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mminor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlocator\u001b[0m\u001b[0;34m(\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/matplotlib/category.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, x, pos)\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 153\u001b[0m r_mapping = {v: StrCategoryFormatter._text(k)\n\u001b[0;32m--> 154\u001b[0;31m for k, v in self._units.items()}\n\u001b[0m\u001b[1;32m 155\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mr_mapping\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mround\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\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 156\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/category.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 153\u001b[0m r_mapping = {v: StrCategoryFormatter._text(k)\n\u001b[0;32m--> 154\u001b[0;31m for k, v in self._units.items()}\n\u001b[0m\u001b[1;32m 155\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mr_mapping\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mround\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\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 156\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/category.py\u001b[0m in \u001b[0;36m_text\u001b[0;34m(value)\u001b[0m\n\u001b[1;32m 159\u001b[0m \"\"\"Converts text values into `utf-8` or `ascii` strings\n\u001b[1;32m 160\u001b[0m \"\"\"\n\u001b[0;32m--> 161\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mLooseVersion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__version__\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mLooseVersion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'1.7.0'\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 162\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0msix\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0municode\u001b[0m\u001b[0;34m)\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 163\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'utf-8'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'ignore'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'utf-8'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/distutils/version.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, vstring)\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__init__\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvstring\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 303\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvstring\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 304\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvstring\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 305\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 306\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/distutils/version.py\u001b[0m in \u001b[0;36mparse\u001b[0;34m(self, vstring)\u001b[0m\n\u001b[1;32m 310\u001b[0m \u001b[0;31m# use by __str__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvstring\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvstring\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 312\u001b[0;31m components = [x for x in self.component_re.split(vstring)\n\u001b[0m\u001b[1;32m 313\u001b[0m if x and x != '.']\n\u001b[1;32m 314\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mobj\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcomponents\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "fig, axes = plt.subplots(3, 1, figsize=(10, 15))\n", + "axes[0].plot(x, res.trend, label='Tendance')\n", + "axes[1].plot(x, res.seasonal, label='Oscillation')\n", + "axes[2].plot(x, res.resid, label='Résidus')\n", + "for i in range(3):\n", + " axes[i].legend(loc='upper left');" + ] }, { "cell_type": "code", -- 2.18.1