359 lines
		
	
	
		
			682 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			359 lines
		
	
	
		
			682 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | { | ||
|  |  "cells": [ | ||
|  |   { | ||
|  |    "cell_type": "markdown", | ||
|  |    "metadata": {}, | ||
|  |    "source": [ | ||
|  |     "# Rolling et Expanding\n", | ||
|  |     "\n", | ||
|  |     "Une technique très courante avec les séries temporelles consiste à créer des données à partir d'une moyenne mobile. Regardons comment faire cela facilement avec pandas !" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 1, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [], | ||
|  |    "source": [ | ||
|  |     "import pandas as pd\n", | ||
|  |     "import matplotlib.pyplot as plt\n", | ||
|  |     "%matplotlib inline" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 2, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [], | ||
|  |    "source": [ | ||
|  |     "# La meilleure façon de lire les données avec l'index des séries temporelles !\n", | ||
|  |     "df = pd.read_csv('time_data/walmart_stock.csv',index_col='Date',parse_dates=True)" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 3, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [ | ||
|  |     { | ||
|  |      "output_type": "execute_result", | ||
|  |      "data": { | ||
|  |       "text/plain": [ | ||
|  |        "                 Open       High        Low      Close    Volume  Adj Close\n", | ||
|  |        "Date                                                                       \n", | ||
|  |        "2012-01-03  59.970001  61.060001  59.869999  60.330002  12668800  52.619235\n", | ||
|  |        "2012-01-04  60.209999  60.349998  59.470001  59.709999   9593300  52.078475\n", | ||
|  |        "2012-01-05  59.349998  59.619999  58.369999  59.419998  12768200  51.825539\n", | ||
|  |        "2012-01-06  59.419998  59.450001  58.869999  59.000000   8069400  51.459220\n", | ||
|  |        "2012-01-09  59.029999  59.549999  58.919998  59.180000   6679300  51.616215" | ||
|  |       ], | ||
|  |       "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Volume</th>\n      <th>Adj Close</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2012-01-03</th>\n      <td>59.970001</td>\n      <td>61.060001</td>\n      <td>59.869999</td>\n      <td>60.330002</td>\n      <td>12668800</td>\n      <td>52.619235</td>\n    </tr>\n    <tr>\n      <th>2012-01-04</th>\n      <td>60.209999</td>\n      <td>60.349998</td>\n      <td>59.470001</td>\n      <td>59.709999</td>\n      <td>9593300</td>\n      <td>52.078475</td>\n    </tr>\n    <tr>\n      <th>2012-01-05</th>\n      <td>59.349998</td>\n      <td>59.619999</td>\n      <td>58.369999</td>\n      <td>59.419998</td>\n      <td>12768200</td>\n      <td>51.825539</td>\n    </tr>\n    <tr>\n      <th>2012-01-06</th>\n      <td>59.419998</td>\n      <td>59.450001</td>\n      <td>58.869999</td>\n      <td>59.000000</td>\n      <td>8069400</td>\n      <td>51.459220</td>\n    </tr>\n    <tr>\n      <th>2012-01-09</th>\n      <td>59.029999</td>\n      <td>59.549999</td>\n      <td>58.919998</td>\n      <td>59.180000</td>\n      <td>6679300</td>\n      <td>51.616215</td>\n    </tr>\n  </tbody>\n</table>\n</div>" | ||
|  |      }, | ||
|  |      "metadata": {}, | ||
|  |      "execution_count": 3 | ||
|  |     } | ||
|  |    ], | ||
|  |    "source": [ | ||
|  |     "df.head()" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 4, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [ | ||
|  |     { | ||
|  |      "output_type": "execute_result", | ||
|  |      "data": { | ||
|  |       "text/plain": [ | ||
|  |        "<AxesSubplot:xlabel='Date'>" | ||
|  |       ] | ||
|  |      }, | ||
|  |      "metadata": {}, | ||
|  |      "execution_count": 4 | ||
|  |     }, | ||
|  |     { | ||
|  |      "output_type": "display_data", | ||
|  |      "data": { | ||
|  |       "text/plain": "<Figure size 1152x432 with 1 Axes>", | ||
|  |       "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2020-12-01T22:26:34.966924</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"me905572faa\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#me905572faa\" y=\"300.96\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 2012 -->\r\n      <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n        <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n        <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\ | ||
|  |       "image/png": "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 | ||
|  |      }, | ||
|  |      "metadata": { | ||
|  |       "needs_background": "light" | ||
|  |      } | ||
|  |     } | ||
|  |    ], | ||
|  |    "source": [ | ||
|  |     "df['Open'].plot(figsize=(16,6))" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "markdown", | ||
|  |    "metadata": {}, | ||
|  |    "source": [ | ||
|  |     "Maintenant, ajoutons une moyenne glissante ! Cette méthode de roulement (rolling) fournit des entrées de lignes, où chaque entrée est alors représentative de la période. " | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 5, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [ | ||
|  |     { | ||
|  |      "output_type": "execute_result", | ||
|  |      "data": { | ||
|  |       "text/plain": [ | ||
|  |        "                 Open       High        Low      Close        Volume  \\\n", | ||
|  |        "Date                                                                   \n", | ||
|  |        "2012-01-03        NaN        NaN        NaN        NaN           NaN   \n", | ||
|  |        "2012-01-04        NaN        NaN        NaN        NaN           NaN   \n", | ||
|  |        "2012-01-05        NaN        NaN        NaN        NaN           NaN   \n", | ||
|  |        "2012-01-06        NaN        NaN        NaN        NaN           NaN   \n", | ||
|  |        "2012-01-09        NaN        NaN        NaN        NaN           NaN   \n", | ||
|  |        "2012-01-10        NaN        NaN        NaN        NaN           NaN   \n", | ||
|  |        "2012-01-11  59.495714  59.895714  59.074285  59.440000  9.007414e+06   \n", | ||
|  |        "2012-01-12  59.469999  59.744285  59.007143  59.321429  8.231357e+06   \n", | ||
|  |        "2012-01-13  59.322857  59.638571  58.941428  59.297143  7.965071e+06   \n", | ||
|  |        "2012-01-17  59.397143  59.708571  59.105714  59.358572  7.355329e+06   \n", | ||
|  |        "2012-01-18  59.450000  59.791428  59.217143  59.502857  7.047043e+06   \n", | ||
|  |        "2012-01-19  59.578572  59.960000  59.335715  59.707143  7.412086e+06   \n", | ||
|  |        "2012-01-20  59.767143  60.180000  59.577143  59.988571  7.908014e+06   \n", | ||
|  |        "2012-01-23  60.017143  60.387143  59.787143  60.204285  8.017800e+06   \n", | ||
|  |        "2012-01-24  60.154286  60.672857  59.979999  60.474285  8.035857e+06   \n", | ||
|  |        "2012-01-25  60.440000  60.958572  60.270000  60.749999  7.776786e+06   \n", | ||
|  |        "2012-01-26  60.715714  61.205714  60.448571  60.910000  7.624814e+06   \n", | ||
|  |        "2012-01-27  60.868572  61.361429  60.575714  61.010000  7.678514e+06   \n", | ||
|  |        "2012-01-30  60.945715  61.445714  60.661428  61.108571  7.450271e+06   \n", | ||
|  |        "2012-01-31  61.057143  61.491429  60.648571  61.158571  7.362086e+06   \n", | ||
|  |        "\n", | ||
|  |        "            Adj Close  \n", | ||
|  |        "Date                   \n", | ||
|  |        "2012-01-03        NaN  \n", | ||
|  |        "2012-01-04        NaN  \n", | ||
|  |        "2012-01-05        NaN  \n", | ||
|  |        "2012-01-06        NaN  \n", | ||
|  |        "2012-01-09        NaN  \n", | ||
|  |        "2012-01-10        NaN  \n", | ||
|  |        "2012-01-11  51.842984  \n", | ||
|  |        "2012-01-12  51.739567  \n", | ||
|  |        "2012-01-13  51.718386  \n", | ||
|  |        "2012-01-17  51.771963  \n", | ||
|  |        "2012-01-18  51.897808  \n", | ||
|  |        "2012-01-19  52.075984  \n", | ||
|  |        "2012-01-20  52.321443  \n", | ||
|  |        "2012-01-23  52.509586  \n", | ||
|  |        "2012-01-24  52.745077  \n", | ||
|  |        "2012-01-25  52.985553  \n", | ||
|  |        "2012-01-26  53.125103  \n", | ||
|  |        "2012-01-27  53.212323  \n", | ||
|  |        "2012-01-30  53.298295  \n", | ||
|  |        "2012-01-31  53.341905  " | ||
|  |       ], | ||
|  |       "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Volume</th>\n      <th>Adj Close</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2012-01-03</th>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2012-01-04</th>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2012-01-05</th>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2012-01-06</th>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2012-01-09</th>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2012-01-10</th>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>2012-01-11</th>\n      <td>59.495714</td>\n      <td>59.895714</td>\n      <td>59.074285</td>\n      <td>59.440000</td>\n      <td>9.007414e+06</td>\n      <td>51.842984</td>\n    </tr>\n    <tr>\n      <th>2012-01-12</th>\n      <td>59.469999</td>\n      <td>59.744285</td>\n      <td>59.007143</td>\n      <td>59.321429</td>\n      <td>8.231357e+06</td>\n      <td>51.739567</td>\n    </tr>\n    <tr>\n      <th>2012-01-13</th>\n      <td>59.322857</td>\n      <td>59.638571</td>\n      <td>58.941428</td>\n      <td>59.297143</td>\n      <td>7.965071e+06</td>\n      <td>51.718386</td>\n    </tr>\n    <tr>\n      <th>2012-01-17</th>\n      <td>59.397143</td>\n      <td>59.708571</td>\n      <td>59.105714</td>\n      <td>59.358572</td>\n      <td>7.355329e+06</td>\n      <td>51.771963</td>\n    </tr>\n    <tr>\n      <th>2012-01-18</th>\n      <td>59.450000</td>\n      <td>59.791428</td>\n      <td>59.217143</td>\n      <td>59.502857</td>\n      <td>7.047043e+06</td>\n      <td>51.897808</td>\n    </tr>\n    <tr>\n      <th>2012-01-19</th>\n      <td>59.578572</td>\n      <td>59.960000</td>\n      <td>59.335715</td>\n      <td>59.707143</td>\n      <td>7.412086e+06</td>\n      <td>52.075984</td>\n    </tr>\n    <tr>\n      <th>2012-01-20</th>\n      <td>59.767143</td>\n      <td>60.180000</td>\n      <td>59.577143</td>\n      <td>59.988571</td>\n      <td>7.908014e+06</td>\n      <td>52.321443</td>\n    </tr>\n    <tr>\n      <th>2012-01-23</th>\n      <td>60.017143</td>\n      <td>60.387143</td>\n      <td>59.787143</td>\n      <td>60.204285</td>\n      <td>8.017800e+06</td>\n      <td>52.509586</td>\n    </tr>\n    <tr>\n      <th>2012-01-24</th>\n      <td>60.154286</td>\n      <td>60.672857</td>\n      <td>59.979999</td>\n      <td>60.474285</td>\n      <td>8.035857e+06</td>\n      <td>52.745077</td>\n    </tr>\n    <tr>\n      <th>2012-01-25</th>\n      <td>60.440000</td>\n      <td>60.958572</td>\n      <td>60.270000</td>\n      <td>60.749999</td>\n      <td>7.776786e+06</td>\n      <td>52.985553</td>\n    </tr>\n    <tr>\n      <th>2012-01-26</th>\n      <td>60.715714</td>\n      <td>61.205714</td>\n      <td>60.448571</td>\n      <td>60.910000</td>\n      <td>7.624814e+06</td>\n      <td>53.125103</td>\n    </tr>\n    <tr>\n      <th>2012-01-27</th>\n      <td>60.868572</td>\n      <td>61.361429</td>\n      <td>60.575714</td>\n       | ||
|  |      }, | ||
|  |      "metadata": {}, | ||
|  |      "execution_count": 5 | ||
|  |     } | ||
|  |    ], | ||
|  |    "source": [ | ||
|  |     "# Moyenne glissante sur 7 jours\n", | ||
|  |     "df.rolling(7).mean().head(20)" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 6, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [ | ||
|  |     { | ||
|  |      "output_type": "execute_result", | ||
|  |      "data": { | ||
|  |       "text/plain": [ | ||
|  |        "<AxesSubplot:xlabel='Date'>" | ||
|  |       ] | ||
|  |      }, | ||
|  |      "metadata": {}, | ||
|  |      "execution_count": 6 | ||
|  |     }, | ||
|  |     { | ||
|  |      "output_type": "display_data", | ||
|  |      "data": { | ||
|  |       "text/plain": "<Figure size 432x288 with 1 Axes>", | ||
|  |       "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"252.024627pt\" version=\"1.1\" viewBox=\"0 0 368.925 252.024627\" width=\"368.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2020-12-01T22:26:35.333014</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M -0 252.024627 \r\nL 368.925 252.024627 \r\nL 368.925 0 \r\nL -0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 26.925 203.04 \r\nL 361.725 203.04 \r\nL 361.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m2c312a53f9\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"41.809267\" xlink:href=\"#m2c312a53f9\" y=\"203.04\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 2012 -->\r\n      <g transform=\"translate(18.729076 229.34544)rotate(-30)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n        <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n        <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x | ||
|  |       "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD8CAYAAABuHP8oAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAABVQElEQVR4nO2dd3gcxdnAf3NNvUuWXGS594a7DTYY05upBtNMCR0SIKGEQGhJqIEv9FBDD4Riio3BgAFjg3HvvcuWVSyrtyvz/TF7RcXWSb6ik+b3PHrudnZ39h3d3buz77xFSCnRaDQaTeRhCrcAGo1Go2kdWoFrNBpNhKIVuEaj0UQoWoFrNBpNhKIVuEaj0UQoWoFrNBpNhGIJ5cXS09Nljx49QnlJjUajiXiWLVtWJKXMaNgeUgXeo0cPli5dGspLajQaTcQjhNjVVLs2oWg0Gk2EohW4RqPRRChagWs0Gk2EohW4RqPRRChagWs0Gk2EohW4RtMG2FNcRXmNPdxiaCIMrcA1mjbApMfnc8FLv4RbDE2E4ZcCF0L8QQixVgixTghxq9GWKoSYJ4TYYrymBFVSjaads3F/ebhF0EQYzSpwIcQQ4BpgLDAcOEMI0Re4G/hOStkX+M7Y1mg0LeTrdfvDLYImQvFnBj4Q+FVKWSWldAA/AucA04A3jWPeBM4OioQaTTvnureXhVsETYTijwJfC0wWQqQJIWKB04BsIFNKmQdgvHYKnpgajUajaUizuVCklBuEEI8B84AKYBXg8PcCQohrgWsBunfv3koxNRqNRtMQvxYxpZSvSSlHSiknA8XAFiBfCNEZwHgtOMS5L0spR0spR2dkNEqmpdF0eGwW7QymaR3+eqF0Ml67A+cC7wOfAzONQ2YCnwVDQI2mvZMSaw23CJoIxd90sh8LIdIAO3CTlPKgEOJR4EMhxNXAbuCCYAmp0bRnBndJIr+sgNE52hNX0zL8UuBSyklNtB0ApgZcIo2mg+FwSQAyE6PDLIkm0tDGN40mzDhdLuNVhlkSTaShFbhGE2bsTqW4XVIrcE3L0ApcowkzDqeagW8vqmTM379lzpq8MEukiRS0AtdowozbBr69sILC8lpufHd5mCXSRApagWs0YcbhMaF426rq/I6V03RgtALXaMKMw1jE9KW8RitwTfNoBa7RhBn3DNyXWntjpa7RNEQrcI0mzDiacB+ssTtAe6VomsHfSEyNRhMk3F4oboaI7US/eBu1lgqikrJg0u1w1KVhkk7TltEzcI0mDDicLt5YuIMed89mX2mNpz2LA3xse5A0Svi4dhwUb4OfngijpJq2jFbgGk2IKK6sQxpmkTcW7uTBL9Z79kUZGQlPNC8jStiZXvdX7nH8jrIpj8DBnVCwMRwia9o4WoFrNCFgT3EVIx+exxsLdwKwu7iq3v6Lx6lc+WeYf2WbqzPrZE8AFlknAAI2fBFKcTURglbgGk0IWLevFICfthQCEGMz19sfazMzVGxnnGkj7zhP8LQvKrRCRn/YtyJ0wmoiBq3ANZoQsKNIzbjT46OwO128/NP2evtjrGbGmTYA8KVzvKe9osYB6f2gYD0aTUO0AtdoQsCOogpALV7uLKpstL979XputXzMRlc2hXjzgu8qrqKu2wQ4uAPWfhwyeTWRgVbgGk0IqKhVkZXFVfZ6JdQuGNWNOKqZsuZuohPTqDztWc++hCgLy3Yd5KIVg9UsfOkbIZdb07bRClyjCQEVtU4A7A4Xdh+/776Z8Vxv+YL4mjwsF7zOqPFTPPuGZycDsDy3AvqdArt/hbrGs3dNx8Xfmpi3CSHWCSHWCiHeF0JECyEeEELsFUKsNP5OC7awGk0kUl3n5KfNavHS4XJ58n8DXHV0Ty5O3w7Z46H7+HrnTR3YybuRPRZcdshbFRKZNZFBswpcCNEV+D0wWko5BDADFxm7n5ZSjjD+5gRRTo0mYhnywNee9w6XrDcDt5TuIq1kNSJ7TKPzpo3oCkBqnA16TIKoJPjtleALrIkY/DWhWIAYIYQFiAX2BU8kjaZ94VsqzeGUnhn41WPS4NUTwGSB/o0fYFPjbPTOiGNCrzSISYZ+J0Hu0lCJrYkAmlXgUsq9wJOoyvN5QKmU8htj981CiNVCiNeFEE2W1BZCXCuEWCqEWFpYWBgwwTWaSGTj/jLPDPzi2CVQVQQXvQc5E5o83mo2eWfs6f2hdLe2g2s8+GNCSQGmAT2BLkCcEOJS4EWgNzACpdj/2dT5UsqXpZSjpZSjMzIyAiW3RhOR2J2SfSXVmHCRs/JJ6DYG+pxY75heGXGe9xazYHtRJbsPVEFGP9VYtCWUImvaMP6YUE4AdkgpC6WUduATYKKUMl9K6ZRSuoBXgLHBFFSjiUSklAgBtxzfx9O2paCCgWIXltoSGHc9mOr/DD+76Wh+vkt5o1hMJrYWVDD5iflqBg6wflaIpNe0dfxR4LuB8UKIWCGEAKYCG4QQnX2OOQdYGwwBNZpIptbhQsr6ofNfrt5HX7FXbWQNa3ROQrSVbimxANTYnd4d6X2h21hY9BzUlgdVbk1k4I8NfDHwEbAcWGOc8zLwuBBijRBiNTAFuC2Ygmo0kUhVnVLAcTZv6v09xdV0FwVqI7n7Yc+vV1rNZIbj71XuhLt+CbismsjDLy8UKeX9UsoBUsohUsrLpJS1xutQKeUwKeVZUsq8YAur0UQa7uLEMTYz710zztM+wrQVe2J3sEYf9vxqnxn4/E0F0HUUCBPs1gpcoyMxNZqgUm3MwGNtZib2TgcgkQomm1ZT3fcsv88HuO2DlRAVD31Pgl9fhMqioMisiRy0AtdogkiljwJ300vsxyJcOLs2v+5f4/Aq8C5JMerN5DvBUQ07FwRWWE3EoRW4RhNEPCYUq7KB90iL9di/Xck5zZ7vrms8OieF0mq72sgaooJ/8lYHXmBNRKEVuEYTRKobzMCzU2PJNhR4dKdefvfTPyuB/WU1OF2SpbmVbCGb2g1fgaMu8EJrIgatwDWaIFLVQIH/34UjmN7bgYzPJC4+0e9++mcl4HRJ5q3fz/kv/cK/a08i6sAG2PJ18ydr2i1agWs0QcQ9A3f7gafFR5Ej9yJSerSon+6pyi/8+neWA/CZ82gcpijYtShwwmoiDq3ANZog8sz3Kuw91u0HXrIH9vwGvY/36/w7Tu5P74w4RuakEOezEGrHwr7k0bDsTdi7LOByayIDrcA1miCSX1YDQHKMVTXk/gZIGHC6X+ffNKUP3/3xOBKjrYzrlVZv33n7LsGJgOVvBVJkTQShFbhGE0QEghuO643JJFRD8Q71mur/AqabtDhbve1CkvmudiBs+dbrrqLpUGgFrtEEEbvLhcWtvEEVJ47PBFvcoU86BKkNFDjAN66xUJYLy3S9zI6IVuAaTZBwuSRSqoyCHg7ugpSerepP5ZKrz1emSZA5BNZ+0loxNRGMVuAaTZCwu1QhBovZULxSQvF2SG2dArcZ/fRIi/W0xUdbVbm13KXaJ7wDohW4RhMk3KXUzG4Tyv7VULYXuo1uXYfGDNxdKxNgRHayquajQ+s7JFqBa0JORa2DW/+7gs9W7g23KEHFYShwjw1863fqddA5rerPbUDxXa50OCX0OQGSsmFBk0WxNO0YrcA1Iee577cya+U+/vDfleEWJag4nA0UeMluiEmFuLTDnHVoPCZwH4+T7zYW8KfPtsLgcyB3CdRVHYnImghDK3BNyKlzuMItQkhweGzgxs+sfD8kdj3MGYdHGHPwhg6DHy3LpbbPKeCsg6/ubHX/mshDK3BNyCmvsYdbhJDgbGhCKc+DhMxW93f+6G50SYpm+uhsFt8zlVE5KZ59r+3OhJGXw4p3oPrgEcmtiRz8UuBCiNuEEOuEEGuFEO8LIaKFEKlCiHlCiC3Ga0rzPWk0sPNApee9w9l+Z+NuE4pnEbMiHxKyWt1f1+QYFv15KtmpsWQmRnP2Ud7Z/ONzN8HQ6YBUofqaDkGzClwI0RX4PTBaSjkEMAMXAXcD30kp+wLfGdsaTbNsKajwvH9/yZ4wShJc3IuYVrMJXE5DgXdu5iz/uWhMdv2GrqPAZIWt3wb | ||
|  |      }, | ||
|  |      "metadata": { | ||
|  |       "needs_background": "light" | ||
|  |      } | ||
|  |     } | ||
|  |    ], | ||
|  |    "source": [ | ||
|  |     "df['Open'].plot()\n", | ||
|  |     "df.rolling(window=30).mean()['Close'].plot()" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "markdown", | ||
|  |    "metadata": {}, | ||
|  |    "source": [ | ||
|  |     "La façon la plus simple d'ajouter une légende est de faire de cette valeur de roulement une nouvelle colonne, puis pandas le fait automatiquement !" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 7, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [ | ||
|  |     { | ||
|  |      "output_type": "execute_result", | ||
|  |      "data": { | ||
|  |       "text/plain": [ | ||
|  |        "<AxesSubplot:xlabel='Date'>" | ||
|  |       ] | ||
|  |      }, | ||
|  |      "metadata": {}, | ||
|  |      "execution_count": 7 | ||
|  |     }, | ||
|  |     { | ||
|  |      "output_type": "display_data", | ||
|  |      "data": { | ||
|  |       "text/plain": "<Figure size 1152x432 with 1 Axes>", | ||
|  |       "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2020-12-01T22:26:35.574178</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m46fc0698ec\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#m46fc0698ec\" y=\"300.96\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 2012 -->\r\n      <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n        <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n        <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\ | ||
|  |       "image/png": "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Ht4kz99UJPAUQgghxFHPO07FbNBh0Cs4XZLxFOJEoKoqU6dOZezYsezevZstW7bwzDPPkJ2d3aLruPTSS9m4cSPr1q3jvvvu45577gGgoKCAxx9/nBUrVrBy5Uoef/xxCgsLgz7HCy+8wPr169m+fTsDBw5k3Lhx2O1Ns189OjqaJUuWAFBUVERWVlaTPG9TksBTCCGEEEc9b6mtyaDDqA+e8dx0sJhKu6ullyaEaEYLFizAaDRy8803+24bMGAAo0cH9j61Wq1cc8019O3bl4EDB7JgwQIANm/ezLBhwxgwYAD9+vVj586dAEyfPt13+0033YTLVffPjsjISN/fy8vLURQFgDlz5jBx4kRiY2OJiYlh4sSJ/Pbbb3U+l6Io3H333SQlJfHrr78C8I9//IMhQ4bQu3dvHn30UQDmz5/P1KlTfY+bO3cu5513XtDnvPjii/nyyy8B+O6772oc98ILLzB06FD69evne37QMqODBw+md+/evPfee77bw8PD+fe//03//v0ZMWJEkwT6DR2nIoQQQgjRanyBp16HUa/g8Mt4Wh0u7v92A9+vy+ShM3py/ehOrbVMIY5vv94PhzY27XMm9YXTnqv17k2bNjF48OB6n+bNN98EYOPGjWzbto1JkyaxY8cO3nnnHe68804uu+wy7HY7LpeLrVu3MnPmTJYsWYLRaOSWW25hxowZXHnllVx//fXcfPPNDBkyJOhrvPzyy9jtdv744w8ADh48SEpKiu+Y5OTkBpfQDho0iG3btnHOOefw9NNPExsbi8vlYsKECWzYsIHx48dz6623kpubS0JCAh999BHXXHNN0OeaMGECN9xwAy6Xiy+//JL33nuPJ598EoDff/+dnTt3snLlSlRV5eyzz2bRokWMGTOGDz/8kNjYWCorKxk6dCjnn38+cXFxlJeXM2LECJ5++mnuu+8+3n//fR566KEGva/aSMZTCCGEEEe9gD2e1TKeX60+wPfrMgHILbW1yvqEEK3rr7/+4oorrgCgR48edOjQgR07djBy5EieeeYZnn/+efbt20dISAjz589nzZo1DB06lAEDBjB//nz27NkDwAcffBA06AS49dZb2b17N88//zxPPfUUQMC+Si9vNrQ+/o/96quvGDRoEAMHDmTz5s1s2bIFRVG44oormD59OkVFRSxbtozTTjst6HPp9XpOPvlkZs6cSWVlJWlpab77fv/9d37//XcGDhzoC3a9md/XXnvNl9U8cOCA73aTycSZZ54JwODBg0lPT2/Qe6qLZDyFEEIIcdTzL7U1VOtqu2hHHqmxoZTbnJTZnK21RCGOf3VkJptL7969+eabb+o9LlgACNrezOHDhzN79mwmT57MBx98gKqqXHXVVTz77LNHtKaLL76Yf/zjH4CW4Vy4cKHvvoyMDMaOHdug5/n777+ZMGECe/fu5cUXX2TVqlXExMRw9dVXY7VaAbjmmms466yzsFgsTJs2DYOh9vDt4osvZurUqTz22GMBt6uqygMPPMBNN90UcPvChQuZN28ey5YtIzQ0lLFjx/pe12g0+gJovV6P09n4n62S8RRCCCHEUc/udKMoYNApGHVKQMYzo7CC7kkRhJkNlEvgKcRxZfz48dhsNt5//33fbatWreLPP/8MOG7MmDHMmDEDgB07drB//366d+/ | ||
|  |      }, | ||
|  |      "metadata": { | ||
|  |       "needs_background": "light" | ||
|  |      } | ||
|  |     } | ||
|  |    ], | ||
|  |    "source": [ | ||
|  |     "df['Close: 30 Day Mean'] = df['Close'].rolling(window=30).mean()\n", | ||
|  |     "df[['Close','Close: 30 Day Mean']].plot(figsize=(16,6))" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "markdown", | ||
|  |    "metadata": {}, | ||
|  |    "source": [ | ||
|  |     "## expanding\n", | ||
|  |     "\n", | ||
|  |     "Maintenant, que faire si vous voulez tout prendre en compte depuis le début de la série temporelle comme valeur mobile ? Par exemple, ne prendre pas seulement en compte une période de 7 jours, ou une moyenne mobile mensuelle, mais prendre en compte plutôt tout ce qui s'est passé depuis le début de la série temporelle, de façon continue :" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 8, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [ | ||
|  |     { | ||
|  |      "output_type": "execute_result", | ||
|  |      "data": { | ||
|  |       "text/plain": [ | ||
|  |        "<AxesSubplot:xlabel='Date'>" | ||
|  |       ] | ||
|  |      }, | ||
|  |      "metadata": {}, | ||
|  |      "execution_count": 8 | ||
|  |     }, | ||
|  |     { | ||
|  |      "output_type": "display_data", | ||
|  |      "data": { | ||
|  |       "text/plain": "<Figure size 1152x432 with 1 Axes>", | ||
|  |       "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2020-12-01T22:26:35.842166</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"ma7448ecc14\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#ma7448ecc14\" y=\"300.96\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 2012 -->\r\n      <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n        <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n        <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\ | ||
|  |       "image/png": "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 | ||
|  |      }, | ||
|  |      "metadata": { | ||
|  |       "needs_background": "light" | ||
|  |      } | ||
|  |     } | ||
|  |    ], | ||
|  |    "source": [ | ||
|  |     "# Facultatif : spécifier un nombre minimum de périodes\n", | ||
|  |     "df['Close'].expanding(min_periods=1).mean().plot(figsize=(16,6))" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "markdown", | ||
|  |    "metadata": {}, | ||
|  |    "source": [ | ||
|  |     "## Les Bandes de Bollinger\n", | ||
|  |     "\n", | ||
|  |     "Nous parlerons plus tard beaucoup plus des graphiques d'analyse financière et des indicateurs techniques, mais en voici un qui mérite d'être mentionné !\n", | ||
|  |     "\n", | ||
|  |     "Plus d'informations : http://www.investopedia.com/terms/b/bollingerbands.asp\n", | ||
|  |     "\n", | ||
|  |     "*Développées par John Bollinger, les Bandes de Bollinger® sont des bandes de volatilité placées au-dessus et au-dessous d'une moyenne mobile. La volatilité est basée sur l'écart-type, qui change au fur et à mesure que la volatilité augmente et diminue. Les bandes s'élargissent automatiquement lorsque la volatilité augmente et se rétrécissent lorsque la volatilité diminue. Cette nature dynamique des Bandes de Bollinger permet également de les utiliser sur différents titres avec les paramètres standards. Pour les signaux, les Bandes de Bollinger peuvent être utilisées pour identifier les valeurs hautes et les valeurs basses ou pour déterminer la force de la tendance.*\n", | ||
|  |     "\n", | ||
|  |     "*Les Bandes de Bollinger reflètent la direction avec la SMA (Moyenne Mobile Simple) à 20 périodes et la volatilité avec les bandes supérieures/inférieures. Elles peuvent donc être utilisées pour déterminer si les prix sont relativement élevés ou bas. Selon Bollinger, les bandes devraient contenir 88-89% d'action sur les prix, ce qui rend significatif un mouvement en dehors des bandes. Techniquement, les prix sont relativement élevés lorsqu'ils se situent au-dessus de la bande supérieure et relativement bas lorsqu'ils se situent en dessous de la bande inférieure. Cependant, un niveau relativement élevé ne doit pas être considéré comme une baisse ou un signal de vente. De même, un cours relativement bas ne doit pas être considéré comme haussier ou comme un signal d'achat. Les prix sont élevés ou bas pour une raison. Comme pour les autres indicateurs, les bandes de Bollinger ne sont pas destinées à être utilisées comme un outil autonome.*" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "code", | ||
|  |    "execution_count": 9, | ||
|  |    "metadata": {}, | ||
|  |    "outputs": [ | ||
|  |     { | ||
|  |      "output_type": "execute_result", | ||
|  |      "data": { | ||
|  |       "text/plain": [ | ||
|  |        "<AxesSubplot:xlabel='Date'>" | ||
|  |       ] | ||
|  |      }, | ||
|  |      "metadata": {}, | ||
|  |      "execution_count": 9 | ||
|  |     }, | ||
|  |     { | ||
|  |      "output_type": "display_data", | ||
|  |      "data": { | ||
|  |       "text/plain": "<Figure size 1152x432 with 1 Axes>", | ||
|  |       "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2020-12-01T22:26:36.093166</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m1c1c40d03a\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#m1c1c40d03a\" y=\"300.96\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 2012 -->\r\n      <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n        <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n        <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\ | ||
|  |       "image/png": "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 | ||
|  |      }, | ||
|  |      "metadata": { | ||
|  |       "needs_background": "light" | ||
|  |      } | ||
|  |     } | ||
|  |    ], | ||
|  |    "source": [ | ||
|  |     "df['Close: 30 Day Mean'] = df['Close'].rolling(window=20).mean()\n", | ||
|  |     "df['Upper'] = df['Close: 30 Day Mean'] + 2*df['Close'].rolling(window=20).std()\n", | ||
|  |     "df['Lower'] = df['Close: 30 Day Mean'] - 2*df['Close'].rolling(window=20).std()\n", | ||
|  |     "df[['Close','Close: 30 Day Mean','Upper','Lower']].plot(figsize=(16,6))" | ||
|  |    ] | ||
|  |   }, | ||
|  |   { | ||
|  |    "cell_type": "markdown", | ||
|  |    "metadata": {}, | ||
|  |    "source": [ | ||
|  |     "Pour les opérations d'expansion, il n'est pas très utile de visualiser cela par rapport aux données quotidiennes, mais c'est plutôt un bon moyen d'avoir une idée de la \"stabilité\" d'un titre. Cette idée de stabilité et de volatilité est quelque chose que nous allons explorer en profondeur dans le prochain projet, alors c'est parti !" | ||
|  |    ] | ||
|  |   } | ||
|  |  ], | ||
|  |  "metadata": { | ||
|  |   "anaconda-cloud": {}, | ||
|  |   "kernelspec": { | ||
|  |    "name": "python3", | ||
|  |    "display_name": "Python 3.7.9 64-bit ('pyfinance': conda)", | ||
|  |    "metadata": { | ||
|  |     "interpreter": { | ||
|  |      "hash": "e89404a230d8800c54ad520c7b67d1bd9bb833a07b37dd3e521a178a3dc34904" | ||
|  |     } | ||
|  |    } | ||
|  |   }, | ||
|  |   "language_info": { | ||
|  |    "codemirror_mode": { | ||
|  |     "name": "ipython", | ||
|  |     "version": 3 | ||
|  |    }, | ||
|  |    "file_extension": ".py", | ||
|  |    "mimetype": "text/x-python", | ||
|  |    "name": "python", | ||
|  |    "nbconvert_exporter": "python", | ||
|  |    "pygments_lexer": "ipython3", | ||
|  |    "version": "3.7.9-final" | ||
|  |   } | ||
|  |  }, | ||
|  |  "nbformat": 4, | ||
|  |  "nbformat_minor": 1 | ||
|  | } |