python-pour-finance/06-Pandas-avec-Time-Series/Ré-échantillonnage du Tem...

478 lines
224 KiB
Plaintext
Raw Normal View History

2023-08-21 15:12:19 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ré-échantillonnage du temps\n",
"\n",
"Apprenons à échantillonner des données de séries temporelles ! Cela sera utile plus tard dans le cours !"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Saisir les données\n",
"# Une alternative plus rapide\n",
"# df = pd.read_csv('time_data/walmart_stock.csv',index_col='Date')\n",
"df = pd.read_csv('time_data/walmart_stock.csv')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Date Open High Low Close Volume Adj Close\n",
"0 2012-01-03 59.970001 61.060001 59.869999 60.330002 12668800 52.619235\n",
"1 2012-01-04 60.209999 60.349998 59.470001 59.709999 9593300 52.078475\n",
"2 2012-01-05 59.349998 59.619999 58.369999 59.419998 12768200 51.825539\n",
"3 2012-01-06 59.419998 59.450001 58.869999 59.000000 8069400 51.459220\n",
"4 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>Date</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 </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>2012-01-03</td>\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>1</th>\n <td>2012-01-04</td>\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>2</th>\n <td>2012-01-05</td>\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>3</th>\n <td>2012-01-06</td>\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>4</th>\n <td>2012-01-09</td>\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": 4
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Créer un index de date à partir de la colonne Date"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"df['Date'] = df['Date'].apply(pd.to_datetime)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Date Open High Low Close Volume Adj Close\n",
"0 2012-01-03 59.970001 61.060001 59.869999 60.330002 12668800 52.619235\n",
"1 2012-01-04 60.209999 60.349998 59.470001 59.709999 9593300 52.078475\n",
"2 2012-01-05 59.349998 59.619999 58.369999 59.419998 12768200 51.825539\n",
"3 2012-01-06 59.419998 59.450001 58.869999 59.000000 8069400 51.459220\n",
"4 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>Date</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 </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>2012-01-03</td>\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>1</th>\n <td>2012-01-04</td>\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>2</th>\n <td>2012-01-05</td>\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>3</th>\n <td>2012-01-06</td>\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>4</th>\n <td>2012-01-09</td>\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": 6
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"df.set_index('Date',inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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": 8
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## resample()\n",
"\n",
"Une opération courante avec les données de séries temporelles est la restructuration basée sur l'indice de série temporelle. Voyons comment utiliser la méthode resample().\n",
"\n",
"#### Toutes les possibilités"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<table border=\"1\" class=\"docutils\">\n",
"<colgroup>\n",
"<col width=\"13%\" />\n",
"<col width=\"87%\" />\n",
"</colgroup>\n",
"<thead valign=\"bottom\">\n",
"<tr class=\"row-odd\"><th class=\"head\">Alias</th>\n",
"<th class=\"head\">Description</th>\n",
"</tr>\n",
"</thead>\n",
"<tbody valign=\"top\">\n",
"<tr class=\"row-even\"><td>B</td>\n",
"<td>business day frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>C</td>\n",
"<td>custom business day frequency (experimental)</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>D</td>\n",
"<td>calendar day frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>W</td>\n",
"<td>weekly frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>M</td>\n",
"<td>month end frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>SM</td>\n",
"<td>semi-month end frequency (15th and end of month)</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>BM</td>\n",
"<td>business month end frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>CBM</td>\n",
"<td>custom business month end frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>MS</td>\n",
"<td>month start frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>SMS</td>\n",
"<td>semi-month start frequency (1st and 15th)</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>BMS</td>\n",
"<td>business month start frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>CBMS</td>\n",
"<td>custom business month start frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>Q</td>\n",
"<td>quarter end frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>BQ</td>\n",
"<td>business quarter endfrequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>QS</td>\n",
"<td>quarter start frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>BQS</td>\n",
"<td>business quarter start frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>A</td>\n",
"<td>year end frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>BA</td>\n",
"<td>business year end frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>AS</td>\n",
"<td>year start frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>BAS</td>\n",
"<td>business year start frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>BH</td>\n",
"<td>business hour frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>H</td>\n",
"<td>hourly frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>T, min</td>\n",
"<td>minutely frequency</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>S</td>\n",
"<td>secondly frequency</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>L, ms</td>\n",
"<td>milliseconds</td>\n",
"</tr>\n",
"<tr class=\"row-odd\"><td>U, us</td>\n",
"<td>microseconds</td>\n",
"</tr>\n",
"<tr class=\"row-even\"><td>N</td>\n",
"<td>nanoseconds</td>\n",
"</tr>\n",
"</tbody>\n",
"</table>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DatetimeIndex(['2012-01-03', '2012-01-04', '2012-01-05', '2012-01-06',\n",
" '2012-01-09', '2012-01-10', '2012-01-11', '2012-01-12',\n",
" '2012-01-13', '2012-01-17',\n",
" ...\n",
" '2016-12-16', '2016-12-19', '2016-12-20', '2016-12-21',\n",
" '2016-12-22', '2016-12-23', '2016-12-27', '2016-12-28',\n",
" '2016-12-29', '2016-12-30'],\n",
" dtype='datetime64[ns]', name='Date', length=1258, freq=None)"
]
},
"metadata": {},
"execution_count": 9
}
],
"source": [
"# Notre index\n",
"df.index"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vous devez appeler **resample** avec le paramètre **rule**, puis vous devez appeler une fonction d'agrégation. En effet, à cause du rééchantillonnage, nous avons besoin d'une règle mathématique pour joindre les lignes entre elles (moyenne, somme, décompte, etc...)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Open High Low Close Volume \\\n",
"Date \n",
"2012-12-31 67.158680 67.602120 66.786520 67.215120 9.239015e+06 \n",
"2013-12-31 75.264048 75.729405 74.843055 75.320516 6.951496e+06 \n",
"2014-12-31 77.274524 77.740040 76.864405 77.327381 6.515612e+06 \n",
"2015-12-31 72.569405 73.064167 72.034802 72.491111 9.040769e+06 \n",
"2016-12-31 69.481349 70.019643 69.023492 69.547063 9.371645e+06 \n",
"\n",
" Adj Close \n",
"Date \n",
"2012-12-31 59.389349 \n",
"2013-12-31 68.147179 \n",
"2014-12-31 71.709712 \n",
"2015-12-31 68.831426 \n",
"2016-12-31 68.054229 "
],
"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-12-31</th>\n <td>67.158680</td>\n <td>67.602120</td>\n <td>66.786520</td>\n <td>67.215120</td>\n <td>9.239015e+06</td>\n <td>59.389349</td>\n </tr>\n <tr>\n <th>2013-12-31</th>\n <td>75.264048</td>\n <td>75.729405</td>\n <td>74.843055</td>\n <td>75.320516</td>\n <td>6.951496e+06</td>\n <td>68.147179</td>\n </tr>\n <tr>\n <th>2014-12-31</th>\n <td>77.274524</td>\n <td>77.740040</td>\n <td>76.864405</td>\n <td>77.327381</td>\n <td>6.515612e+06</td>\n <td>71.709712</td>\n </tr>\n <tr>\n <th>2015-12-31</th>\n <td>72.569405</td>\n <td>73.064167</td>\n <td>72.034802</td>\n <td>72.491111</td>\n <td>9.040769e+06</td>\n <td>68.831426</td>\n </tr>\n <tr>\n <th>2016-12-31</th>\n <td>69.481349</td>\n <td>70.019643</td>\n <td>69.023492</td>\n <td>69.547063</td>\n <td>9.371645e+06</td>\n <td>68.054229</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {},
"execution_count": 10
}
],
"source": [
"# Moyennes annuelles\n",
"df.resample(rule='A').mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ré-échantillonnage personnalisé\n",
"\n",
"Vous pouvez également créer techniquement votre propre fonction de rééchantillonnage personnalisé:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def first_day(entry):\n",
" \"\"\"\n",
" Retourne la première instance de la période, \n",
" quel que soit le taux d'échantillonnage.\n",
" \"\"\"\n",
" return entry[0]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Open High Low Close Volume Adj Close\n",
"Date \n",
"2012-12-31 59.970001 61.060001 59.869999 60.330002 12668800 52.619235\n",
"2013-12-31 68.930000 69.239998 68.449997 69.239998 10390800 61.879708\n",
"2014-12-31 78.720001 79.470001 78.500000 78.910004 6878000 72.254228\n",
"2015-12-31 86.269997 86.720001 85.550003 85.900002 4501800 80.624861\n",
"2016-12-31 60.500000 61.490002 60.360001 61.459999 11989200 59.289713"
],
"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-12-31</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>2013-12-31</th>\n <td>68.930000</td>\n <td>69.239998</td>\n <td>68.449997</td>\n <td>69.239998</td>\n <td>10390800</td>\n <td>61.879708</td>\n </tr>\n <tr>\n <th>2014-12-31</th>\n <td>78.720001</td>\n <td>79.470001</td>\n <td>78.500000</td>\n <td>78.910004</td>\n <td>6878000</td>\n <td>72.254228</td>\n </tr>\n <tr>\n <th>2015-12-31</th>\n <td>86.269997</td>\n <td>86.720001</td>\n <td>85.550003</td>\n <td>85.900002</td>\n <td>4501800</td>\n <td>80.624861</td>\n </tr>\n <tr>\n <th>2016-12-31</th>\n <td>60.500000</td>\n <td>61.490002</td>\n <td>60.360001</td>\n <td>61.459999</td>\n <td>11989200</td>\n <td>59.289713</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {},
"execution_count": 12
}
],
"source": [
"df.resample(rule='A').apply(first_day)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Yearly Mean Close Price for Walmart')"
]
},
"metadata": {},
"execution_count": 13
},
{
"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=\"373.8425pt\" version=\"1.1\" viewBox=\"0 0 368.925 373.8425\" 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-01T21:52:31.538551</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 373.8425 \r\nL 368.925 373.8425 \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 239.758125 \r\nL 361.725 239.758125 \r\nL 361.725 22.318125 \r\nL 26.925 22.318125 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n </g>\r\n <g id=\"patch_3\">\r\n <path clip-path=\"url(#p8dc11a208b)\" d=\"M 43.665 239.758125 \r\nL 77.145 239.758125 \r\nL 77.145 59.753436 \r\nL 43.665 59.753436 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_4\">\r\n <path clip-path=\"url(#p8dc11a208b)\" d=\"M 110.625 239.758125 \r\nL 144.105 239.758125 \r\nL 144.105 38.046872 \r\nL 110.625 38.046872 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_5\">\r\n <path clip-path=\"url(#p8dc11a208b)\" d=\"M 177.585 239.758125 \r\nL 211.065 239.758125 \r\nL 211.065 32.672411 \r\nL 177.585 32.672411 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_6\">\r\n <path clip-path=\"url(#p8dc11a208b)\" d=\"M 244.545 239.758125 \r\nL 278.025 239.758125 \r\nL 278.025 45.624128 \r\nL 244.545 45.624128 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_7\">\r\n <path clip-path=\"url(#p8dc11a208b)\" d=\"M 311.505 239.758125 \r\nL 344.985 239.758125 \r\nL 344.985 53.508401 \r\nL 311.505 53.508401 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\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=\"m80d369d085\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n </defs>\r\n <g>\r\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"60.405\" xlink:href=\"#m80d369d085\" y=\"239.758125\"/>\r\n </g>\r\n </g>\r\n <g id=\"text_1\">\r\n <!-- 2012-12-31 00:00:00 -->\r\n <g transform=\"translate(63.164375 352.964375)rotate(-90)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
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"df['Close'].resample('A').mean().plot(kind='bar')\n",
"plt.title('Yearly Mean Close Price for Walmart')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Monthly Max Opening Price for Walmart')"
]
},
"metadata": {},
"execution_count": 14
},
{
"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=\"482.5625pt\" version=\"1.1\" viewBox=\"0 0 926.925 482.5625\" 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-01T21:52:32.294825</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 482.5625 \r\nL 926.925 482.5625 \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 348.478125 \r\nL 919.725 348.478125 \r\nL 919.725 22.318125 \r\nL 26.925 22.318125 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n </g>\r\n <g id=\"patch_3\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 30.645 348.478125 \r\nL 38.085 348.478125 \r\nL 38.085 137.05913 \r\nL 30.645 137.05913 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_4\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 45.525 348.478125 \r\nL 52.965 348.478125 \r\nL 52.965 135.006508 \r\nL 45.525 135.006508 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_5\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 60.405 348.478125 \r\nL 67.845 348.478125 \r\nL 67.845 138.393324 \r\nL 60.405 138.393324 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_6\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 75.285 348.478125 \r\nL 82.725 348.478125 \r\nL 82.725 136.511767 \r\nL 75.285 136.511767 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_7\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 90.165 348.478125 \r\nL 97.605 348.478125 \r\nL 97.605 124.709233 \r\nL 90.165 124.709233 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_8\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 105.045 348.478125 \r\nL 112.485 348.478125 \r\nL 112.485 112.633041 \r\nL 105.045 112.633041 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_9\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 119.925 348.478125 \r\nL 127.365 348.478125 \r\nL 127.365 92.722708 \r\nL 119.925 92.722708 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_10\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 134.805 348.478125 \r\nL 142.245 348.478125 \r\nL 142.245 92.175359 \r\nL 134.805 92.175359 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_11\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 149.685 348.478125 \r\nL 157.125 348.478125 \r\nL 157.125 92.038514 \r\nL 149.685 92.038514 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_12\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 164.565 348.478125 \r\nL 172.005 348.478125 \r\nL 172.005 83.007027 \r\nL 164.565 83.007027 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_13\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 179.445 348.478125 \r\nL 186.885 348.478125 \r\nL 186.885 91.456948 \r\nL 179.445 91.456948 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r\n <g id=\"patch_14\">\r\n <path clip-path=\"url(#p01b32557c9)\" d=\"M 194.325 348.478125 \r\nL 201.765 348.478125 \r\nL 201.765 101.309474 \r\nL 194.325 101.309474 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n </g>\r
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA54AAAHjCAYAAABLrMDRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAA2FElEQVR4nO3deZhsZ10v+u8v2QlDQggZiEgCGwUEVBBOZNCDgMzI5FUmBYPiBeGgHPRcwOERjoo3chQREZUDYhQRg3gZZDYyqgwhYRBCbhAykUA2kEAYJeQ9f9RqaHr37q7u2quq3u7P53nqSfWq+tb7q3rf2ulfr1WrqrUWAAAAGMshiy4AAACAnU3jCQAAwKg0ngAAAIxK4wkAAMCoNJ4AAACMSuMJAADAqDSeALtYVbWquukBbnt0Vb1z3jX1qKruXFXnLrqOJKmqD1fVXQ/yY55QVW+vqiur6g8O5mPPqqreWlU/v+g6ANiYxhNgCVTV+VX1n1V13Jrt7x+aw70HYYy5/YI+1Pzpqtqzatueqrqsqkb5AumqOrqq/rSqPlVVX66qD1XVz44x1lqttXe01r5njMce5u2rVfXFqvpMVf1DVd1gg1q+t7X21oNcxmOTfCbJUa21X5nlgYZ18MWquv2qbT89rJm12z46y1gHW1XtHercs/m9AVhN4wmwPD6R5BErP1TV9ye51uLKmdkVSe676uf7Jbl8jIGq6vAk/5TkxknulOS6Sf6fJKdW1S+PMeacPbG1dmSSmyc5Oskfrr3DyM3QjZN8pLW25T8arK2rtXZVkn9LcpdVm38kyUfX2fb2rZc6Ds0mwGw0ngDL46+T/Myqn09J8ler71BV162qv6qqfVV1QVX9RlUdMtz26Kp6Z1X9flVdXlWfqKr7Drc9M8mdkzxv2Nv0vFUPe4+qOm/I/ElV1drChu1/sGbba6rqv2/h+fzMOs/nZ6vqnOEQzo9X1eNW3fbUqnrXyi/8VfX44TDSa64z1qOS3CjJQ1prn2itfb219oYkv5Tkt6rqqOExzq+qX62qjwzP98WrH6+q7j/sZb6iqv61qm696rbzq+p/VNUHq+rzVfV3K9mqumtVXTzNfYfbn1JVl1bVJVX18xsd8rxaa+1zSV6R5PtWjfPUqvpgki8NexPPr6p7DLcfWlW/VlX/MbzG76uqk4bbblFVb66qz1XVuVX10PXGrKq/zGQtPmVYO/eoqmtU1XOG+i8Zrl9j9Wsx1PWpJC9e52HfnkljueLOSX5vnW1vr6rrVdU/Dmv+8uH6iQeo9dFV9S9V9YfDHH68qn5o2H5RTfa4n7Lq/j9WVWdX1ReG25+x6raVvZuPqaoLk/xzvtUIXzG8Fndarw4A9qfxBFge70pyVFXdsqoOTfKwJC9Zc58/zmRv3ndlsnfoZ5KsPpz0DknOTXJckmcleVFVVWvt15O8I8Oes9baE1dl7p/kB5PcJslDk9x7ndpOS/KIVU3ucUnunuRvN3g+r0zyIzU5BPboTBqJV625z2XD+EcNz+MPq+p2w23/K8l/JvmNqrpZkt9N8sjW2lfXGeueSV7fWvvSmu2vSHLNTPaCrvjp4Tl+dyZ7EH9jeE63S/IXSR6X5Ngkf57k1SsN1eChSe6T5CZJbp3k0Rs8/3XvW1X3SfLLSe6R5Kb59r18Gxpe959IcvaqzY9I8mNJjh72Jq72y8Pt98vkNf65JF+uqiOSvDnJS5Ncf7jP86vqe9eO2Vp7dJK/SfKsYe38U5JfT3LHJD+Qybq5fYbXcfAdSY7JZE/pY9d5Km9P8sNVdcjwnI5IcnqS26/adovhfodk0rzeOJM/LnwlyfPWecwVd0jywUzm8KVJXpbJ+r5pkkdm8seXI4f7fimT99DRmbyGj6+qB695vLskuWUma2alMT56eC3+bYM6AFhF4wmwXFb2Et4zk0MPP7lyw6pm9Fdba1e21s5P8geZ7O1bcUFr7X+31r6RSbN4gyQnbDLmqa21K1prFyZ5SybNxLdprb0nyeczaTaT5OFJ3tpa+/QGj/vVJK8Zan54klcP21Y/7mtba//RJt6W5E2ZNKhprV09vBa/NGSf1Vpb3XCtdlySS9ep+6pMPpu4+rOzz2utXTTsPXxmvnV48/+d5M9ba+9urX2jtXZakq9l0mCteG5r7ZIh+5qs81pNcd+HJnlxa+3DrbUvJ/mfGzzGNx+rqq5I8oHhea4+fPi5w/P5yjq5n0/yG621c4fX+AOttc9m0uyf31p7cWvtqtbaWZk06T85RS3JpHn/rdbaZa21fcNzWL0Or07y9Nba1w5Q17uTXDvJ92cy3+8cXotPrNp2QWvtwtbaZ1trr2itfbm1dmUmc7ZRs/6J4Xl9I8nfJTlpqPVrrbU3ZfLHjJsmSWvtra21D7XWrm6tfTCTP6SsfexntNa+dIDnAcCUfF4BYLn8dSZ7eW6SNYelZtI8HZ7kglXbLkhyw1U/f2rlSmvtyzU5avbIbOxTq65/eYP7n5bJHqM3D//9o00eN5k8h/83SSV56toba3Io8NMz2fN4SCbNyIdWPYfzq+otmeyx+5MNxvlMJk322sffk8nr9plVmy9adf2CJN85XL9xklOq6hdX3X74qtuT/V+r1betdaD7fmeSMw9Qz4H8UmvthQe4baP8SUn+Y53tN05yh6GZXbEnk/U3je/M/utw9Wux7wB7ppMkrbWvVtV7MtmD+F2Z7I1Pkneu2vb2JKmqa2fymdb7JLnecL/rVNWhQ3O51uo/hnxlGG/ttiOHx75DklMzOXT58CTXSPLyNY83zfwAsAl7PAGWSGvtgkz2+twvyT+sufkzSb6eSdOw4kZZtVd0s4efsbyXJHlQVd0mk0MPXzlF5h351l7Xb/tqluEQ1lck+f0kJ7TWjk7yukya1JX73C+Tw2TPyOTQ2wP5pyT3HQ4hXe0nMtlr+a5V205adf1GSS4Zrl+U5JmttaNXXa7dWtvocOLtuDTJ6s8onnSgO05po3m9KJNDitfb/rY1z/XI1trjpxzzkuy/Di9Z9fM0a23lc553zrcaz3es2rbyecpfSfI9Se7QWjsq3zrcdb/PIm/DSzPZm35Sa+26Sf5sncdtB7gOwBZoPAGWz2OS/OjazysOe3dOT/LMqrpOVd04k0Mu134O9EA+ncmepG1prV2c5L2Z7BV7xTSHHg5nQX1Akgeuc0bUlT1M+5JcNez9vNfKjcPn/F6UyeGipyR5wNCIruevk1yc5OXDSWEOq6p7J3luJodKfn7Vff9bVZ1YVcck+bVMDsdMkv+d5Beq6g41ccRw8pnrbPY8t+j0JD87fJb32kl+8yA//movTPLbVXWz4TnduqqOTfKPSW5eVY8aXqvDquoHq+qWUz7u32by2dvjh3n6zUy/Dle8PcndMmm8PzJse2eSu2ZyWPJK43mdTPZSXjHM2dO3OM5GrpPkc8Me2Nsn+alN7r8vk8OIt/0+AtitNJ4AS2b4zOOZB7j5FzM5IcrHM/kl/aWZnBBnGn+U5CeHM4M+d5vlnZbJZ/CmPSQzw2cZP7zO9isz+fzm6Zl8zcpPZbL3acULkryqtfa64XOJj0nywqFxWvtYX8vkZD0XZfL5wS8keXaSX2+trd1T+tJMPkv68eHyO8NjnJnJ5zyfN9TzsWx88qBtaa29PpOG+C3DGCsnqPnawR4rk9fg9Eye7xcyaeSvNbz298rks7eXZHJY8O9l8oeAafxOJocLfzCTQ6PPGrZtxb9mcqKsd6/8UWKY531JLmutnTfc7zmZfK3QZzLZc/2GLY6zkSdkctbjKzNpnk/f6M7D51CfmeRfhrPm3nGj+wPwLbX/H6ABYH1V9SOZ7NnaO5z8pytVdX6Snx/OzLoUhr2M/57kGuuclRYAdgR7PAGYSlUdluRJSV7YY9O5TKrqx6vq8Kq6XiZ7Gl+j6QRgJ9N4ArCpYa/cFZmcKOg5Cy1mZ3hcJoeU/keSbySZ9qQ+ANAlh9oCAAAwKns8AQAAGJXGEwAAgFHtmedgxx13XNu7d+88hwQAAGBO3ve+932mtXb82u1zbTz37t2bM8880FfTAQAA0LOqumC97Q61BQA
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"df['Open'].resample('M').max().plot(kind='bar',figsize=(16,6))\n",
"plt.title('Monthly Max Opening Price for Walmart')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Voilà! Prochain notebook, nous apprendrons les décalages de temps !"
]
}
],
"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
}