diff --git a/module3/exo3/exercice.ipynb b/module3/exo3/exercice.ipynb index 0bbbe371b01e359e381e43239412d77bf53fb1fb..2ad3b5665e66057d2431519b8e7169dcef464741 100644 --- a/module3/exo3/exercice.ipynb +++ b/module3/exo3/exercice.ipynb @@ -1,25 +1,560 @@ { - "cells": [], + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Subject 2: Purchasing power of English workers from the 16th to the 19th century" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import numpy as np\n", + "import isoweek" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "William Playfair was one of the pioneers of the graphical presentation of data, being credited in particular with the invention of the histogram. One of his famous graphs, taken from his book \"A Letter on Our Agricultural Distresses, Their Causes and Remedies\", shows the evolution of the wheat price and average salaries from 1565 to 1821. First, we will replicate his famous graph and then present alternative versions of the graph to improve the readability." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting the original graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The data used by Playfair are available on [github](https://vincentarelbundock.github.io/Rdatasets/doc/HistData/Wheat.html) in a csv format using the url:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "data_url = 'https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Wheat.csv'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We load the data are remove the first column that is unecessary. The array is made of three columns : the year, the wheat price (in Shilling/quarter) and the wages (in Shilling/week)." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
YearWheatWages
0156541.05.00
1157045.05.05
2157542.05.08
3158049.05.12
4158541.55.15
5159047.05.25
6159564.05.54
7160027.05.61
8160533.05.69
9161032.05.78
10161533.05.94
11162035.06.01
12162533.06.12
13163045.06.22
14163533.06.30
15164039.06.37
16164553.06.45
17165042.06.50
18165540.56.60
19166046.56.75
20166532.06.80
21167037.06.90
22167543.07.00
23168035.07.30
24168527.07.60
25169040.08.00
26169550.08.50
27170030.09.00
28170532.010.00
29171044.011.00
30171533.011.75
31172029.012.50
32172539.013.00
33173026.013.30
34173532.013.60
35174027.014.00
36174527.514.50
37175031.015.00
38175535.515.70
39176031.016.50
40176543.017.60
41177047.018.50
42177544.019.50
43178046.021.00
44178542.023.00
45179047.525.50
46179576.027.50
47180079.028.50
48180581.029.50
49181099.030.00
50181578.0NaN
51182054.0NaN
52182154.0NaN
\n", + "
" + ], + "text/plain": [ + " Year Wheat Wages\n", + "0 1565 41.0 5.00\n", + "1 1570 45.0 5.05\n", + "2 1575 42.0 5.08\n", + "3 1580 49.0 5.12\n", + "4 1585 41.5 5.15\n", + "5 1590 47.0 5.25\n", + "6 1595 64.0 5.54\n", + "7 1600 27.0 5.61\n", + "8 1605 33.0 5.69\n", + "9 1610 32.0 5.78\n", + "10 1615 33.0 5.94\n", + "11 1620 35.0 6.01\n", + "12 1625 33.0 6.12\n", + "13 1630 45.0 6.22\n", + "14 1635 33.0 6.30\n", + "15 1640 39.0 6.37\n", + "16 1645 53.0 6.45\n", + "17 1650 42.0 6.50\n", + "18 1655 40.5 6.60\n", + "19 1660 46.5 6.75\n", + "20 1665 32.0 6.80\n", + "21 1670 37.0 6.90\n", + "22 1675 43.0 7.00\n", + "23 1680 35.0 7.30\n", + "24 1685 27.0 7.60\n", + "25 1690 40.0 8.00\n", + "26 1695 50.0 8.50\n", + "27 1700 30.0 9.00\n", + "28 1705 32.0 10.00\n", + "29 1710 44.0 11.00\n", + "30 1715 33.0 11.75\n", + "31 1720 29.0 12.50\n", + "32 1725 39.0 13.00\n", + "33 1730 26.0 13.30\n", + "34 1735 32.0 13.60\n", + "35 1740 27.0 14.00\n", + "36 1745 27.5 14.50\n", + "37 1750 31.0 15.00\n", + "38 1755 35.5 15.70\n", + "39 1760 31.0 16.50\n", + "40 1765 43.0 17.60\n", + "41 1770 47.0 18.50\n", + "42 1775 44.0 19.50\n", + "43 1780 46.0 21.00\n", + "44 1785 42.0 23.00\n", + "45 1790 47.5 25.50\n", + "46 1795 76.0 27.50\n", + "47 1800 79.0 28.50\n", + "48 1805 81.0 29.50\n", + "49 1810 99.0 30.00\n", + "50 1815 78.0 NaN\n", + "51 1820 54.0 NaN\n", + "52 1821 54.0 NaN" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_data = pd.read_csv(data_url)\n", + "data = raw_data.copy()\n", + "data.pop('Unnamed: 0')\n", + "data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We sort by increasing years and verify that the gap between two points is not more than 5 years:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hidePrompt": true + }, + "outputs": [], + "source": [ + "sorted_data = data.set_index('period').sort_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "`bins` must increase monotonically, when an array", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Year'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Wages'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0max2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtwinx\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Year'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Wheat'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, normed, hold, data, **kwargs)\u001b[0m\n\u001b[1;32m 3135\u001b[0m \u001b[0mhisttype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mhisttype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malign\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0malign\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morientation\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morientation\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3136\u001b[0m \u001b[0mrwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlog\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3137\u001b[0;31m stacked=stacked, normed=normed, data=data, **kwargs)\n\u001b[0m\u001b[1;32m 3138\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3139\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hold\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwashold\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1865\u001b[0m \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1866\u001b[0m RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1867\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\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 1868\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1869\u001b[0m inner.__doc__ = _add_data_doc(inner.__doc__,\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 6637\u001b[0m \u001b[0;31m# this will automatically overwrite bins,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6638\u001b[0m \u001b[0;31m# so that each histogram uses the same bins\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6639\u001b[0;31m \u001b[0mm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbins\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistogram\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mhist_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6640\u001b[0m \u001b[0mm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# causes problems later if it's an int\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6641\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmlast\u001b[0m \u001b[0;32mis\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/numpy/lib/histograms.py\u001b[0m in \u001b[0;36mhistogram\u001b[0;34m(a, bins, range, normed, weights, density)\u001b[0m\n\u001b[1;32m 700\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_ravel_and_check_weights\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 701\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 702\u001b[0;31m \u001b[0mbin_edges\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muniform_bins\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_get_bin_edges\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 703\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 704\u001b[0m \u001b[0;31m# Histogram is an integer or a float array depending on the weights.\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/numpy/lib/histograms.py\u001b[0m in \u001b[0;36m_get_bin_edges\u001b[0;34m(a, bins, range, weights)\u001b[0m\n\u001b[1;32m 359\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0many\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbin_edges\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mbin_edges\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 360\u001b[0m raise ValueError(\n\u001b[0;32m--> 361\u001b[0;31m '`bins` must increase monotonically, when an array')\n\u001b[0m\u001b[1;32m 362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 363\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: `bins` must increase monotonically, when an array" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "ax1 = plt.gca()\n", + "plt.plot(data['Year'], data['Wages'])\n", + "ax2 = ax1.twinx()\n", + "plt.hist(data['Year'], data['Wheat'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" - }, - "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.6.3" } }, "nbformat": 4, "nbformat_minor": 2 } -