Last active
March 11, 2018 17:43
-
-
Save vitorbaptista/481ce78539b02ff34f448966e18a52d8 to your computer and use it in GitHub Desktop.
OpenBelgium 2018 presentation on using Frictionless Data tools to package and validate data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Created by https://www.gitignore.io/api/python | |
### Python ### | |
# Byte-compiled / optimized / DLL files | |
__pycache__/ | |
*.py[cod] | |
*$py.class | |
# C extensions | |
*.so | |
# Distribution / packaging | |
.Python | |
build/ | |
develop-eggs/ | |
dist/ | |
downloads/ | |
eggs/ | |
.eggs/ | |
lib/ | |
lib64/ | |
parts/ | |
sdist/ | |
var/ | |
wheels/ | |
*.egg-info/ | |
.installed.cfg | |
*.egg | |
# PyInstaller | |
# Usually these files are written by a python script from a template | |
# before PyInstaller builds the exe, so as to inject date/other infos into it. | |
*.manifest | |
*.spec | |
# Installer logs | |
pip-log.txt | |
pip-delete-this-directory.txt | |
# Unit test / coverage reports | |
htmlcov/ | |
.tox/ | |
.coverage | |
.coverage.* | |
.cache | |
.pytest_cache/ | |
nosetests.xml | |
coverage.xml | |
*.cover | |
.hypothesis/ | |
# Translations | |
*.mo | |
*.pot | |
# Flask stuff: | |
instance/ | |
.webassets-cache | |
# Scrapy stuff: | |
.scrapy | |
# Sphinx documentation | |
docs/_build/ | |
# PyBuilder | |
target/ | |
# Jupyter Notebook | |
.ipynb_checkpoints | |
# pyenv | |
.python-version | |
# celery beat schedule file | |
celerybeat-schedule.* | |
# SageMath parsed files | |
*.sage.py | |
# Environments | |
.env | |
.venv | |
env/ | |
venv/ | |
ENV/ | |
env.bak/ | |
venv.bak/ | |
# Spyder project settings | |
.spyderproject | |
.spyproject | |
# Rope project settings | |
.ropeproject | |
# mkdocs documentation | |
/site | |
# mypy | |
.mypy_cache/ | |
# End of https://www.gitignore.io/api/python |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"profile": "tabular-data-package", | |
"resources": [ | |
{ | |
"name": "performance-hotels", | |
"path": "http://opendatastore.brussels/dataset/e083a504-7ce9-4f76-b0b7-0e64b8469c3b/resource/5407e011-09f9-4adf-ad68-c83eba751806/download/hotelsevolclean.csv", | |
"profile": "tabular-data-resource", | |
"encoding": "iso-8859-1", | |
"schema": { | |
"fields": [ | |
{ | |
"name": "Classement", | |
"type": "any", | |
"format": "default" | |
}, | |
{ | |
"name": "Quartier", | |
"type": "string", | |
"format": "default" | |
}, | |
{ | |
"name": "Date", | |
"type": "date", | |
"format": "%d-%m-%y" | |
}, | |
{ | |
"name": "Année", | |
"type": "year", | |
"format": "default" | |
}, | |
{ | |
"name": "Occupancy rate", | |
"type": "number", | |
"format": "default", | |
"decimalChar": "," | |
}, | |
{ | |
"name": "Average Price", | |
"type": "number", | |
"format": "default", | |
"title": "Average price per room", | |
"description": "", | |
"decimalChar": "," | |
}, | |
{ | |
"name": "RevPAR", | |
"type": "number", | |
"format": "default", | |
"title": "Revenue per available room", | |
"decimalChar": "," | |
}, | |
{ | |
"name": "Source", | |
"type": "string", | |
"format": "default" | |
} | |
] | |
}, | |
"title": "Perfomance Hôtelière" | |
} | |
], | |
"keywords": [ | |
"economy", | |
"finance", | |
"hotel" | |
], | |
"name": "hotels-performance", | |
"title": "Hotels Performance", | |
"description": "Données retranscrivant la performance mensuelle du secteur hôtelier en région bruxelloise", | |
"homepage": "http://opendatastore.brussels/dataset/hotels-performance", | |
"license": " Brussels OpenData License", | |
"author": "Corentin Descamps <[email protected]>" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Hotel price analysis\n", | |
"\n", | |
"This is a quick analysis on the price of hotels in Brussels, using data from http://opendatastore.brussels/dataset/hotels-performance/resource/5407e011-09f9-4adf-ad68-c83eba751806" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Requirement already satisfied: datapackage in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages\n", | |
"Requirement already satisfied: numpy in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages\n", | |
"Collecting pandas\n", | |
" Downloading pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl (26.2MB)\n", | |
"\u001b[K 100% |████████████████████████████████| 26.3MB 70kB/s eta 0:00:011\n", | |
"\u001b[?25hRequirement already satisfied: matplotlib in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages\n", | |
"Requirement already satisfied: tableschema<2.0,>=1.0.7 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: tabulator<2.0,>=1.3 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: jsonschema<3.0,>=2.5 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: unicodecsv<2.0,>=0.14 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: jsonpointer<2.0,>=1.10 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: cchardet<2.0,>=1.0 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: six<2.0,>=1.10 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: requests<3.0,>=2.8 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: click<7.0,>=6.7 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from datapackage)\n", | |
"Requirement already satisfied: python-dateutil>=2 in /home/vitor/.local/lib/python3.6/site-packages (from pandas)\n", | |
"Requirement already satisfied: pytz>=2011k in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from pandas)\n", | |
"Requirement already satisfied: cycler>=0.10 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from matplotlib)\n", | |
"Requirement already satisfied: kiwisolver>=1.0.1 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from matplotlib)\n", | |
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from matplotlib)\n", | |
"Requirement already satisfied: isodate<2.0,>=0.5.4 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tableschema<2.0,>=1.0.7->datapackage)\n", | |
"Requirement already satisfied: rfc3986<2.0,>=0.4 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tableschema<2.0,>=1.0.7->datapackage)\n", | |
"Requirement already satisfied: sqlalchemy<2.0,>=0.9.6 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tabulator<2.0,>=1.3->datapackage)\n", | |
"Requirement already satisfied: openpyxl<3.0,>=2.4 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tabulator<2.0,>=1.3->datapackage)\n", | |
"Requirement already satisfied: xlrd<2.0,>=1.0 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tabulator<2.0,>=1.3->datapackage)\n", | |
"Requirement already satisfied: jsonlines<2.0,>=1.1 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tabulator<2.0,>=1.3->datapackage)\n", | |
"Requirement already satisfied: linear-tsv<2.0,>=1.0 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tabulator<2.0,>=1.3->datapackage)\n", | |
"Requirement already satisfied: ijson<3.0,>=2.0 in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from tabulator<2.0,>=1.3->datapackage)\n", | |
"Requirement already satisfied: setuptools in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib)\n", | |
"Requirement already satisfied: jdcal in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from openpyxl<3.0,>=2.4->tabulator<2.0,>=1.3->datapackage)\n", | |
"Requirement already satisfied: et_xmlfile in /home/vitor/.pyenv/versions/3.6.3/lib/python3.6/site-packages (from openpyxl<3.0,>=2.4->tabulator<2.0,>=1.3->datapackage)\n", | |
"Installing collected packages: pandas\n", | |
"Successfully installed pandas-0.22.0\n" | |
] | |
} | |
], | |
"source": [ | |
"import sys\n", | |
"!{sys.executable} -m pip install datapackage numpy pandas matplotlib" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Loading the data\n", | |
"\n", | |
"As we have the data in a data package, we can load it directly using the `datapackage` library. This library loads, parses the data, and validates it, so the resulting `data` array contains the data ready to be analyzed.\n", | |
"\n", | |
"The data itself is coming directly from the data portal, so we always have the most updated dataset." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 87, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"There are 638 rows.\n", | |
"{'Année': 2013,\n", | |
" 'Average Price': Decimal('81.20416129'),\n", | |
" 'Classement': '3 stars',\n", | |
" 'Date': datetime.date(2013, 1, 1),\n", | |
" 'Occupancy rate': Decimal('0.611553068'),\n", | |
" 'Quartier': 'All',\n", | |
" 'RevPAR': Decimal('49.66065393'),\n", | |
" 'Source': 'Mkg'}\n" | |
] | |
} | |
], | |
"source": [ | |
"import datapackage\n", | |
"import pprint\n", | |
"dp = datapackage.Package('datapackage.json')\n", | |
"data = dp.resources[0].read(keyed=True)\n", | |
"print('There are %d rows.' % len(data))\n", | |
"pprint.pprint(data[0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"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>Année</th>\n", | |
" <th>Average Price</th>\n", | |
" <th>Classement</th>\n", | |
" <th>Date</th>\n", | |
" <th>Occupancy rate</th>\n", | |
" <th>Quartier</th>\n", | |
" <th>RevPAR</th>\n", | |
" <th>Source</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2013</td>\n", | |
" <td>81.20416129</td>\n", | |
" <td>3 stars</td>\n", | |
" <td>2013-01-01</td>\n", | |
" <td>0.611553068</td>\n", | |
" <td>All</td>\n", | |
" <td>49.66065393</td>\n", | |
" <td>Mkg</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2013</td>\n", | |
" <td>111.0309761</td>\n", | |
" <td>4 stars</td>\n", | |
" <td>2013-01-01</td>\n", | |
" <td>0.559014092</td>\n", | |
" <td>All</td>\n", | |
" <td>62.06788035</td>\n", | |
" <td>Mkg</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2013</td>\n", | |
" <td>154.448997</td>\n", | |
" <td>5 stars</td>\n", | |
" <td>2013-01-01</td>\n", | |
" <td>0.560899356</td>\n", | |
" <td>All</td>\n", | |
" <td>86.63034297</td>\n", | |
" <td>Mkg</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2013</td>\n", | |
" <td>105.2894972</td>\n", | |
" <td>All</td>\n", | |
" <td>2013-01-01</td>\n", | |
" <td>0.57902577</td>\n", | |
" <td>All</td>\n", | |
" <td>60.96533217</td>\n", | |
" <td>Mkg</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2013</td>\n", | |
" <td>98.81193134</td>\n", | |
" <td>All</td>\n", | |
" <td>2013-01-01</td>\n", | |
" <td>0.537395051</td>\n", | |
" <td>Autour du Ring</td>\n", | |
" <td>53.10104286</td>\n", | |
" <td>Mkg</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Année Average Price Classement Date Occupancy rate Quartier \\\n", | |
"0 2013 81.20416129 3 stars 2013-01-01 0.611553068 All \n", | |
"1 2013 111.0309761 4 stars 2013-01-01 0.559014092 All \n", | |
"2 2013 154.448997 5 stars 2013-01-01 0.560899356 All \n", | |
"3 2013 105.2894972 All 2013-01-01 0.57902577 All \n", | |
"4 2013 98.81193134 All 2013-01-01 0.537395051 Autour du Ring \n", | |
"\n", | |
" RevPAR Source \n", | |
"0 49.66065393 Mkg \n", | |
"1 62.06788035 Mkg \n", | |
"2 86.63034297 Mkg \n", | |
"3 60.96533217 Mkg \n", | |
"4 53.10104286 Mkg " | |
] | |
}, | |
"execution_count": 14, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"df = pd.DataFrame(data)\n", | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Analysis\n", | |
"\n", | |
"The first analysis is the histogram of prices for each different hotel rating (3, 4 and 5 stars). As we expected, the more stars, the higher the price." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 88, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEQCAYAAACqduMIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvFvnyVgAAGYVJREFUeJzt3X+wX3V95/Hni4Cphl+KSEsAE0iUhjplJaKdrdpKlVi6xu1CCVtn0aXN2srO2u6qsJ3xB7so6bS6dgfGxoEuRWtgwWWzBaWtFJ1agST+GoNGLwiSCEgSCEb5FXjvH+cgN5dzud+b++P7/XKfj5nv3PM953PO/Xzyvbmv+znnfD4nVYUkSWPt1+8KSJIGkwEhSepkQEiSOhkQkqROBoQkqZMBIUnqZEBIkjoZEJpzknwqyT1JHkry3SS/t4/HqSRLprt+0qCIA+U01yQ5ARipqkeTHA/cBJxWVZsmeZwCllbVyD7UITT//56c7L7SbLEHoTmnqjZX1aNPvW1fx3WVTbIkyReT7EqyPcmV7fovtUW+kWR3kjOTvDDJ3ya5P8kD7fJRo451U5ILk3wZ+ClwbJK3J7kjyY+TfD/J785cy6XJsQehOSnJJcDbgecDXwNeV1W7O8p9BvgW8BHgecDyqvqndttePYgkhwG/BnwOmAdcBhxQVW9tt98EHAu8GdgCLADuBl5VVVuS/ALwoqraPDOtlibHHoTmpKr6Q+Ag4LXAZ4FHxyn6OPBS4MiqeuSpcBjnmDuq6pqq+mlV/Ri4EHj9mGL/q+3B7AH2AE8Cv5Tk+VV1j+GgQWJAaM6qqifaX/hHAX8wTrH3AgFuTbI5yb8f73hJXpDkL5PcleQh4EvAoUnmjSp296jv/xPgTOCdwD1JrmuviUgDwYCQYH/GuQZRVfdW1e9X1ZHAfwAueZY7l/4z8HLg1VV1MPC6dn1GH3LM8W+oqjcCvwB8B/jkvjdDml4GhOaUJC9JsirJgUnmJTkVOAv4wjjlzxh1ofkBml/wT915dB/NNYWnHAQ8DDyY5EXAByaoyxFJViZZQHOKa/eoY0t9Z0Borima00lbaX7h/xnw7qpaP075VwG3JNkNrAf+U1Xd0W77IHB5kgeT/A7wP2guem8HbgY+P0Fd9gP+GPghsJPmesV4p7qkWeddTJKkTvYgJEmdegqIJCuSbEkykuS8ju3zk1zZbr8lyaJ2/aIkDyf5evv6xPRWX5I0U/afqEB7i97FwBtpzttuSLK+qm4bVewc4IGqWpJkFbCG5vY9gNur6sRprrckaYb10oM4mWbemjuq6jFgHbByTJmVwOXt8tXAKe1cM5KkIdVLQCxk1OAeml7EwvHKtCNEdwGHtdsWJ/laO5/Na6dYX0nSLJnwFNMU3QMcU1U7kpwEXJvkhKp6aHShJKuB1QALFiw46fjjHUwqSTNl06ZN26vq8InK9RIQ24CjR70/ql3XVWZrkv2BQ4Ad1dxD+yhAVW1KcjvwMmDj6J2rai2wFmD58uW1ceNemyVJ0yjJXb2U6yUgNgBLkyymCYJVwL8dU2Y9cDbwFeB04MaqqiSHAzur6okkxwJLgTvQrFt03nWTKn/nRafNUE0kDYsJA6Kq9iQ5F7iBdgrjqtqc5AJgYzsC9VLgiiQjNCNCV7W7vw64IMnjNFMIvLOqds5EQyRJ06unaxBVdT1w/Zh17x+1/AhwRsd+1wDXTLGOkqQ+cCS1JKmTASFJ6mRASJI6GRCSpE4GhCSpkwEhSepkQEiSOhkQkqROBoQkqZMBIUnqZEBIkjoZEJKkTgaEJKnTTD9RTkPK50dIsgchSepkQEiSOhkQkqROXoMYYpO9TiBJk2EPQpLUyYCQJHUyICRJnbwGMUCG+ZqC4yak5x57EJKkTgaEJKmTASFJ6mRASJI6GRCSpE4GhCSpkwEhSeo058dBTOb+fe/dlzSX2IOQJHUyICRJnQwISVKnOX8NQv3htR9p8NmDkCR1MiAkSZ0MCElSJ69BTILPPJA0l9iDkCR1MiAkSZ0MCElSp+fcNYhhfq6zJA0SexCSpE4GhCSpkwEhSerUU0AkWZFkS5KRJOd1bJ+f5Mp2+y1JFo3adn67fkuSU6ev6pKkmTRhQCSZB1wMvBlYBpyVZNmYYucAD1TVEuBjwJp232XAKuAEYAVwSXs8SdKA66UHcTIwUlV3VNVjwDpg5ZgyK4HL2+WrgVOSpF2/rqoerarvAyPt8SRJA66XgFgI3D3q/dZ2XWeZqtoD7AIO63FfSdIAGohxEElWA6vbt7uTbNmHwxwD/GD6ajV1WbNPuw1cO/bRtLVjH/8dp4ufx2CxHdPjpb0U6iUgtgFHj3p/VLuuq8zWJPsDhwA7etyXqloLrO2lwuNJcn9VLZ/KMQaB7RgstmOw2I7Z1csppg3A0iSLkzyP5qLz+jFl1gNnt8unAzdWVbXrV7V3OS0GlgK3Tk/Vn+HBGTrubLMdg8V2DBbbMYsm7EFU1Z4k5wI3APOAy6pqc5ILgI1VtR64FLgiyQiwkyZEaMtdBdwG7AHeVVVPzFBbds3QcWeb7RgstmOw2I5Z1NM1iKq6Hrh+zLr3j1p+BDhjnH0vBC6cQh17NaVTVAPEdgwW2zFYbMcsSnMmSJKkvTnVhiSpkwEhSepkQEiSOhkQkqROBoQkqZMBIUnqZEBozkqyNMkjST61D/suSlLt1DLSc5IBobnsYpqpZGadwaJhYEBoTkqyimY+nC9MUO7kJBuTPJTkviQfbTd9qf36YJLdSX4lyXFJbkyyI8n2JJ9OcuioY92Z5H1Jvgn8JMn+7fttSX7cPnXxlBlpsLQPDAjNOUkOBi4A/riH4h8HPl5VBwPHAVe161/Xfj20qg6sqq8AAT4CHAn8Is1Mxh8cc7yzgNOAQ9vjnQu8qqoOAk4F7ty3VknTz26u5qL/BlxaVVubBx8+q8eBJUleXFXbgZvHK1hVIzRPTQS4v+1tfGBMsb+oqrsBkjwBzAeWtdM/3zn5pkgzxx6E5pQkJwK/QfPs9F6cA7wM+E6SDUl+61mOfUSSde0po4eATwEvHlPsZ09YbAPl3TS9jB+1+x7Ze2ukmWVAaK75NWAR8IMk9wL/Bfg3Sb7aVbiqvldVZwEvAdYAVydZAHTNcvnhdv0r2lNSb6M57bTXIccc/2+q6ldpnvBV7feQBoIBoblmLc25/xPb1yeA62jO/z9DkrclObyqnuTph7w8Cdzffj12VPGDgN3AriQLgfc8W0WSvDzJG5LMBx4BHm6PKQ0EA0JzSlX9tKrufepF8wv9kaq6f5xdVgCbk+ymuWC9qqoerqqf0jzn5MtJHkzyGuBDwCtpHgZzHfDZCaozH7gI2A7cS9NLOX+KTZSmjc+DkCR1sgchSerUU0AkWdEO4hlJcl7H9vlJrmy335JkUbt+UZKHk3y9fX1ieqsvSZopE46DSDKPZkqCNwJbgQ1J1lfVbaOKnQM8UFVL2hGqa4Az2223V9WJ01xvSdIM66UHcTIwUlV3VNVjwDpg5ZgyK4HL2+WrgVPSwwgkSdLg6iUgFjJqcA9NL2LheGWqag/NXRyHtdsWJ/laki8mee0U6ytJmiUzPdXGPcAxVbUjyUnAtUlOqKqHRhdKshpYDbBgwYKTjj/++BmuliTNXZs2bdpeVYdPVK6XgNhGM+nYU45q13WV2dpOY3wIsKOae2gfBaiqTUlup5m2YOPonatqLc0AJpYvX14bN+61WZI0jZLc1Uu5Xk4xbQCWJlmc5HnAKmD9mDLrgbPb5dOBG6uqkhzeXuQmybHAUuCOXiomSeqvCXsQVbUnybnADcA84LKq2pzkAmBjVa0HLgWuSDIC7KQJEWimRL4gyeM0Uwi8s6p2zkRDJEnTa+BGUnuKSZJmVpJNVbV8onKOpJYkdTIgJEmdDAhJUicDQpLUyYCQJHUyICRJnQwISVInA0KS1MmAkCR1munZXKVZt+i866Z8jDsvOm0aaiINN3sQkqROBoQkqZMBIUnqZEBIkjp5kVrq4IVuyR6EJGkcBoQkqZMBIUnqZEBIkjoZEJKkTgaEJKmTASFJ6mRASJI6GRCSpE4GhCSpk1NtaGBMx/QWkqaPPQhJUicDQpLUyYCQJHUyICRJnQwISVInA0KS1MmAkCR1chyENEOma1yHjy5Vv9iDkCR1sgfRJ/51KWnQ2YOQJHUyICRJnQwISVInA0KS1MmAkCR18i6mITcdd0NNx51QPstBeu6xByFJ6mQPYh/417Jm06D0EjX32IOQJHXqKSCSrEiyJclIkvM6ts9PcmW7/ZYki0ZtO79dvyXJqdNXdUnSTJowIJLMAy4G3gwsA85KsmxMsXOAB6pqCfAxYE277zJgFXACsAK4pD2eJGnA9dKDOBkYqao7quoxYB2wckyZlcDl7fLVwClJ0q5fV1WPVtX3gZH2eJKkAddLQCwE7h71fmu7rrNMVe0BdgGH9bivJGkADcRdTElWA6vbt7uTbNmHwxwD/GD6atU3s96OrJmRw/p5DJCseW60g+fI50H/2/HSXgr1EhDbgKNHvT+qXddVZmuS/YFDgB097ktVrQXW9lLh8SS5v6qWT+UYg8B2DBbbMVhsx+zq5RTTBmBpksVJnkdz0Xn9mDLrgbPb5dOBG6uq2vWr2rucFgNLgVunp+rP8OAMHXe22Y7BYjsGi+2YRRP2IKpqT5JzgRuAecBlVbU5yQXAxqpaD1wKXJFkBNhJEyK05a4CbgP2AO+qqidmqC27Zui4s812DBbbMVhsxyzq6RpEVV0PXD9m3ftHLT8CnDHOvhcCF06hjr2a0imqAWI7BovtGCy2YxalORMkSdLenGpDktTJgJAkdTIgJEmdDAhJUicDQpLUyYCQJHUyIDTnJLkpySNJdrevSc/9lWRRkmqnlpGekwwIzVXnVtWB7evls/3NDRYNAwNCehZJTk6yMclDSe5L8tF205farw+2vZBfSXJckhuT7EiyPcmnkxw66lh3Jnlfkm8CP0myf/t+W5Ift09dPGXWGymNw5HUmnOS3ETzlMMAW4A/qaqbxin7FeCSqroiyYHAL1XVze1jdb8PHNA+A4UkS4DFNOFxMHAN8NWqene7/U6aSdr+FbCdZsrnfwBeXVU/bI85r6pun/ZGS/vAHoTmovcBx9I8vGot8P+SHDdO2ceBJUleXFW7q+rm8Q5aVSNV9fftExTvBz4KvH5Msb+oqrur6mHgCWA+sCzJAVV1p+GgQWJAaM6pqluq6sftL/LLgS8DvzlO8XOAlwHfSbIhyW+Nd9wkRyRZ154yegj4FPDiMcV+9oTFqhoB3g18EPhRu++R+94yaXoZEBIUzemmZ26o+l5VnQW8BFgDXJ1kQbvPWB9u17+iqg4G3tZx3L32q6q/qapfpXnCV7XfQxoIBoTmlCSHJjk1yc+1F4l/F3gd8Plxyr8tyeFV9SRPP+TlSeD+9uuxo4ofBOwGdiVZCLxngrq8PMkbkswHHgEebo8pDQQDQnPNAcB/p/kFvx34j8Bbq+q745RfAWxOshv4OLCqqh6uqp/SPOfky0keTPIa4EPAK2keBnMd8NkJ6jIfuKitx700vZTzp9I4aTp5F5MkqZM9CElSp54CIsmKdhDPSJLzOrbPT3Jlu/2W9n7up6YjeDjJ19vXJ6a3+pKkmTLhcP8k84CLgTcCW4ENSdZX1W2jip0DPFBVS5KsorkT48x22+1VdeI011uSNMN66UGcDIxU1R1V9RiwDlg5psxK4PJ2+WrglCSdtw1KkoZDLwGxkFGDe2h6EQvHK9NOO7ALOKzdtjjJ15J8Mclrp1hfSdIsmekZJe8BjqmqHUlOAq5NckJVPTS6UJLVwGqABQsWnHT88cfPcLUkae7atGnT9qo6fKJyvQTENuDoUe+Patd1ldnaTmN8CLCjmntoHwWoqk1JbqeZtmDj6J2rai3NnDgsX768Nm7ca7MkaRoluauXcr2cYtoALE2yOMnzgFXA+jFl1gNnt8unAzdWVSU5vL3ITZJjgaXAHb1UTJLUXxP2IKpqT5JzgRuAecBlVbU5yQXAxqpaD1wKXJFkBNhJEyLQTGFwQZLHaaYQeGdV7ZyJhkiSptfAjaT2FJMkzawkm6pq+UTlHEktSepkQEiSOhkQkqROBoQkqZMBIUnqZEBIkjoZEJKkTgaEJKmTASFJ6mRASJI6GRCSpE4GhCSpkwEhSepkQEiSOs30I0clqdOi866b1uPdedFp03o82YOQJI3DgJAkdTIgJEmdDAhJUicDQpLUyYCQJHUyICRJnQwISVInA0KS1MmAkCR1cqoNST2Z7qkxNPjsQUiSOhkQkqROnmKS9Jzg7LDTzx6EJKmTASFJ6mRASJI6GRCSpE4GhCSpkwEhSepkQEiSOhkQkqRODpSTBsh0DvZyoJemyh6EJKmTPQgNNKdP2HfOvqqpsgchSepkQEiSOnmKSXOKp6zUq0E+RTdbP3f2ICRJnexBSFMwyH9lSlPVUw8iyYokW5KMJDmvY/v8JFe2229JsmjUtvPb9VuSnDp9VZckzaQJAyLJPOBi4M3AMuCsJMvGFDsHeKCqlgAfA9a0+y4DVgEnACuAS9rjSZIGXC89iJOBkaq6o6oeA9YBK8eUWQlc3i5fDZySJO36dVX1aFV9HxhpjydJGnC9BMRC4O5R77e26zrLVNUeYBdwWI/7SpIG0EBcpE6yGljdvt2dZMs+HOYY4AfTV6u+sR2DxXYMFtsBZM2Uv/9LeynUS0BsA44e9f6odl1Xma1J9gcOAXb0uC9VtRZY20uFx5Pk/qpaPpVjDALbMVhsx2CxHbOrl1NMG4ClSRYneR7NRef1Y8qsB85ul08Hbqyqatevau9yWgwsBW6dnqo/w4MzdNzZZjsGi+0YLLZjFk3Yg6iqPUnOBW4A5gGXVdXmJBcAG6tqPXApcEWSEWAnTYjQlrsKuA3YA7yrqp6YobbsmqHjzjbbMVhsx2CxHbOop2sQVXU9cP2Yde8ftfwIcMY4+14IXDiFOvZqSqeoBojtGCy2Y7DYjlmU5kyQJEl7cy4mSVInA0KS1MmAkCR1MiAkSZ0GYiT1ZCU5BDgfeCvwEqCAHwH/F7ioqobiHuN2UOE5wL8GjmxXb6Npx6VV9Xi/6rYvkhzB01OpbKuq+/pZn33RziF2MqPaAdxaQ3g3h5/HYBnGz2Mo72JKcgNwI3B5Vd3brvt5msF6p1TVm/pZv14l+QzNgJnLaeapgma0+dnAi6rqzH7VbTKSnAh8gmYE/VMj5Y+iadsfVtVX+1W3yUjyJuAS4Hvs3Y4lNO34u37VbTL8PAbLUH8eVTV0L2DLvmwbtBfw3X3ZNmgv4OvAqzvWvwb4Rr/rN4l2fBtY1LF+MfDtftfPz8PPY7Zfw3oN4q4k7227bEDTfUvyPvaePXbQ7UxyRpKffQ5J9ktyJvBAH+s1WQuq6paxK6vqZmBBH+qzr/bn6Z7caNuAA2a5LlPh5zFYhvbzGMprEMCZwHnAF9uQKOA+mrmffqefFZukVTQPV7o4yVPXTQ4F/rHdNiw+l+Q64K95OqCPBv4d8Pm+1WryLgM2JFnH3u1YRTOdzLB4Ln8ex9D8//fzmAXDeg3i1cB3qmpXkhfQhMUrgc3Ah6tqKOY5aSc/PAv4IfBVmqfu/UuadqytIbpIneTNNA+IGn0xcX0107QMjfYpiG/hme24rX+1mrzn0Ofxi3S3Y9g+j9+k++dqoD+PYQ2IzcAvVzOR4FrgJ8A1wCnt+t/uawV7lOTTNL2459NM3rUA+D807UhVnf0su0s9S/KSqvpRv+sxVUkOq6od/a7HXDGs1yD2q+bJdQDLq+qPquqfqupDwLH9rNgkvaKaO5V+G3gTcEZVXQG8A/gXfa3ZJCQ5JMlFSb6dZGeSHe3yRUkO7Xf9epXk4CQfSXJFkrPGbLukX/WarCQvGvsCbk3ywnZ5KLQ/Py9ul09Kcgdwc5K7kry+z9XrWZJXJfnHJJ9KcnSSv0/yYJINSQb6//mwBsS3kryjXf5GkuUASV4GDM1pGWC/9jTTQcALaG6DA5jPcF2Eu4rmovqvV9WLquow4NdpbuO7qq81m5y/AkLTGz0ryTVJ5rfbXtO/ak3admDTmNdCmtOYG/tYr8k6raq2t8t/BpxZVUuBNwJ/3r9qTdrFwJ8C1wH/DPxlVR1Kc2p8oP/wGNaA+D3g9UluB5YBX2n/uvhku21YXAp8h+Y2uD8B/neST9I8pGldPys2SYuqak21Y1IAqureqrqIHh9tOCCOq6rzquraqnoLzS/UG5Mc1u+KTdJ7gC3AW6pqcVUtBra2y8PUw96/HUwK8Pyq2gBQVd+l+SNqWBxQVZ+rqs8AVVVX0yx8Afi5/lbt2Q3lXUztRei3JzmY5p7o/Wn+Awz8yMTRqupjSa5sl3+Y5K+B3wA+WVUz9eS9mXBXkvfSDFy8D342avTtDNdtx/OT7FdVT0LzLJMk24AvAQf2t2q9q6o/b3+uPpbkbuADNHf6DZtLgOuTXAR8PsnHgc8Cb6D5o2pYPNIO+jsEqCRvrapr29NkM/UAtWkxlBepNViSvJCmu7ySZuoTePq244uqaijGdCT5U+DvquofxqxfAfzP9vTGUEnyFuC/0vTyfr7f9ZmsJL8G/AHwMpo/BO8GrqV5suWeZ9l1YCT5ZZpTTE8Cf0TTnrNp7mT6/ar65z5W71kZEJpRSd5RVX/V73pM1TC3I8nzaU6ffWuY2zGa7ZgdBoRmVJIfVNUx/a7HVNmOwWI7ZsdQXoPQYEnyzfE2AUeMs23g2I7BYjv6z4DQdDgCOJVnzh8Vmtv6hoXtGCy2o88MCE2HvwUOrKpn3FmS5KbZr84+sx2DxXb0mdcgJEmdhnWgnCRphhkQkqROBoQkqZMBIUnqZEBIkjr9f1lu+bXXAWRdAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 3 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"df[df.Classement != 'All'].hist(\n", | |
" column='Average Price',\n", | |
" by='Classement',\n", | |
" sharex=True,\n", | |
" sharey=True,\n", | |
" density=True,\n", | |
" layout=(3, 1)\n", | |
")\n", | |
"\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's see how the price has changed on the years. From the data, it seems that the price range is stabilized after 2013. However, we aren't considering inflation, so these graphs need to be taken with a grain of salt." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 93, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 5 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"df[df.Classement != 'All'].hist(\n", | |
" column='Average Price',\n", | |
" by='Année',\n", | |
" sharex=True,\n", | |
" sharey=True,\n", | |
" density=True,\n", | |
" layout=(5, 1)\n", | |
")\n", | |
"\n", | |
"plt.show()" | |
] | |
} | |
], | |
"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 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment