Skip to content

Instantly share code, notes, and snippets.

@yosukehara
Created December 3, 2018 13:19
Show Gist options
  • Save yosukehara/4e42d399b869746f028fe6f456051576 to your computer and use it in GitHub Desktop.
Save yosukehara/4e42d399b869746f028fe6f456051576 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Chapter 1 – The Machine Learning landscape**\n",
"\n",
"_This is the code used to generate some of the figures in chapter 1._"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Setup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, let's make sure this notebook works well in both python 2 and 3, import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"# To support both python 2 and python 3\n",
"from __future__ import division, print_function, unicode_literals\n",
"\n",
"# Common imports\n",
"import numpy as np\n",
"import os\n",
"\n",
"# to make this notebook's output stable across runs\n",
"np.random.seed(42)\n",
"\n",
"# To plot pretty figures\n",
"%matplotlib inline\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['axes.labelsize'] = 14\n",
"plt.rcParams['xtick.labelsize'] = 12\n",
"plt.rcParams['ytick.labelsize'] = 12\n",
"\n",
"# Where to save the figures\n",
"PROJECT_ROOT_DIR = \".\"\n",
"CHAPTER_ID = \"fundamentals\"\n",
"\n",
"def save_fig(fig_id, tight_layout=True):\n",
" path = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID, fig_id + \".png\")\n",
" print(\"Saving figure\", fig_id)\n",
" if tight_layout:\n",
" plt.tight_layout()\n",
" plt.savefig(path, format='png', dpi=300)\n",
"\n",
"# Ignore useless warnings (see SciPy issue #5998)\n",
"import warnings\n",
"warnings.filterwarnings(action=\"ignore\", module=\"scipy\", message=\"^internal gelsd\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Code example 1-1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This function just merges the OECD's life satisfaction data and the IMF's GDP per capita data. It's a bit too long and boring and it's not specific to Machine Learning, which is why I left it out of the book."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def prepare_country_stats(oecd_bli, gdp_per_capita):\n",
" oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n",
" oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n",
" gdp_per_capita.rename(columns={\"2015\": \"GDP per capita\"}, inplace=True)\n",
" gdp_per_capita.set_index(\"Country\", inplace=True)\n",
" full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita,\n",
" left_index=True, right_index=True)\n",
" full_country_stats.sort_values(by=\"GDP per capita\", inplace=True)\n",
" remove_indices = [0, 1, 6, 8, 33, 34, 35]\n",
" keep_indices = list(set(range(36)) - set(remove_indices))\n",
" return full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[keep_indices]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The code in the book expects the data files to be located in the current directory. I just tweaked it here to fetch the files in datasets/lifesat."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"datapath = os.path.join(\"datasets\", \"lifesat\", \"\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAERCAYAAABowZDXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XucHGW95/HPd8g4iQxISCJiYowaAYkmQccroAgqosccjmGPXPYI6yp4QV05SM4u8hJBRaLiKp7jWfaAQfGGBsW7rhfkjk6QREFAkFsQwjAnQEaTYcj89o+qNpVOd09Npi/V3d/361Uv6vJU168eOv2bqnrqeRQRmJmZTaSn1QGYmVl7cMIwM7NcnDDMzCwXJwwzM8vFCcPMzHJxwjAzs1ycMMzMLBcnDDMzy8UJw8zMcpnW6gDqafbs2bFgwYJWh2Fm1lbWrFnzcETMmahcRyWMBQsWMDg42OowzMzaiqR78pTzLSkzM8vFCcPMzHJxwjAzs1ycMMzMLBcnDDMzy6VpCUPSSNm0VdL5VcqekG7Plj+kWbGamdmOmtasNiL6S/OSdgU2AN+ssct1EXFQwwMzM5uC4ZFR1m/czLyZM5jV37fTZdpBq97DOAp4CLiqRcc3M5uyy2+6nxWr19Hb08PY+Dgrly9m2dK5ky7TLlr1DON44EtRe0DxAyQ9LOl2SWdI6qiXDM2svQ2PjLJi9Tq2jI2zafQJtoyNc9rqdQyPjE6qTDtpesKQNB94FXBxjWJXAs8HngosB44BPljl806UNChpcGhoqN7hmplVtH7jZnp7tv8J7e3pYf3GzZMq005acYXxVuDqiLirWoGI+FNE3BUR4xHxO+AskttYlcpeEBEDETEwZ86EXaGYmdXFvJkzGBsf327d2Pg482bOmFSZdtKqhFHr6qKSANSAWMzMdsqs/j5WLl/M9N4eduubxvTeHlYuX7zdQ+08ZdpJU58LSHoFMJfaraOQdARwY0RskLQfcMZE+5iZNduypXM5cOHsmi2g8pRpF81+kHw8cFlEbMquTJ9r3ALsHxH3AocBqyT1kzS/vQT4eJNjNSucdmue2W7x7oxZ/X0TnlueMu2gqQkjIk6qsv5eoD+zfCpwarPiMmsH7dY8s93itYm5axCzNtBuzTPbLV7LxwnDrA20W/PMdovX8nHCMGsD7dY8s93itXycMMzaQLs1z2y3eC0f1e6do70MDAyEx/S2TtZurY7aLd5uJWlNRAxMVM79M5m1kXZrntlu8VptThhmHazof+GX4tv1Sbvwl8e3FjbOiRS9nuvFCcOsQxX9PYhSfDEejG4Npvcmj1SLFudEil7P9eSH3mYdqOjvQWTjG92aPEfdMjZeuDgnUvR6rjcnDLMOVPT3ICrFV1KkOCdS9HquNycMsw5U9PcgKsVXUqQ4J1L0eq43JwyzDlT09yCy8fXtkoxcML23p3BxTqTo9Vxvfg/DrIMVvfWOW0kVg9/DMLPCvwdR9PiyaiWFVp9HsxKWE4aZ2QSK3HS2mbH5GYaZWQ1Fbjrb7NicMMzMaihy09lmx+aEYWZWQ5GbzjY7NicMM7Maitx0ttmxuVmtmVkORW46O9XY3KzWzKyOWt10tpZmxeZbUmZmlosThpmZ5eKEYWZmuThhmJlZLk4YZmaWixOGmZnl0rSEIWmkbNoq6fwa5T8g6UFJj0q6SFIx27OZdbnhkVHW3vdIIfpWKoJOro+mvYcREf2leUm7AhuAb1YqK+lw4F+AQ4E/A98GPpKuM7OCKHIvrq3Q6fXRqltSRwEPAVdV2X48cGFE3BwRG4GzgROaFJuZ5VDkXlxboRvqo1UJ43jgS1G9X5JFwNrM8lpgL0mzygtKOlHSoKTBoaGhBoRqZpUUuRfXVuiG+mh6wpA0H3gVcHGNYv3Ao5nl0vxu5QUj4oKIGIiIgTlz5tQvUDOrqci9uLZCN9RHK64w3gpcHRF31SgzAuyeWS7Nb2pYVGY2KUXuxbUVuqE+WtH54FuBT0xQ5mZgCXBpurwE2BARw40MzMwmZ9nSuRy4cHZhe3Fttk6vj6YmDEmvAOZSpXVUxpeAVZK+AjwAfAhY1djozGxnFLkX11bo5Ppo9i2p44HLImK7W0uS5qfvZswHiIgfAyuBXwL3pNOHmxyrmWU0+v2CTn5/oVM09QojIk6qsv5ekgfd2XXnAec1Iy4zq63R7xd0+vsLncJdg5hZTY1+v6Ab3l/oFE4YZlZTo98v6Ib3FzpF7ltSkt4CHAY8lbJEExHL6hyXmRVEo98v6Ib3FzpFrisMSZ8ELgEWAI8Aw2WTmXWoRr9f0A3vL3QKVe+dI1NI2gC8JyK+1fiQdt7AwEAMDg62OgyzjjQ8MtrQ9wsa/flWnaQ1ETEwUbm8t6R6gJumFpKZtbNOfr/A8smbMC4A/itwZuNCMbNu5Wa17SFvwtgDOFbSa4F1wFh2Y0S8r96BmVl3yDar3ULy8Pu01es4cOFsX9EUTN6EsT/bbkntV7Zt4ocgZmZVlJrVlpIFbGtW64RRLLkSRkS8utGBmFl3crPa9jGpF/ckTZf0fEmLJE1vVFBm1j3crLZ95LrCkNQLfBw4GXgSIGBU0vnA6RExVmt/M7NaOr1b8E6R9xnGucAxwDuBq9N1BwPnkFylnFr/0Mysm7jZbvHlTRjHAm+LiB9m1t0paQj4D5wwzMw6Xt5nGE8B7qyw/k6SJrdmZtbh8iaMtUCldy3ej98ANzPrCnlvSZ0G/DB9ce86kncvXg48HTiiQbGZmVmB5LrCiIgrgX1IxuLuB3ZP5/eNiKtr7WtmZp0h93gYEfFn4PQGxmJmZgVWNWFIeiFwU0SMp/NVRcSNdY/MzMwKpdYVxiDwNOChdD5IXtgrF8Au9Q/NzMyKpFbCeBYwlJk3M7MuVjVhRMQ92UXgvqgwPJ+k+Y0IzMzMiiXvexh3AXPKV0qalW4zM7MOlzdhiMrjXvQDW+oXjpmZFVXNZrWSPpfOBnCOpL9mNu8CvAS/6W1m1hUmusJ4QToJeF5m+QXAQuBG4ITJHFDS0ZL+IOkvku6UdHCFMidI2ippJDMdMpnjmJlZfdW8wiiNtCfpi8D7I+KxqRws7VrkXOAtwK+BvWsUvy4iDprK8ayzDY+MevyESXKd2VTkfdP7f5F0B7JdwpA0DxiLiA05P+cjwFkRcX26fH/O/cy2c/lN97Ni9Tp6e3oYGx9n5fLFLFs6t9VhFZrrzKYq70PvL1G5k8HDgS/n+QBJuwADwBxJd0haL+nzkqoN3HuApIcl3S7pDEm5uzGxzjY8MsqK1evYMjbOptEn2DI2zmmr1zE8Mtrq0ArLdWb1kDdhvBi4ssL6q0iSQB57Ab3AUSSj9S0FDgA+VKHslcDzgacCy0lG+/tgpQ+VdKKkQUmDQ0NDlYpYh1m/cTO9Pdt/dXt7eli/cXOLIio+15nVQ96EMQ2odMNzepX1lZS+medHxAMR8TBwHvCG8oIR8aeIuCsixiPid8BZJIlmBxFxQUQMRMTAnDk7vCpiHWjezBmMjY9vt25sfJx5M6tdrJrrzOohb8K4AXhXhfXvAX6T5wMiYiOwnsrvc0y4O5X7sbIuNKu/j5XLFzO9t4fd+qYxvbeHlcsX+yFuDa4zq4e8zwVOB34haQnw83TdoSS3lF4zieN9EXivpB8DY8D/AL5fXkjSEcCNEbFB0n7AGSTjb5gBsGzpXA5cONstfibBdWZTlSthRMT1kl5O8hzhzSR/7d8IvDsi1k7ieGcDs4HbSd4QvxT4WNof1S3A/hFxL3AYsEpSP7ABuAT4+CSOY11gVn+ff/QmyXVmU6EK/Qm2rYGBgRgcHGx1GGZmbUXSmoiYsAHTpJuqSnoa8KTsuvSqwMzMOliuhCHpKcDngH+kLFmkPICSmVmHy9tK6lPAEuBIkmcPx5I8z1hP0s2HmZl1uLy3pI4AjomIqyRtBdZExDckPQCcBHyrYRGamVkh5L3C2AMojcD3KDArnb8OeEW9gzIzs+LJmzDuBJ6dzv8BOFqSSJrY/mcjAjMzs2LJmzBWAYvT+U+Q3IZ6HPgkSXflZmbW4fK+uPeZzPwv0revB4A/pn09mZlZh6t6hZGOePfUdP4iSbuVtkXEvRFxmZOFmVn3qHVLajPQn84fT9IzrZmZdalat6SuBb4jaQ1J31Gfk1Sx8/yIeFsjgjMzs+KolTD+CTgVWEjSvfgswMNzmZl1qaoJIx2n+4MAku4ieXFvuFmBmZlZseRtJfWs8nWSeiNirP4hmZlZEeV6D0PS+yQtzyxfCGyWdJukfRsWnZmZFUbeF/feBwwBSHolSa+1xwI3AZ9uTGhmZlYkeTsfnAvcnc6/CfhmRFwq6XfAVY0IzMzMiiXvFcZjwJx0/rVsG9d7DL+fYWbWFfJeYfwU+L+SfkvSzPZH6fpFwF2NCMzMzIol7xXGe4BrgNnAURFR6qH2hcDXGhGYmZkVS95mtY8B762w/sN1j8hyGR4ZZf3GzcybOYNZ/X2tDsfMukDVhCFpz9KVhKQ9a31I5orDmuDym+5nxep19Pb0MDY+zsrli1m2dG6rwzKzDlfrCmNI0t4R8RDwMEn3IOWUrt+lEcHZjoZHRlmxeh1bxsbZwjgAp61ex4ELZ/tKw8waqlbCOJRto+kdSuWEYU22fuNment6/pYsAHp7eli/cbMThpk1VK2+pH6Vmb+iKdHYhObNnMHY+Ph268bGx5k3c0aLIjKzbpG3a5C/DaZUtn6WpK31D8uqmdXfx8rli5ne28NufdOY3tvDyuWLfXVhZg2X9z0MVVnfRzK2d26SjgY+DMwHHgROiIgd3haX9AFgBTADWA28KyLcvTqwbOlcDlw4262kzKypaiYMSaekswG8U9JIZvMuwMHArXkPJum1wLnAW4BfA3tXKXc48C8kz07+DHwb+Ei6ru7asYnqrP6+tom13bXj98OsESa6wii9eyHg7UD29tPjJP1LvXMSx/sIcFZEXJ8u31+l3PHAhRFxM4Cks4Gv0ICE4SaqVou/H2bb1HyGERHPSsfC+BWwpLScTvtGxOERcUOeA0naBRgA5ki6Q9J6SZ+XVOlp7SJgbWZ5LbCXpFn5TiufbBPVTaNPsGVsnNNWr2N4xHe+zN8Ps3K5HnpHxKsjYuMUj7UX0AscRXIraylwAPChCmX7gUczy6X53coLSjpR0qCkwaGhoUkFVGqimlVqomrm74fZ9vI+9EbSPiQ/9vOBJ2W3RcTbcnxE6V/Z+RHxQPqZ55EkjNPLyo4Au2eWS/Obyj80Ii4ALgAYGBiY1LsibqJqtfj7Yba9vM1q3wisIxkL423AvsAbgH8g6ZBwQukVynryvQB4M7Aks7wE2FDvMcXdRNVq8ffDbHuKmPj3W9Ia4FsRcY6kTSQ/4H8GvgxcFxHn5TqYdBZwBPBGkrE0vgtcERFnlJV7PbCKpJXUAyTNan8dETUfeg8MDMTg4GCeULbjVjBWi78f1ukkrYmIgYnK5b0ltS/wjXR+DHhyRGxJE8APgFwJAzib5IrkdmALcCnwMUnzgVuA/SPi3oj4saSVwC/Z9h5Gw3rGdRNVq6Ue3w8nHesEeRPGJraNrPcAySBKv0/3n5n3YBExBrw7nbLuJXnQnS17HvkTkVlhuWmudYq8AyjdAByUzv8A+LSkDwNfBK5rRGBmncBNc62T5L3COIVtVwBnkjRvXU5ya+mUKvuYdT33LmydJO+Ie3/KzP8VeFfDIjLrIG6aa50kb7PaOZLmZJZfIOmjko5pXGhm7c9Nc62T5L0ldSlJE9qLJM0GriRpVvteSU+PiE83KkCzdufeha1T5H3ovRgodRh4FHBHRCwC3gqc1IjAzDrJrP4+ljxjDycLa2t5E8YMku46AF5D8sIdwI3AM+odVCcZHhll7X2PuFVMC7juzeor7y2pPwJvlrQaeB3wyXT9XsAjjQisE7j9feu47s3qL+8VxkdIBj66G7g+06X54cBvGxBX23P7+9Zx3Zs1Rt7uzS8j6aV2AHh9ZtPP8HsYFblr7NZx3Zs1Ru7uzSNiA7ChbF2uwZO6kdvft47r3qwx8t6Sskly+/vWcd2bNUau7s3bxc52b95I7qW0dVz3ZvnUu3tz20md2HV6u/wQd2Ldm7WSE4ZNipurmnWv3M8wJO0l6VRJX0i7B0HSgZKe1bjwrEjcXNWsu+XtfPBFwG3AccB/B3ZPN70W+FhjQrOicXNVs+6W9wrjU8BnI+IAIPvn5E+AA+selRWSm6uadbe8CeNFwMUV1j9A0j2IdQE3VzXrbnkfem+m8tjd+wEP1S8cKzp31W3WvfJeYVwOfFhS6dchJC0g6V9qdQPiaplO6uG0UefirrrNulPeK4xTgR8CQ8CTgatJbkVdA3yoMaE1Xyc1Ge2kczGzYsg7pvdjwEGSDgVeSHJlcmNE/KyRwTVTtsnoFpIHu6etXseBC2e33V/SnXQuZlYcVROGpK3A3hHxkKSLgPdHxC+AXzQtuiYqNRkt/cDCtiaj7fYj20nnYmbFUesZxmagP50/Hpje+HBap5OajHbSuZhZcdS6JXUt8B1JawABn5NU8Q2tiHhbI4JrplKT0dPK7vu341/knXQuZlYctRLGP5E87F4IBDCL7V/a6zid1GS0k87FzIqhasJIB0z6IICku4BjImJ4KgeTdAXwMuCJdNX9EbFvhXJnAqezfYJaHBF/msrx8+ikHk476VzMrPXyDtH6rKkmi4yTI6I/nXZIFhnfyJTrb0ayMDOz6mq1kjoF+LeI2JLOVxUR59U9MjMzK5RazzDeS9J/1JZ0vpoAJpMwzpH0CZLeb0+PiCuqlHuTpP8k6a/q8xHxhUqFJJ0InAgwf/78SYRhZmaT0dQhWiW9FLgFeBw4Gvg8sDQi7iwrtz/wCLABeClJ9yOnRMTXan1+EYdoNTMrurxDtOYeQKnKQZ4p6dK85SPihojYFBGjEXExSdcib6hQ7paI+HNEbI2Ia4HPAkdNJVYzM5uaKSUMYA9g+RT2D5J3POpVzszMGmSqCSM3SXtIOlzSdEnTJB0HvJJkEKbysn8vaaYSLwHeR9JjrpmZtUje3mrroRf4KMkYGluBW4EjI+I2SQcDP4qIUlckRwMXAX3AeuDc9BaWmZm1SNMSRkQMAS+usu0qtvVbRUQc06y4zMwsn5oJQ9J3J9h/9zrGYmZmBTbRFcZEb3cPA3fVKRYzMyuwmgkjIv5bswIxM7Nia1orKTMza29OGGZmlosThpmZ5eKEYWZmuThhmJlZLk4YZmaWixOGmZnl4oRhZma5OGGYmVkuThhmZpaLE4aZmeXihGFmZrk4YZiZWS5OGGZmlosThpmZ5eKEYWZmuThh2N8Mj4yy9r5HGB4ZbXUoZlZAEw3Ral3i8pvuZ8XqdfT29DA2Ps7K5YtZtnRuq8MyswLxFYYxPDLKitXr2DI2zqbRJ9gyNs5pq9f5SsPMtuOEYazfuJnenu2/Cr09PazfuLlFEZlZETlhGPNmzmBsfHy7dWPj48ybOaNFEZlZETlhGLP6+1i5fDHTe3vYrW8a03t7WLl8MbP6+1odmpkViB96GwDLls7lwIWzWb9xM/NmznCyMLMdNPUKQ9IVkrZIGkmn26qUk6RzJQ2n00pJamas3WhWfx9LnrGHk4WZVdSKW1InR0R/Ou1bpcyJwJHAEmAx8HfASc0K0MzMdlTUZxjHA5+OiPURcT/waeCE1oZkZtbdWpEwzpH0sKRrJB1SpcwiYG1meW26zszMWqTZCWMF8GxgLnAB8D1Jz6lQrh94NLP8KNBf6TmGpBMlDUoaHBoaakTMZmZGkxNGRNwQEZsiYjQiLgauAd5QoegIsHtmeXdgJCKiwmdeEBEDETEwZ86cxgRuZmYtf4YRQKXWTzeTPPAuWZKuMzOzFmlawpC0h6TDJU2XNE3SccArgZ9UKP4l4BRJcyU9HfhnYFWzYjUzsx0188W9XuCjwH7AVuBW4MiIuE3SwcCPIqI/Lft/SJ51/C5d/o90XdsYHhn1S3Bm1lGaljAiYgh4cZVtV5E86C4tB3BaOrUddxVuZp2o1c8wOo67CjezTuWEUWfuKtzMOpUTRp25q3Az61ROGHXmrsLNrFO5e/MGcFfhZtaJnDAaZFZ/XyEThZv7mtnOcsLoIm7ua2ZT4WcYXcLNfc1sqpwwuoSb+5rZVDlhdAk39zWzqXLC6BJu7mtmU+WH3l3EzX3NbCqcMLpMUZv7mlnx+ZaUmZnl4oRhZma5OGGYmVkuThhmZpaLE4aZmeXihGFmZrkoGT67M0gaAu6p88fOBh6u82e2I9eD6wBcB9CZdfDMiJgzUaGOShiNIGkwIgZaHUeruR5cB+A6gO6uA9+SMjOzXJwwzMwsFyeMiV3Q6gAKwvXgOgDXAXRxHfgZhpmZ5eIrDDMzy8UJw8zMcunohCHpZEmDkkYlrSrbdpikWyX9VdIvJT0zs61P0kWSHpP0oKRT6rVvs6XxXCjpHkmbJP1W0hGZ7d1SD5dIeiCN53ZJb89s64o6KJH0XElbJF2SWXds+h35i6TvSNozs21PSd9Ot90j6diyz9vpfZtN0hXpuY+k022ZbV1RB1MSER07AW8GjgS+AKzKrJ8NPAr8F2A68Eng+sz2c4CrgJnA84AHgddPdd8W1cGuwJnAApI/EP4O2JQud1M9LAL60vn90nhe1E11kInrp2lcl2TqZhPwSqAf+Crw9Uz5rwHfSLcdlJ7zoqnu26JzvwJ4e5XvR1fUwZTqr9UBNOlL8lG2TxgnAtdmlncFNgP7pcv3A6/LbD+79AWYyr5FmYB1wPJurQdgX+AB4B+7rQ6Ao4FLSf6IKCWMjwNfzZR5DvA4sFt6To8D+2S2fxn4xFT3bdH5X0HlhNE1dTCVqaNvSdWwCFhbWoiIvwB3AoskzQSent2ezi+qw74tJ2kvYB/gZrqsHiT9m6S/AreSJIwf0kV1IGl34Czgn8s2lZ/HnaQ/cum0NSJuz5SvVQeT2bdVzpH0sKRrJB2Sruu2Otgp3Zow+kkuC7MeJfmLoD+zXL5tqvu2lKRe4CvAxRFxK11WDxHx7jSGg4HLgFG6qw7OBi6MiPvK1k90HtW2TXXfVlgBPBuYS/I+xfckPYfuqoOd1q0JYwTYvWzd7iT3IUcyy+Xbprpvy0jqIbkUfhw4OV3ddfUQEVsj4mpgHvAuuqQOJC0FXgN8psLmic6j2rap7tt0EXFDRGyKiNGIuBi4BngDXVQHU9GtCeNmYElpQdKuJPcdb46IjSS3K5Zkyi9J95nqvi0hScCFwF7A8ogYSzd1VT2UmUYaL91RB4eQNHS4V9KDwKnAckk3suN5PBvoA25Pp2mSnpv5rFp1MJl9iyAA0d11kF+rH6I0ciL5UZhO0lrly+n8NGAOyWXh8nTduWzfuuUTwK9IWrfsR/IPv9QyZqf3bWE9/DtwPdBftr4r6gF4KsnD3n5gF+Bw4C/A33dRHTwZeFpm+hTwrfQcFgGPkdyq2xW4hO1b+XydpKXPrsCB7NhCaKf2bUEd7JH+vy/9DhyXfg/27ZY6mHIdtjqABn9BziT5CyI7nZluew3Jw8/NJC0nFmT26wMuSr8EG4BTyj53p/dtQR08Mz3vLSSXx6XpuG6pB5IfxV8Bj6Tx/A54Rz3Oo13qoMq/jUsyy8cC95L8gF4O7JnZtifwnXTbvcCxZZ+10/u24HvwG5LbQY+Q/BH12m6qg6lO7kvKzMxy6dZnGGZmNklOGGZmlosThpmZ5eKEYWZmuThhmJlZLk4YZmaWixOGWReStEBSSBpodSzWPpwwrNAk7SXpM5L+mA5885CkayW9V1J/ptzd6Q9gpOXuSweteVOFz4zMtEnJIFtvbu6Ztdx9wN7ATQCSDknrY3Zrw7Iic8KwwpK0ALgReD1wBvBC4FCSbi0OA5aV7XIWyY/gPiRdgdwNfFvS+RU+/h1p2ReTdDf9TUkvr/c51CLpSc08XlYknTA+GBFPtCoGaz9OGFZkXwDGgYGI+HpE3BIRv4+IyyLiSJL+ebI2pT+C90bENRHxAeDdwMmSXl1W9pG07K3AO0m6TilPQMB2t2+OlXR1egVzq6TXlZXbX9IP0quWhyR9TdLTMttXSfq+pBWS1gPrq524pJdJ+kU6rOejkn4u6enpttdLukrSRkn/Keknkp43mXizt6TSxPzLdNNQun5VnmNZd3HCsEJKx0Q+HPjXSAYm2kHk69fmQmAjSQeBFUXSe+8TQO8En7US+BywFPh/wOWS5qbx7g1cCfweeAlJH1P9wHfTruVLXgUsJrlqOqzSQSQtIfkBv4Oks7qXkYySNy0tsivwv9PjHELSmd33KlyxVI23zH1sq59FJFde75/ksawbtLozK0+eKk3AS0k6TfyHsvXr2daB4r9n1t8NnFrls64HfphZDuCodL4P+FC67ogq+y9It5+eWddD0nX1R9Pls4Cfl+03M93vJenyKmCIdGzxGuf+FTK93uaoq12BrcBBk4i3VGYgXT4kXZ49mWN56q7JVxjWbg4m+Yv51yTdVOchkh/DrC9LGgH+CpxCkmx+NMHnXFeaiYhx4AZg/3TVi4BXShopTSR/uUMyRkbJ7yNidILjHAD8vOrJSM+R9FVJd0oq9YTbA8yfRLy5TOJY1gWmTVzErCXuIPmR3y+7MiLuAlAyNveEJO1C8hD812WbPgj8GHgsIh6acrTJj+gPSAYmKrchM1/x9loZTbD9e8D9wEnpf58AbgEacZuomceygvMVhhVSRAwDPyV5YN0/Ufka3k4ycM63ytY/GBF3TDJZvKw0k45i+BLgD+mqG0nu/9+Tfm52muxwnDeStAbbgaRZwPOAj0fEzyLiDyTjQ1f6469WvOUeT/+7y04ey7qAE4YV2btJvqNrJB2TtkLaR9IxJMNcbi0rv5ukp0l6hqRXSPoM8K/A5yPiV3WI512SjpK0L8mD4GeStOQiPc5TgG9IeqmkZ0t6jaQLJO02yeN8Ejgg3XeJpH0lvV3SfJIH+A8D75C0UNKrSEZUrNQ8tla85e4huaJ7o6Q5aZKezLGsG7T6IYonT7UmkuFEP0tyi2qU5GH3b4D/CeyWKXc320ZVHCV5OP4dYFmFz/zbQ++cMSxI9zkOuJZmipeQAAAAn0lEQVSkCe5tlD0kB55LciWzkWQEvtuA84EnpdtXAd/PecyDSFpdbSYZHe5nwN7ptkNJWmNtSf97eFovJ+SNl7KH3um6M0iGkR0HVuU5lqfumjzintkE0vcU7gJeHBGDrY1mYu0Wr7UP35IyM7NcnDDMzCwX35IyM7NcfIVhZma5OGGYmVkuThhmZpaLE4aZmeXihGFmZrk4YZiZWS7/H1WhRLmX8YxSAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[5.96242338]]\n"
]
}
],
"source": [
"# Code example\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import sklearn.linear_model\n",
"\n",
"# Load the data\n",
"oecd_bli = pd.read_csv(datapath + \"oecd_bli_2015.csv\", thousands=',')\n",
"gdp_per_capita = pd.read_csv(datapath + \"gdp_per_capita.csv\",thousands=',',delimiter='\\t',\n",
" encoding='latin1', na_values=\"n/a\")\n",
"\n",
"# Prepare the data\n",
"country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)\n",
"X = np.c_[country_stats[\"GDP per capita\"]]\n",
"y = np.c_[country_stats[\"Life satisfaction\"]]\n",
"\n",
"# Visualize the data\n",
"country_stats.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction')\n",
"plt.show()\n",
"\n",
"# Select a linear model\n",
"model = sklearn.linear_model.LinearRegression()\n",
"\n",
"# Train the model\n",
"model.fit(X, y)\n",
"\n",
"# Make a prediction for Cyprus\n",
"X_new = [[22587]] # Cyprus' GDP per capita\n",
"print(model.predict(X_new)) # outputs [[ 5.96242338]]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Note: you can ignore the rest of this notebook, it just generates many of the figures in chapter 1."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Load and prepare Life satisfaction data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you want, you can get fresh data from the OECD's website.\n",
"Download the CSV from http://stats.oecd.org/index.aspx?DataSetCode=BLI\n",
"and save it to `datasets/lifesat/`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"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>Indicator</th>\n",
" <th>Air pollution</th>\n",
" <th>Assault rate</th>\n",
" <th>Consultation on rule-making</th>\n",
" <th>Dwellings without basic facilities</th>\n",
" <th>Educational attainment</th>\n",
" <th>Employees working very long hours</th>\n",
" <th>Employment rate</th>\n",
" <th>Homicide rate</th>\n",
" <th>Household net adjusted disposable income</th>\n",
" <th>Household net financial wealth</th>\n",
" <th>...</th>\n",
" <th>Long-term unemployment rate</th>\n",
" <th>Personal earnings</th>\n",
" <th>Quality of support network</th>\n",
" <th>Rooms per person</th>\n",
" <th>Self-reported health</th>\n",
" <th>Student skills</th>\n",
" <th>Time devoted to leisure and personal care</th>\n",
" <th>Voter turnout</th>\n",
" <th>Water quality</th>\n",
" <th>Years in education</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></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>Australia</th>\n",
" <td>13.0</td>\n",
" <td>2.1</td>\n",
" <td>10.5</td>\n",
" <td>1.1</td>\n",
" <td>76.0</td>\n",
" <td>14.02</td>\n",
" <td>72.0</td>\n",
" <td>0.8</td>\n",
" <td>31588.0</td>\n",
" <td>47657.0</td>\n",
" <td>...</td>\n",
" <td>1.08</td>\n",
" <td>50449.0</td>\n",
" <td>92.0</td>\n",
" <td>2.3</td>\n",
" <td>85.0</td>\n",
" <td>512.0</td>\n",
" <td>14.41</td>\n",
" <td>93.0</td>\n",
" <td>91.0</td>\n",
" <td>19.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Austria</th>\n",
" <td>27.0</td>\n",
" <td>3.4</td>\n",
" <td>7.1</td>\n",
" <td>1.0</td>\n",
" <td>83.0</td>\n",
" <td>7.61</td>\n",
" <td>72.0</td>\n",
" <td>0.4</td>\n",
" <td>31173.0</td>\n",
" <td>49887.0</td>\n",
" <td>...</td>\n",
" <td>1.19</td>\n",
" <td>45199.0</td>\n",
" <td>89.0</td>\n",
" <td>1.6</td>\n",
" <td>69.0</td>\n",
" <td>500.0</td>\n",
" <td>14.46</td>\n",
" <td>75.0</td>\n",
" <td>94.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2 rows × 24 columns</p>\n",
"</div>"
],
"text/plain": [
"Indicator Air pollution Assault rate Consultation on rule-making \\\n",
"Country \n",
"Australia 13.0 2.1 10.5 \n",
"Austria 27.0 3.4 7.1 \n",
"\n",
"Indicator Dwellings without basic facilities Educational attainment \\\n",
"Country \n",
"Australia 1.1 76.0 \n",
"Austria 1.0 83.0 \n",
"\n",
"Indicator Employees working very long hours Employment rate Homicide rate \\\n",
"Country \n",
"Australia 14.02 72.0 0.8 \n",
"Austria 7.61 72.0 0.4 \n",
"\n",
"Indicator Household net adjusted disposable income \\\n",
"Country \n",
"Australia 31588.0 \n",
"Austria 31173.0 \n",
"\n",
"Indicator Household net financial wealth ... \\\n",
"Country ... \n",
"Australia 47657.0 ... \n",
"Austria 49887.0 ... \n",
"\n",
"Indicator Long-term unemployment rate Personal earnings \\\n",
"Country \n",
"Australia 1.08 50449.0 \n",
"Austria 1.19 45199.0 \n",
"\n",
"Indicator Quality of support network Rooms per person Self-reported health \\\n",
"Country \n",
"Australia 92.0 2.3 85.0 \n",
"Austria 89.0 1.6 69.0 \n",
"\n",
"Indicator Student skills Time devoted to leisure and personal care \\\n",
"Country \n",
"Australia 512.0 14.41 \n",
"Austria 500.0 14.46 \n",
"\n",
"Indicator Voter turnout Water quality Years in education \n",
"Country \n",
"Australia 93.0 91.0 19.4 \n",
"Austria 75.0 94.0 17.0 \n",
"\n",
"[2 rows x 24 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"oecd_bli = pd.read_csv(datapath + \"oecd_bli_2015.csv\", thousands=',')\n",
"oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n",
"oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n",
"oecd_bli.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Country\n",
"Australia 7.3\n",
"Austria 6.9\n",
"Belgium 6.9\n",
"Brazil 7.0\n",
"Canada 7.3\n",
"Name: Life satisfaction, dtype: float64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"oecd_bli[\"Life satisfaction\"].head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Load and prepare GDP per capita data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just like above, you can update the GDP per capita data if you want. Just download data from http://goo.gl/j1MSKe (=> imf.org) and save it to `datasets/lifesat/`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"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>Subject Descriptor</th>\n",
" <th>Units</th>\n",
" <th>Scale</th>\n",
" <th>Country/Series-specific Notes</th>\n",
" <th>GDP per capita</th>\n",
" <th>Estimates Start After</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</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>Afghanistan</th>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>599.994</td>\n",
" <td>2013.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania</th>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>3995.383</td>\n",
" <td>2010.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Subject Descriptor Units \\\n",
"Country \n",
"Afghanistan Gross domestic product per capita, current prices U.S. dollars \n",
"Albania Gross domestic product per capita, current prices U.S. dollars \n",
"\n",
" Scale Country/Series-specific Notes \\\n",
"Country \n",
"Afghanistan Units See notes for: Gross domestic product, curren... \n",
"Albania Units See notes for: Gross domestic product, curren... \n",
"\n",
" GDP per capita Estimates Start After \n",
"Country \n",
"Afghanistan 599.994 2013.0 \n",
"Albania 3995.383 2010.0 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdp_per_capita = pd.read_csv(datapath+\"gdp_per_capita.csv\", thousands=',', delimiter='\\t',\n",
" encoding='latin1', na_values=\"n/a\")\n",
"gdp_per_capita.rename(columns={\"2015\": \"GDP per capita\"}, inplace=True)\n",
"gdp_per_capita.set_index(\"Country\", inplace=True)\n",
"gdp_per_capita.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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>Air pollution</th>\n",
" <th>Assault rate</th>\n",
" <th>Consultation on rule-making</th>\n",
" <th>Dwellings without basic facilities</th>\n",
" <th>Educational attainment</th>\n",
" <th>Employees working very long hours</th>\n",
" <th>Employment rate</th>\n",
" <th>Homicide rate</th>\n",
" <th>Household net adjusted disposable income</th>\n",
" <th>Household net financial wealth</th>\n",
" <th>...</th>\n",
" <th>Time devoted to leisure and personal care</th>\n",
" <th>Voter turnout</th>\n",
" <th>Water quality</th>\n",
" <th>Years in education</th>\n",
" <th>Subject Descriptor</th>\n",
" <th>Units</th>\n",
" <th>Scale</th>\n",
" <th>Country/Series-specific Notes</th>\n",
" <th>GDP per capita</th>\n",
" <th>Estimates Start After</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></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>Brazil</th>\n",
" <td>18.0</td>\n",
" <td>7.9</td>\n",
" <td>4.0</td>\n",
" <td>6.7</td>\n",
" <td>45.0</td>\n",
" <td>10.41</td>\n",
" <td>67.0</td>\n",
" <td>25.5</td>\n",
" <td>11664.0</td>\n",
" <td>6844.0</td>\n",
" <td>...</td>\n",
" <td>14.97</td>\n",
" <td>79.0</td>\n",
" <td>72.0</td>\n",
" <td>16.3</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>8669.998</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mexico</th>\n",
" <td>30.0</td>\n",
" <td>12.8</td>\n",
" <td>9.0</td>\n",
" <td>4.2</td>\n",
" <td>37.0</td>\n",
" <td>28.83</td>\n",
" <td>61.0</td>\n",
" <td>23.4</td>\n",
" <td>13085.0</td>\n",
" <td>9056.0</td>\n",
" <td>...</td>\n",
" <td>13.89</td>\n",
" <td>63.0</td>\n",
" <td>67.0</td>\n",
" <td>14.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>9009.280</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Russia</th>\n",
" <td>15.0</td>\n",
" <td>3.8</td>\n",
" <td>2.5</td>\n",
" <td>15.1</td>\n",
" <td>94.0</td>\n",
" <td>0.16</td>\n",
" <td>69.0</td>\n",
" <td>12.8</td>\n",
" <td>19292.0</td>\n",
" <td>3412.0</td>\n",
" <td>...</td>\n",
" <td>14.97</td>\n",
" <td>65.0</td>\n",
" <td>56.0</td>\n",
" <td>16.0</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>9054.914</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Turkey</th>\n",
" <td>35.0</td>\n",
" <td>5.0</td>\n",
" <td>5.5</td>\n",
" <td>12.7</td>\n",
" <td>34.0</td>\n",
" <td>40.86</td>\n",
" <td>50.0</td>\n",
" <td>1.2</td>\n",
" <td>14095.0</td>\n",
" <td>3251.0</td>\n",
" <td>...</td>\n",
" <td>13.42</td>\n",
" <td>88.0</td>\n",
" <td>62.0</td>\n",
" <td>16.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>9437.372</td>\n",
" <td>2013.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hungary</th>\n",
" <td>15.0</td>\n",
" <td>3.6</td>\n",
" <td>7.9</td>\n",
" <td>4.8</td>\n",
" <td>82.0</td>\n",
" <td>3.19</td>\n",
" <td>58.0</td>\n",
" <td>1.3</td>\n",
" <td>15442.0</td>\n",
" <td>13277.0</td>\n",
" <td>...</td>\n",
" <td>15.04</td>\n",
" <td>62.0</td>\n",
" <td>77.0</td>\n",
" <td>17.6</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>12239.894</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Poland</th>\n",
" <td>33.0</td>\n",
" <td>1.4</td>\n",
" <td>10.8</td>\n",
" <td>3.2</td>\n",
" <td>90.0</td>\n",
" <td>7.41</td>\n",
" <td>60.0</td>\n",
" <td>0.9</td>\n",
" <td>17852.0</td>\n",
" <td>10919.0</td>\n",
" <td>...</td>\n",
" <td>14.20</td>\n",
" <td>55.0</td>\n",
" <td>79.0</td>\n",
" <td>18.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>12495.334</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chile</th>\n",
" <td>46.0</td>\n",
" <td>6.9</td>\n",
" <td>2.0</td>\n",
" <td>9.4</td>\n",
" <td>57.0</td>\n",
" <td>15.42</td>\n",
" <td>62.0</td>\n",
" <td>4.4</td>\n",
" <td>14533.0</td>\n",
" <td>17733.0</td>\n",
" <td>...</td>\n",
" <td>14.41</td>\n",
" <td>49.0</td>\n",
" <td>73.0</td>\n",
" <td>16.5</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>13340.905</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Slovak Republic</th>\n",
" <td>13.0</td>\n",
" <td>3.0</td>\n",
" <td>6.6</td>\n",
" <td>0.6</td>\n",
" <td>92.0</td>\n",
" <td>7.02</td>\n",
" <td>60.0</td>\n",
" <td>1.2</td>\n",
" <td>17503.0</td>\n",
" <td>8663.0</td>\n",
" <td>...</td>\n",
" <td>14.99</td>\n",
" <td>59.0</td>\n",
" <td>81.0</td>\n",
" <td>16.3</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>15991.736</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Czech Republic</th>\n",
" <td>16.0</td>\n",
" <td>2.8</td>\n",
" <td>6.8</td>\n",
" <td>0.9</td>\n",
" <td>92.0</td>\n",
" <td>6.98</td>\n",
" <td>68.0</td>\n",
" <td>0.8</td>\n",
" <td>18404.0</td>\n",
" <td>17299.0</td>\n",
" <td>...</td>\n",
" <td>14.98</td>\n",
" <td>59.0</td>\n",
" <td>85.0</td>\n",
" <td>18.1</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>17256.918</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Estonia</th>\n",
" <td>9.0</td>\n",
" <td>5.5</td>\n",
" <td>3.3</td>\n",
" <td>8.1</td>\n",
" <td>90.0</td>\n",
" <td>3.30</td>\n",
" <td>68.0</td>\n",
" <td>4.8</td>\n",
" <td>15167.0</td>\n",
" <td>7680.0</td>\n",
" <td>...</td>\n",
" <td>14.90</td>\n",
" <td>64.0</td>\n",
" <td>79.0</td>\n",
" <td>17.5</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>17288.083</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Greece</th>\n",
" <td>27.0</td>\n",
" <td>3.7</td>\n",
" <td>6.5</td>\n",
" <td>0.7</td>\n",
" <td>68.0</td>\n",
" <td>6.16</td>\n",
" <td>49.0</td>\n",
" <td>1.6</td>\n",
" <td>18575.0</td>\n",
" <td>14579.0</td>\n",
" <td>...</td>\n",
" <td>14.91</td>\n",
" <td>64.0</td>\n",
" <td>69.0</td>\n",
" <td>18.6</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>18064.288</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Portugal</th>\n",
" <td>18.0</td>\n",
" <td>5.7</td>\n",
" <td>6.5</td>\n",
" <td>0.9</td>\n",
" <td>38.0</td>\n",
" <td>9.62</td>\n",
" <td>61.0</td>\n",
" <td>1.1</td>\n",
" <td>20086.0</td>\n",
" <td>31245.0</td>\n",
" <td>...</td>\n",
" <td>14.95</td>\n",
" <td>58.0</td>\n",
" <td>86.0</td>\n",
" <td>17.6</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>19121.592</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Slovenia</th>\n",
" <td>26.0</td>\n",
" <td>3.9</td>\n",
" <td>10.3</td>\n",
" <td>0.5</td>\n",
" <td>85.0</td>\n",
" <td>5.63</td>\n",
" <td>63.0</td>\n",
" <td>0.4</td>\n",
" <td>19326.0</td>\n",
" <td>18465.0</td>\n",
" <td>...</td>\n",
" <td>14.62</td>\n",
" <td>52.0</td>\n",
" <td>88.0</td>\n",
" <td>18.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>20732.482</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Spain</th>\n",
" <td>24.0</td>\n",
" <td>4.2</td>\n",
" <td>7.3</td>\n",
" <td>0.1</td>\n",
" <td>55.0</td>\n",
" <td>5.89</td>\n",
" <td>56.0</td>\n",
" <td>0.6</td>\n",
" <td>22477.0</td>\n",
" <td>24774.0</td>\n",
" <td>...</td>\n",
" <td>16.06</td>\n",
" <td>69.0</td>\n",
" <td>71.0</td>\n",
" <td>17.6</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>25864.721</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Korea</th>\n",
" <td>30.0</td>\n",
" <td>2.1</td>\n",
" <td>10.4</td>\n",
" <td>4.2</td>\n",
" <td>82.0</td>\n",
" <td>18.72</td>\n",
" <td>64.0</td>\n",
" <td>1.1</td>\n",
" <td>19510.0</td>\n",
" <td>29091.0</td>\n",
" <td>...</td>\n",
" <td>14.63</td>\n",
" <td>76.0</td>\n",
" <td>78.0</td>\n",
" <td>17.5</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>27195.197</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Italy</th>\n",
" <td>21.0</td>\n",
" <td>4.7</td>\n",
" <td>5.0</td>\n",
" <td>1.1</td>\n",
" <td>57.0</td>\n",
" <td>3.66</td>\n",
" <td>56.0</td>\n",
" <td>0.7</td>\n",
" <td>25166.0</td>\n",
" <td>54987.0</td>\n",
" <td>...</td>\n",
" <td>14.98</td>\n",
" <td>75.0</td>\n",
" <td>71.0</td>\n",
" <td>16.8</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>29866.581</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Japan</th>\n",
" <td>24.0</td>\n",
" <td>1.4</td>\n",
" <td>7.3</td>\n",
" <td>6.4</td>\n",
" <td>94.0</td>\n",
" <td>22.26</td>\n",
" <td>72.0</td>\n",
" <td>0.3</td>\n",
" <td>26111.0</td>\n",
" <td>86764.0</td>\n",
" <td>...</td>\n",
" <td>14.93</td>\n",
" <td>53.0</td>\n",
" <td>85.0</td>\n",
" <td>16.3</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>32485.545</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Israel</th>\n",
" <td>21.0</td>\n",
" <td>6.4</td>\n",
" <td>2.5</td>\n",
" <td>3.7</td>\n",
" <td>85.0</td>\n",
" <td>16.03</td>\n",
" <td>67.0</td>\n",
" <td>2.3</td>\n",
" <td>22104.0</td>\n",
" <td>52933.0</td>\n",
" <td>...</td>\n",
" <td>14.48</td>\n",
" <td>68.0</td>\n",
" <td>68.0</td>\n",
" <td>15.8</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>35343.336</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>New Zealand</th>\n",
" <td>11.0</td>\n",
" <td>2.2</td>\n",
" <td>10.3</td>\n",
" <td>0.2</td>\n",
" <td>74.0</td>\n",
" <td>13.87</td>\n",
" <td>73.0</td>\n",
" <td>1.2</td>\n",
" <td>23815.0</td>\n",
" <td>28290.0</td>\n",
" <td>...</td>\n",
" <td>14.87</td>\n",
" <td>77.0</td>\n",
" <td>89.0</td>\n",
" <td>18.1</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>37044.891</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>France</th>\n",
" <td>12.0</td>\n",
" <td>5.0</td>\n",
" <td>3.5</td>\n",
" <td>0.5</td>\n",
" <td>73.0</td>\n",
" <td>8.15</td>\n",
" <td>64.0</td>\n",
" <td>0.6</td>\n",
" <td>28799.0</td>\n",
" <td>48741.0</td>\n",
" <td>...</td>\n",
" <td>15.33</td>\n",
" <td>80.0</td>\n",
" <td>82.0</td>\n",
" <td>16.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>37675.006</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Belgium</th>\n",
" <td>21.0</td>\n",
" <td>6.6</td>\n",
" <td>4.5</td>\n",
" <td>2.0</td>\n",
" <td>72.0</td>\n",
" <td>4.57</td>\n",
" <td>62.0</td>\n",
" <td>1.1</td>\n",
" <td>28307.0</td>\n",
" <td>83876.0</td>\n",
" <td>...</td>\n",
" <td>15.71</td>\n",
" <td>89.0</td>\n",
" <td>87.0</td>\n",
" <td>18.9</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>40106.632</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Germany</th>\n",
" <td>16.0</td>\n",
" <td>3.6</td>\n",
" <td>4.5</td>\n",
" <td>0.1</td>\n",
" <td>86.0</td>\n",
" <td>5.25</td>\n",
" <td>73.0</td>\n",
" <td>0.5</td>\n",
" <td>31252.0</td>\n",
" <td>50394.0</td>\n",
" <td>...</td>\n",
" <td>15.31</td>\n",
" <td>72.0</td>\n",
" <td>95.0</td>\n",
" <td>18.2</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>40996.511</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Finland</th>\n",
" <td>15.0</td>\n",
" <td>2.4</td>\n",
" <td>9.0</td>\n",
" <td>0.6</td>\n",
" <td>85.0</td>\n",
" <td>3.58</td>\n",
" <td>69.0</td>\n",
" <td>1.4</td>\n",
" <td>27927.0</td>\n",
" <td>18761.0</td>\n",
" <td>...</td>\n",
" <td>14.89</td>\n",
" <td>69.0</td>\n",
" <td>94.0</td>\n",
" <td>19.7</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>41973.988</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Canada</th>\n",
" <td>15.0</td>\n",
" <td>1.3</td>\n",
" <td>10.5</td>\n",
" <td>0.2</td>\n",
" <td>89.0</td>\n",
" <td>3.94</td>\n",
" <td>72.0</td>\n",
" <td>1.5</td>\n",
" <td>29365.0</td>\n",
" <td>67913.0</td>\n",
" <td>...</td>\n",
" <td>14.25</td>\n",
" <td>61.0</td>\n",
" <td>91.0</td>\n",
" <td>17.2</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>43331.961</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Netherlands</th>\n",
" <td>30.0</td>\n",
" <td>4.9</td>\n",
" <td>6.1</td>\n",
" <td>0.0</td>\n",
" <td>73.0</td>\n",
" <td>0.45</td>\n",
" <td>74.0</td>\n",
" <td>0.9</td>\n",
" <td>27888.0</td>\n",
" <td>77961.0</td>\n",
" <td>...</td>\n",
" <td>15.44</td>\n",
" <td>75.0</td>\n",
" <td>92.0</td>\n",
" <td>18.7</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>43603.115</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Austria</th>\n",
" <td>27.0</td>\n",
" <td>3.4</td>\n",
" <td>7.1</td>\n",
" <td>1.0</td>\n",
" <td>83.0</td>\n",
" <td>7.61</td>\n",
" <td>72.0</td>\n",
" <td>0.4</td>\n",
" <td>31173.0</td>\n",
" <td>49887.0</td>\n",
" <td>...</td>\n",
" <td>14.46</td>\n",
" <td>75.0</td>\n",
" <td>94.0</td>\n",
" <td>17.0</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>43724.031</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>United Kingdom</th>\n",
" <td>13.0</td>\n",
" <td>1.9</td>\n",
" <td>11.5</td>\n",
" <td>0.2</td>\n",
" <td>78.0</td>\n",
" <td>12.70</td>\n",
" <td>71.0</td>\n",
" <td>0.3</td>\n",
" <td>27029.0</td>\n",
" <td>60778.0</td>\n",
" <td>...</td>\n",
" <td>14.83</td>\n",
" <td>66.0</td>\n",
" <td>88.0</td>\n",
" <td>16.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>43770.688</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sweden</th>\n",
" <td>10.0</td>\n",
" <td>5.1</td>\n",
" <td>10.9</td>\n",
" <td>0.0</td>\n",
" <td>88.0</td>\n",
" <td>1.13</td>\n",
" <td>74.0</td>\n",
" <td>0.7</td>\n",
" <td>29185.0</td>\n",
" <td>60328.0</td>\n",
" <td>...</td>\n",
" <td>15.11</td>\n",
" <td>86.0</td>\n",
" <td>95.0</td>\n",
" <td>19.3</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>49866.266</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Iceland</th>\n",
" <td>18.0</td>\n",
" <td>2.7</td>\n",
" <td>5.1</td>\n",
" <td>0.4</td>\n",
" <td>71.0</td>\n",
" <td>12.25</td>\n",
" <td>82.0</td>\n",
" <td>0.3</td>\n",
" <td>23965.0</td>\n",
" <td>43045.0</td>\n",
" <td>...</td>\n",
" <td>14.61</td>\n",
" <td>81.0</td>\n",
" <td>97.0</td>\n",
" <td>19.8</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>50854.583</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Australia</th>\n",
" <td>13.0</td>\n",
" <td>2.1</td>\n",
" <td>10.5</td>\n",
" <td>1.1</td>\n",
" <td>76.0</td>\n",
" <td>14.02</td>\n",
" <td>72.0</td>\n",
" <td>0.8</td>\n",
" <td>31588.0</td>\n",
" <td>47657.0</td>\n",
" <td>...</td>\n",
" <td>14.41</td>\n",
" <td>93.0</td>\n",
" <td>91.0</td>\n",
" <td>19.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>50961.865</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ireland</th>\n",
" <td>13.0</td>\n",
" <td>2.6</td>\n",
" <td>9.0</td>\n",
" <td>0.2</td>\n",
" <td>75.0</td>\n",
" <td>4.20</td>\n",
" <td>60.0</td>\n",
" <td>0.8</td>\n",
" <td>23917.0</td>\n",
" <td>31580.0</td>\n",
" <td>...</td>\n",
" <td>15.19</td>\n",
" <td>70.0</td>\n",
" <td>80.0</td>\n",
" <td>17.6</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>51350.744</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Denmark</th>\n",
" <td>15.0</td>\n",
" <td>3.9</td>\n",
" <td>7.0</td>\n",
" <td>0.9</td>\n",
" <td>78.0</td>\n",
" <td>2.03</td>\n",
" <td>73.0</td>\n",
" <td>0.3</td>\n",
" <td>26491.0</td>\n",
" <td>44488.0</td>\n",
" <td>...</td>\n",
" <td>16.06</td>\n",
" <td>88.0</td>\n",
" <td>94.0</td>\n",
" <td>19.4</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>52114.165</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>United States</th>\n",
" <td>18.0</td>\n",
" <td>1.5</td>\n",
" <td>8.3</td>\n",
" <td>0.1</td>\n",
" <td>89.0</td>\n",
" <td>11.30</td>\n",
" <td>67.0</td>\n",
" <td>5.2</td>\n",
" <td>41355.0</td>\n",
" <td>145769.0</td>\n",
" <td>...</td>\n",
" <td>14.27</td>\n",
" <td>68.0</td>\n",
" <td>85.0</td>\n",
" <td>17.2</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>55805.204</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Norway</th>\n",
" <td>16.0</td>\n",
" <td>3.3</td>\n",
" <td>8.1</td>\n",
" <td>0.3</td>\n",
" <td>82.0</td>\n",
" <td>2.82</td>\n",
" <td>75.0</td>\n",
" <td>0.6</td>\n",
" <td>33492.0</td>\n",
" <td>8797.0</td>\n",
" <td>...</td>\n",
" <td>15.56</td>\n",
" <td>78.0</td>\n",
" <td>94.0</td>\n",
" <td>17.9</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>74822.106</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Switzerland</th>\n",
" <td>20.0</td>\n",
" <td>4.2</td>\n",
" <td>8.4</td>\n",
" <td>0.0</td>\n",
" <td>86.0</td>\n",
" <td>6.72</td>\n",
" <td>80.0</td>\n",
" <td>0.5</td>\n",
" <td>33491.0</td>\n",
" <td>108823.0</td>\n",
" <td>...</td>\n",
" <td>14.98</td>\n",
" <td>49.0</td>\n",
" <td>96.0</td>\n",
" <td>17.3</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>80675.308</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Luxembourg</th>\n",
" <td>12.0</td>\n",
" <td>4.3</td>\n",
" <td>6.0</td>\n",
" <td>0.1</td>\n",
" <td>78.0</td>\n",
" <td>3.47</td>\n",
" <td>66.0</td>\n",
" <td>0.4</td>\n",
" <td>38951.0</td>\n",
" <td>61765.0</td>\n",
" <td>...</td>\n",
" <td>15.12</td>\n",
" <td>91.0</td>\n",
" <td>86.0</td>\n",
" <td>15.1</td>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>101994.093</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>36 rows × 30 columns</p>\n",
"</div>"
],
"text/plain": [
" Air pollution Assault rate Consultation on rule-making \\\n",
"Country \n",
"Brazil 18.0 7.9 4.0 \n",
"Mexico 30.0 12.8 9.0 \n",
"Russia 15.0 3.8 2.5 \n",
"Turkey 35.0 5.0 5.5 \n",
"Hungary 15.0 3.6 7.9 \n",
"Poland 33.0 1.4 10.8 \n",
"Chile 46.0 6.9 2.0 \n",
"Slovak Republic 13.0 3.0 6.6 \n",
"Czech Republic 16.0 2.8 6.8 \n",
"Estonia 9.0 5.5 3.3 \n",
"Greece 27.0 3.7 6.5 \n",
"Portugal 18.0 5.7 6.5 \n",
"Slovenia 26.0 3.9 10.3 \n",
"Spain 24.0 4.2 7.3 \n",
"Korea 30.0 2.1 10.4 \n",
"Italy 21.0 4.7 5.0 \n",
"Japan 24.0 1.4 7.3 \n",
"Israel 21.0 6.4 2.5 \n",
"New Zealand 11.0 2.2 10.3 \n",
"France 12.0 5.0 3.5 \n",
"Belgium 21.0 6.6 4.5 \n",
"Germany 16.0 3.6 4.5 \n",
"Finland 15.0 2.4 9.0 \n",
"Canada 15.0 1.3 10.5 \n",
"Netherlands 30.0 4.9 6.1 \n",
"Austria 27.0 3.4 7.1 \n",
"United Kingdom 13.0 1.9 11.5 \n",
"Sweden 10.0 5.1 10.9 \n",
"Iceland 18.0 2.7 5.1 \n",
"Australia 13.0 2.1 10.5 \n",
"Ireland 13.0 2.6 9.0 \n",
"Denmark 15.0 3.9 7.0 \n",
"United States 18.0 1.5 8.3 \n",
"Norway 16.0 3.3 8.1 \n",
"Switzerland 20.0 4.2 8.4 \n",
"Luxembourg 12.0 4.3 6.0 \n",
"\n",
" Dwellings without basic facilities Educational attainment \\\n",
"Country \n",
"Brazil 6.7 45.0 \n",
"Mexico 4.2 37.0 \n",
"Russia 15.1 94.0 \n",
"Turkey 12.7 34.0 \n",
"Hungary 4.8 82.0 \n",
"Poland 3.2 90.0 \n",
"Chile 9.4 57.0 \n",
"Slovak Republic 0.6 92.0 \n",
"Czech Republic 0.9 92.0 \n",
"Estonia 8.1 90.0 \n",
"Greece 0.7 68.0 \n",
"Portugal 0.9 38.0 \n",
"Slovenia 0.5 85.0 \n",
"Spain 0.1 55.0 \n",
"Korea 4.2 82.0 \n",
"Italy 1.1 57.0 \n",
"Japan 6.4 94.0 \n",
"Israel 3.7 85.0 \n",
"New Zealand 0.2 74.0 \n",
"France 0.5 73.0 \n",
"Belgium 2.0 72.0 \n",
"Germany 0.1 86.0 \n",
"Finland 0.6 85.0 \n",
"Canada 0.2 89.0 \n",
"Netherlands 0.0 73.0 \n",
"Austria 1.0 83.0 \n",
"United Kingdom 0.2 78.0 \n",
"Sweden 0.0 88.0 \n",
"Iceland 0.4 71.0 \n",
"Australia 1.1 76.0 \n",
"Ireland 0.2 75.0 \n",
"Denmark 0.9 78.0 \n",
"United States 0.1 89.0 \n",
"Norway 0.3 82.0 \n",
"Switzerland 0.0 86.0 \n",
"Luxembourg 0.1 78.0 \n",
"\n",
" Employees working very long hours Employment rate \\\n",
"Country \n",
"Brazil 10.41 67.0 \n",
"Mexico 28.83 61.0 \n",
"Russia 0.16 69.0 \n",
"Turkey 40.86 50.0 \n",
"Hungary 3.19 58.0 \n",
"Poland 7.41 60.0 \n",
"Chile 15.42 62.0 \n",
"Slovak Republic 7.02 60.0 \n",
"Czech Republic 6.98 68.0 \n",
"Estonia 3.30 68.0 \n",
"Greece 6.16 49.0 \n",
"Portugal 9.62 61.0 \n",
"Slovenia 5.63 63.0 \n",
"Spain 5.89 56.0 \n",
"Korea 18.72 64.0 \n",
"Italy 3.66 56.0 \n",
"Japan 22.26 72.0 \n",
"Israel 16.03 67.0 \n",
"New Zealand 13.87 73.0 \n",
"France 8.15 64.0 \n",
"Belgium 4.57 62.0 \n",
"Germany 5.25 73.0 \n",
"Finland 3.58 69.0 \n",
"Canada 3.94 72.0 \n",
"Netherlands 0.45 74.0 \n",
"Austria 7.61 72.0 \n",
"United Kingdom 12.70 71.0 \n",
"Sweden 1.13 74.0 \n",
"Iceland 12.25 82.0 \n",
"Australia 14.02 72.0 \n",
"Ireland 4.20 60.0 \n",
"Denmark 2.03 73.0 \n",
"United States 11.30 67.0 \n",
"Norway 2.82 75.0 \n",
"Switzerland 6.72 80.0 \n",
"Luxembourg 3.47 66.0 \n",
"\n",
" Homicide rate Household net adjusted disposable income \\\n",
"Country \n",
"Brazil 25.5 11664.0 \n",
"Mexico 23.4 13085.0 \n",
"Russia 12.8 19292.0 \n",
"Turkey 1.2 14095.0 \n",
"Hungary 1.3 15442.0 \n",
"Poland 0.9 17852.0 \n",
"Chile 4.4 14533.0 \n",
"Slovak Republic 1.2 17503.0 \n",
"Czech Republic 0.8 18404.0 \n",
"Estonia 4.8 15167.0 \n",
"Greece 1.6 18575.0 \n",
"Portugal 1.1 20086.0 \n",
"Slovenia 0.4 19326.0 \n",
"Spain 0.6 22477.0 \n",
"Korea 1.1 19510.0 \n",
"Italy 0.7 25166.0 \n",
"Japan 0.3 26111.0 \n",
"Israel 2.3 22104.0 \n",
"New Zealand 1.2 23815.0 \n",
"France 0.6 28799.0 \n",
"Belgium 1.1 28307.0 \n",
"Germany 0.5 31252.0 \n",
"Finland 1.4 27927.0 \n",
"Canada 1.5 29365.0 \n",
"Netherlands 0.9 27888.0 \n",
"Austria 0.4 31173.0 \n",
"United Kingdom 0.3 27029.0 \n",
"Sweden 0.7 29185.0 \n",
"Iceland 0.3 23965.0 \n",
"Australia 0.8 31588.0 \n",
"Ireland 0.8 23917.0 \n",
"Denmark 0.3 26491.0 \n",
"United States 5.2 41355.0 \n",
"Norway 0.6 33492.0 \n",
"Switzerland 0.5 33491.0 \n",
"Luxembourg 0.4 38951.0 \n",
"\n",
" Household net financial wealth ... \\\n",
"Country ... \n",
"Brazil 6844.0 ... \n",
"Mexico 9056.0 ... \n",
"Russia 3412.0 ... \n",
"Turkey 3251.0 ... \n",
"Hungary 13277.0 ... \n",
"Poland 10919.0 ... \n",
"Chile 17733.0 ... \n",
"Slovak Republic 8663.0 ... \n",
"Czech Republic 17299.0 ... \n",
"Estonia 7680.0 ... \n",
"Greece 14579.0 ... \n",
"Portugal 31245.0 ... \n",
"Slovenia 18465.0 ... \n",
"Spain 24774.0 ... \n",
"Korea 29091.0 ... \n",
"Italy 54987.0 ... \n",
"Japan 86764.0 ... \n",
"Israel 52933.0 ... \n",
"New Zealand 28290.0 ... \n",
"France 48741.0 ... \n",
"Belgium 83876.0 ... \n",
"Germany 50394.0 ... \n",
"Finland 18761.0 ... \n",
"Canada 67913.0 ... \n",
"Netherlands 77961.0 ... \n",
"Austria 49887.0 ... \n",
"United Kingdom 60778.0 ... \n",
"Sweden 60328.0 ... \n",
"Iceland 43045.0 ... \n",
"Australia 47657.0 ... \n",
"Ireland 31580.0 ... \n",
"Denmark 44488.0 ... \n",
"United States 145769.0 ... \n",
"Norway 8797.0 ... \n",
"Switzerland 108823.0 ... \n",
"Luxembourg 61765.0 ... \n",
"\n",
" Time devoted to leisure and personal care Voter turnout \\\n",
"Country \n",
"Brazil 14.97 79.0 \n",
"Mexico 13.89 63.0 \n",
"Russia 14.97 65.0 \n",
"Turkey 13.42 88.0 \n",
"Hungary 15.04 62.0 \n",
"Poland 14.20 55.0 \n",
"Chile 14.41 49.0 \n",
"Slovak Republic 14.99 59.0 \n",
"Czech Republic 14.98 59.0 \n",
"Estonia 14.90 64.0 \n",
"Greece 14.91 64.0 \n",
"Portugal 14.95 58.0 \n",
"Slovenia 14.62 52.0 \n",
"Spain 16.06 69.0 \n",
"Korea 14.63 76.0 \n",
"Italy 14.98 75.0 \n",
"Japan 14.93 53.0 \n",
"Israel 14.48 68.0 \n",
"New Zealand 14.87 77.0 \n",
"France 15.33 80.0 \n",
"Belgium 15.71 89.0 \n",
"Germany 15.31 72.0 \n",
"Finland 14.89 69.0 \n",
"Canada 14.25 61.0 \n",
"Netherlands 15.44 75.0 \n",
"Austria 14.46 75.0 \n",
"United Kingdom 14.83 66.0 \n",
"Sweden 15.11 86.0 \n",
"Iceland 14.61 81.0 \n",
"Australia 14.41 93.0 \n",
"Ireland 15.19 70.0 \n",
"Denmark 16.06 88.0 \n",
"United States 14.27 68.0 \n",
"Norway 15.56 78.0 \n",
"Switzerland 14.98 49.0 \n",
"Luxembourg 15.12 91.0 \n",
"\n",
" Water quality Years in education \\\n",
"Country \n",
"Brazil 72.0 16.3 \n",
"Mexico 67.0 14.4 \n",
"Russia 56.0 16.0 \n",
"Turkey 62.0 16.4 \n",
"Hungary 77.0 17.6 \n",
"Poland 79.0 18.4 \n",
"Chile 73.0 16.5 \n",
"Slovak Republic 81.0 16.3 \n",
"Czech Republic 85.0 18.1 \n",
"Estonia 79.0 17.5 \n",
"Greece 69.0 18.6 \n",
"Portugal 86.0 17.6 \n",
"Slovenia 88.0 18.4 \n",
"Spain 71.0 17.6 \n",
"Korea 78.0 17.5 \n",
"Italy 71.0 16.8 \n",
"Japan 85.0 16.3 \n",
"Israel 68.0 15.8 \n",
"New Zealand 89.0 18.1 \n",
"France 82.0 16.4 \n",
"Belgium 87.0 18.9 \n",
"Germany 95.0 18.2 \n",
"Finland 94.0 19.7 \n",
"Canada 91.0 17.2 \n",
"Netherlands 92.0 18.7 \n",
"Austria 94.0 17.0 \n",
"United Kingdom 88.0 16.4 \n",
"Sweden 95.0 19.3 \n",
"Iceland 97.0 19.8 \n",
"Australia 91.0 19.4 \n",
"Ireland 80.0 17.6 \n",
"Denmark 94.0 19.4 \n",
"United States 85.0 17.2 \n",
"Norway 94.0 17.9 \n",
"Switzerland 96.0 17.3 \n",
"Luxembourg 86.0 15.1 \n",
"\n",
" Subject Descriptor \\\n",
"Country \n",
"Brazil Gross domestic product per capita, current prices \n",
"Mexico Gross domestic product per capita, current prices \n",
"Russia Gross domestic product per capita, current prices \n",
"Turkey Gross domestic product per capita, current prices \n",
"Hungary Gross domestic product per capita, current prices \n",
"Poland Gross domestic product per capita, current prices \n",
"Chile Gross domestic product per capita, current prices \n",
"Slovak Republic Gross domestic product per capita, current prices \n",
"Czech Republic Gross domestic product per capita, current prices \n",
"Estonia Gross domestic product per capita, current prices \n",
"Greece Gross domestic product per capita, current prices \n",
"Portugal Gross domestic product per capita, current prices \n",
"Slovenia Gross domestic product per capita, current prices \n",
"Spain Gross domestic product per capita, current prices \n",
"Korea Gross domestic product per capita, current prices \n",
"Italy Gross domestic product per capita, current prices \n",
"Japan Gross domestic product per capita, current prices \n",
"Israel Gross domestic product per capita, current prices \n",
"New Zealand Gross domestic product per capita, current prices \n",
"France Gross domestic product per capita, current prices \n",
"Belgium Gross domestic product per capita, current prices \n",
"Germany Gross domestic product per capita, current prices \n",
"Finland Gross domestic product per capita, current prices \n",
"Canada Gross domestic product per capita, current prices \n",
"Netherlands Gross domestic product per capita, current prices \n",
"Austria Gross domestic product per capita, current prices \n",
"United Kingdom Gross domestic product per capita, current prices \n",
"Sweden Gross domestic product per capita, current prices \n",
"Iceland Gross domestic product per capita, current prices \n",
"Australia Gross domestic product per capita, current prices \n",
"Ireland Gross domestic product per capita, current prices \n",
"Denmark Gross domestic product per capita, current prices \n",
"United States Gross domestic product per capita, current prices \n",
"Norway Gross domestic product per capita, current prices \n",
"Switzerland Gross domestic product per capita, current prices \n",
"Luxembourg Gross domestic product per capita, current prices \n",
"\n",
" Units Scale \\\n",
"Country \n",
"Brazil U.S. dollars Units \n",
"Mexico U.S. dollars Units \n",
"Russia U.S. dollars Units \n",
"Turkey U.S. dollars Units \n",
"Hungary U.S. dollars Units \n",
"Poland U.S. dollars Units \n",
"Chile U.S. dollars Units \n",
"Slovak Republic U.S. dollars Units \n",
"Czech Republic U.S. dollars Units \n",
"Estonia U.S. dollars Units \n",
"Greece U.S. dollars Units \n",
"Portugal U.S. dollars Units \n",
"Slovenia U.S. dollars Units \n",
"Spain U.S. dollars Units \n",
"Korea U.S. dollars Units \n",
"Italy U.S. dollars Units \n",
"Japan U.S. dollars Units \n",
"Israel U.S. dollars Units \n",
"New Zealand U.S. dollars Units \n",
"France U.S. dollars Units \n",
"Belgium U.S. dollars Units \n",
"Germany U.S. dollars Units \n",
"Finland U.S. dollars Units \n",
"Canada U.S. dollars Units \n",
"Netherlands U.S. dollars Units \n",
"Austria U.S. dollars Units \n",
"United Kingdom U.S. dollars Units \n",
"Sweden U.S. dollars Units \n",
"Iceland U.S. dollars Units \n",
"Australia U.S. dollars Units \n",
"Ireland U.S. dollars Units \n",
"Denmark U.S. dollars Units \n",
"United States U.S. dollars Units \n",
"Norway U.S. dollars Units \n",
"Switzerland U.S. dollars Units \n",
"Luxembourg U.S. dollars Units \n",
"\n",
" Country/Series-specific Notes \\\n",
"Country \n",
"Brazil See notes for: Gross domestic product, curren... \n",
"Mexico See notes for: Gross domestic product, curren... \n",
"Russia See notes for: Gross domestic product, curren... \n",
"Turkey See notes for: Gross domestic product, curren... \n",
"Hungary See notes for: Gross domestic product, curren... \n",
"Poland See notes for: Gross domestic product, curren... \n",
"Chile See notes for: Gross domestic product, curren... \n",
"Slovak Republic See notes for: Gross domestic product, curren... \n",
"Czech Republic See notes for: Gross domestic product, curren... \n",
"Estonia See notes for: Gross domestic product, curren... \n",
"Greece See notes for: Gross domestic product, curren... \n",
"Portugal See notes for: Gross domestic product, curren... \n",
"Slovenia See notes for: Gross domestic product, curren... \n",
"Spain See notes for: Gross domestic product, curren... \n",
"Korea See notes for: Gross domestic product, curren... \n",
"Italy See notes for: Gross domestic product, curren... \n",
"Japan See notes for: Gross domestic product, curren... \n",
"Israel See notes for: Gross domestic product, curren... \n",
"New Zealand See notes for: Gross domestic product, curren... \n",
"France See notes for: Gross domestic product, curren... \n",
"Belgium See notes for: Gross domestic product, curren... \n",
"Germany See notes for: Gross domestic product, curren... \n",
"Finland See notes for: Gross domestic product, curren... \n",
"Canada See notes for: Gross domestic product, curren... \n",
"Netherlands See notes for: Gross domestic product, curren... \n",
"Austria See notes for: Gross domestic product, curren... \n",
"United Kingdom See notes for: Gross domestic product, curren... \n",
"Sweden See notes for: Gross domestic product, curren... \n",
"Iceland See notes for: Gross domestic product, curren... \n",
"Australia See notes for: Gross domestic product, curren... \n",
"Ireland See notes for: Gross domestic product, curren... \n",
"Denmark See notes for: Gross domestic product, curren... \n",
"United States See notes for: Gross domestic product, curren... \n",
"Norway See notes for: Gross domestic product, curren... \n",
"Switzerland See notes for: Gross domestic product, curren... \n",
"Luxembourg See notes for: Gross domestic product, curren... \n",
"\n",
" GDP per capita Estimates Start After \n",
"Country \n",
"Brazil 8669.998 2014.0 \n",
"Mexico 9009.280 2015.0 \n",
"Russia 9054.914 2015.0 \n",
"Turkey 9437.372 2013.0 \n",
"Hungary 12239.894 2015.0 \n",
"Poland 12495.334 2014.0 \n",
"Chile 13340.905 2014.0 \n",
"Slovak Republic 15991.736 2015.0 \n",
"Czech Republic 17256.918 2015.0 \n",
"Estonia 17288.083 2014.0 \n",
"Greece 18064.288 2014.0 \n",
"Portugal 19121.592 2014.0 \n",
"Slovenia 20732.482 2015.0 \n",
"Spain 25864.721 2014.0 \n",
"Korea 27195.197 2014.0 \n",
"Italy 29866.581 2015.0 \n",
"Japan 32485.545 2015.0 \n",
"Israel 35343.336 2015.0 \n",
"New Zealand 37044.891 2015.0 \n",
"France 37675.006 2015.0 \n",
"Belgium 40106.632 2014.0 \n",
"Germany 40996.511 2014.0 \n",
"Finland 41973.988 2014.0 \n",
"Canada 43331.961 2015.0 \n",
"Netherlands 43603.115 2014.0 \n",
"Austria 43724.031 2015.0 \n",
"United Kingdom 43770.688 2015.0 \n",
"Sweden 49866.266 2014.0 \n",
"Iceland 50854.583 2014.0 \n",
"Australia 50961.865 2014.0 \n",
"Ireland 51350.744 2014.0 \n",
"Denmark 52114.165 2015.0 \n",
"United States 55805.204 2015.0 \n",
"Norway 74822.106 2015.0 \n",
"Switzerland 80675.308 2015.0 \n",
"Luxembourg 101994.093 2014.0 \n",
"\n",
"[36 rows x 30 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita, left_index=True, right_index=True)\n",
"full_country_stats.sort_values(by=\"GDP per capita\", inplace=True)\n",
"full_country_stats"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GDP per capita 55805.204\n",
"Life satisfaction 7.200\n",
"Name: United States, dtype: float64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_country_stats[[\"GDP per capita\", 'Life satisfaction']].loc[\"United States\"]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"remove_indices = [0, 1, 6, 8, 33, 34, 35]\n",
"keep_indices = list(set(range(36)) - set(remove_indices))\n",
"\n",
"sample_data = full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[keep_indices]\n",
"missing_data = full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[remove_indices]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure money_happy_scatterplot\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3))\n",
"plt.axis([0, 60000, 0, 10])\n",
"position_text = {\n",
" \"Hungary\": (5000, 1),\n",
" \"Korea\": (18000, 1.7),\n",
" \"France\": (29000, 2.4),\n",
" \"Australia\": (40000, 3.0),\n",
" \"United States\": (52000, 3.8),\n",
"}\n",
"for country, pos_text in position_text.items():\n",
" pos_data_x, pos_data_y = sample_data.loc[country]\n",
" country = \"U.S.\" if country == \"United States\" else country\n",
" plt.annotate(country, xy=(pos_data_x, pos_data_y), xytext=pos_text,\n",
" arrowprops=dict(facecolor='black', width=0.5, shrink=0.1, headwidth=5))\n",
" plt.plot(pos_data_x, pos_data_y, \"ro\")\n",
"save_fig('money_happy_scatterplot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"sample_data.to_csv(os.path.join(\"datasets\", \"lifesat\", \"lifesat.csv\"))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>GDP per capita</th>\n",
" <th>Life satisfaction</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Hungary</th>\n",
" <td>12239.894</td>\n",
" <td>4.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Korea</th>\n",
" <td>27195.197</td>\n",
" <td>5.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>France</th>\n",
" <td>37675.006</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Australia</th>\n",
" <td>50961.865</td>\n",
" <td>7.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>United States</th>\n",
" <td>55805.204</td>\n",
" <td>7.2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita Life satisfaction\n",
"Country \n",
"Hungary 12239.894 4.9\n",
"Korea 27195.197 5.8\n",
"France 37675.006 6.5\n",
"Australia 50961.865 7.3\n",
"United States 55805.204 7.2"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sample_data.loc[list(position_text.keys())]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure tweaking_model_params_plot\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"\n",
"sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3))\n",
"plt.axis([0, 60000, 0, 10])\n",
"X=np.linspace(0, 60000, 1000)\n",
"plt.plot(X, 2*X/100000, \"r\")\n",
"plt.text(40000, 2.7, r\"$\\theta_0 = 0$\", fontsize=14, color=\"r\")\n",
"plt.text(40000, 1.8, r\"$\\theta_1 = 2 \\times 10^{-5}$\", fontsize=14, color=\"r\")\n",
"plt.plot(X, 8 - 5*X/100000, \"g\")\n",
"plt.text(5000, 9.1, r\"$\\theta_0 = 8$\", fontsize=14, color=\"g\")\n",
"plt.text(5000, 8.2, r\"$\\theta_1 = -5 \\times 10^{-5}$\", fontsize=14, color=\"g\")\n",
"plt.plot(X, 4 + 5*X/100000, \"b\")\n",
"plt.text(5000, 3.5, r\"$\\theta_0 = 4$\", fontsize=14, color=\"b\")\n",
"plt.text(5000, 2.6, r\"$\\theta_1 = 5 \\times 10^{-5}$\", fontsize=14, color=\"b\")\n",
"save_fig('tweaking_model_params_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4.853052800266436, 4.911544589158483e-05)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn import linear_model\n",
"lin1 = linear_model.LinearRegression()\n",
"Xsample = np.c_[sample_data[\"GDP per capita\"]]\n",
"ysample = np.c_[sample_data[\"Life satisfaction\"]]\n",
"lin1.fit(Xsample, ysample)\n",
"t0, t1 = lin1.intercept_[0], lin1.coef_[0][0]\n",
"t0, t1"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure best_fit_model_plot\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3))\n",
"plt.axis([0, 60000, 0, 10])\n",
"X=np.linspace(0, 60000, 1000)\n",
"plt.plot(X, t0 + t1*X, \"b\")\n",
"plt.text(5000, 3.1, r\"$\\theta_0 = 4.85$\", fontsize=14, color=\"b\")\n",
"plt.text(5000, 2.2, r\"$\\theta_1 = 4.91 \\times 10^{-5}$\", fontsize=14, color=\"b\")\n",
"save_fig('best_fit_model_plot')\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"22587.49\n"
]
},
{
"data": {
"text/plain": [
"5.96244744318815"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cyprus_gdp_per_capita = gdp_per_capita.loc[\"Cyprus\"][\"GDP per capita\"]\n",
"print(cyprus_gdp_per_capita)\n",
"cyprus_predicted_life_satisfaction = lin1.predict(cyprus_gdp_per_capita)[0][0]\n",
"cyprus_predicted_life_satisfaction"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure cyprus_prediction_plot\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3), s=1)\n",
"X=np.linspace(0, 60000, 1000)\n",
"plt.plot(X, t0 + t1*X, \"b\")\n",
"plt.axis([0, 60000, 0, 10])\n",
"plt.text(5000, 7.5, r\"$\\theta_0 = 4.85$\", fontsize=14, color=\"b\")\n",
"plt.text(5000, 6.6, r\"$\\theta_1 = 4.91 \\times 10^{-5}$\", fontsize=14, color=\"b\")\n",
"plt.plot([cyprus_gdp_per_capita, cyprus_gdp_per_capita], [0, cyprus_predicted_life_satisfaction], \"r--\")\n",
"plt.text(25000, 5.0, r\"Prediction = 5.96\", fontsize=14, color=\"b\")\n",
"plt.plot(cyprus_gdp_per_capita, cyprus_predicted_life_satisfaction, \"ro\")\n",
"save_fig('cyprus_prediction_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"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>GDP per capita</th>\n",
" <th>Life satisfaction</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Portugal</th>\n",
" <td>19121.592</td>\n",
" <td>5.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Slovenia</th>\n",
" <td>20732.482</td>\n",
" <td>5.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Spain</th>\n",
" <td>25864.721</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita Life satisfaction\n",
"Country \n",
"Portugal 19121.592 5.1\n",
"Slovenia 20732.482 5.7\n",
"Spain 25864.721 6.5"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sample_data[7:10]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.766666666666667"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(5.1+5.7+6.5)/3"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"backup = oecd_bli, gdp_per_capita\n",
"\n",
"def prepare_country_stats(oecd_bli, gdp_per_capita):\n",
" oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n",
" oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n",
" gdp_per_capita.rename(columns={\"2015\": \"GDP per capita\"}, inplace=True)\n",
" gdp_per_capita.set_index(\"Country\", inplace=True)\n",
" full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita,\n",
" left_index=True, right_index=True)\n",
" full_country_stats.sort_values(by=\"GDP per capita\", inplace=True)\n",
" remove_indices = [0, 1, 6, 8, 33, 34, 35]\n",
" keep_indices = list(set(range(36)) - set(remove_indices))\n",
" return full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[keep_indices]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[5.96242338]]\n"
]
}
],
"source": [
"# Code example\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import sklearn\n",
"\n",
"# Load the data\n",
"oecd_bli = pd.read_csv(datapath + \"oecd_bli_2015.csv\", thousands=',')\n",
"gdp_per_capita = pd.read_csv(datapath + \"gdp_per_capita.csv\",thousands=',',delimiter='\\t',\n",
" encoding='latin1', na_values=\"n/a\")\n",
"\n",
"# Prepare the data\n",
"country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)\n",
"X = np.c_[country_stats[\"GDP per capita\"]]\n",
"y = np.c_[country_stats[\"Life satisfaction\"]]\n",
"\n",
"# Visualize the data\n",
"country_stats.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction')\n",
"plt.show()\n",
"\n",
"# Select a linear model\n",
"model = sklearn.linear_model.LinearRegression()\n",
"\n",
"# Train the model\n",
"model.fit(X, y)\n",
"\n",
"# Make a prediction for Cyprus\n",
"X_new = [[22587]] # Cyprus' GDP per capita\n",
"print(model.predict(X_new)) # outputs [[ 5.96242338]]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"oecd_bli, gdp_per_capita = backup"
]
},
{
"cell_type": "code",
"execution_count": 24,
"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>GDP per capita</th>\n",
" <th>Life satisfaction</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Brazil</th>\n",
" <td>8669.998</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mexico</th>\n",
" <td>9009.280</td>\n",
" <td>6.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chile</th>\n",
" <td>13340.905</td>\n",
" <td>6.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Czech Republic</th>\n",
" <td>17256.918</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Norway</th>\n",
" <td>74822.106</td>\n",
" <td>7.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Switzerland</th>\n",
" <td>80675.308</td>\n",
" <td>7.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Luxembourg</th>\n",
" <td>101994.093</td>\n",
" <td>6.9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" GDP per capita Life satisfaction\n",
"Country \n",
"Brazil 8669.998 7.0\n",
"Mexico 9009.280 6.7\n",
"Chile 13340.905 6.7\n",
"Czech Republic 17256.918 6.5\n",
"Norway 74822.106 7.4\n",
"Switzerland 80675.308 7.5\n",
"Luxembourg 101994.093 6.9"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"missing_data"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"position_text2 = {\n",
" \"Brazil\": (1000, 9.0),\n",
" \"Mexico\": (11000, 9.0),\n",
" \"Chile\": (25000, 9.0),\n",
" \"Czech Republic\": (35000, 9.0),\n",
" \"Norway\": (60000, 3),\n",
" \"Switzerland\": (72000, 3.0),\n",
" \"Luxembourg\": (90000, 3.0),\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure representative_training_data_scatterplot\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(8,3))\n",
"plt.axis([0, 110000, 0, 10])\n",
"\n",
"for country, pos_text in position_text2.items():\n",
" pos_data_x, pos_data_y = missing_data.loc[country]\n",
" plt.annotate(country, xy=(pos_data_x, pos_data_y), xytext=pos_text,\n",
" arrowprops=dict(facecolor='black', width=0.5, shrink=0.1, headwidth=5))\n",
" plt.plot(pos_data_x, pos_data_y, \"rs\")\n",
"\n",
"X=np.linspace(0, 110000, 1000)\n",
"plt.plot(X, t0 + t1*X, \"b:\")\n",
"\n",
"lin_reg_full = linear_model.LinearRegression()\n",
"Xfull = np.c_[full_country_stats[\"GDP per capita\"]]\n",
"yfull = np.c_[full_country_stats[\"Life satisfaction\"]]\n",
"lin_reg_full.fit(Xfull, yfull)\n",
"\n",
"t0full, t1full = lin_reg_full.intercept_[0], lin_reg_full.coef_[0][0]\n",
"X = np.linspace(0, 110000, 1000)\n",
"plt.plot(X, t0full + t1full * X, \"k\")\n",
"\n",
"save_fig('representative_training_data_scatterplot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.6/site-packages/numpy/core/_methods.py:116: RuntimeWarning: overflow encountered in multiply\n",
" x = um.multiply(x, x, out=x)\n",
"/opt/conda/lib/python3.6/site-packages/numpy/core/_methods.py:117: RuntimeWarning: overflow encountered in reduce\n",
" ret = umr_sum(x, axis, dtype, out, keepdims)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure overfitting_model_plot\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"full_country_stats.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(8,3))\n",
"plt.axis([0, 110000, 0, 10])\n",
"\n",
"from sklearn import preprocessing\n",
"from sklearn import pipeline\n",
"\n",
"poly = preprocessing.PolynomialFeatures(degree=60, include_bias=False)\n",
"scaler = preprocessing.StandardScaler()\n",
"lin_reg2 = linear_model.LinearRegression()\n",
"\n",
"pipeline_reg = pipeline.Pipeline([('poly', poly), ('scal', scaler), ('lin', lin_reg2)])\n",
"pipeline_reg.fit(Xfull, yfull)\n",
"curve = pipeline_reg.predict(X[:, np.newaxis])\n",
"plt.plot(X, curve)\n",
"save_fig('overfitting_model_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Country\n",
"New Zealand 7.3\n",
"Sweden 7.2\n",
"Norway 7.4\n",
"Switzerland 7.5\n",
"Name: Life satisfaction, dtype: float64"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_country_stats.loc[[c for c in full_country_stats.index if \"W\" in c.upper()]][\"Life satisfaction\"]"
]
},
{
"cell_type": "code",
"execution_count": 29,
"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>Subject Descriptor</th>\n",
" <th>Units</th>\n",
" <th>Scale</th>\n",
" <th>Country/Series-specific Notes</th>\n",
" <th>GDP per capita</th>\n",
" <th>Estimates Start After</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Country</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>Botswana</th>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>6040.957</td>\n",
" <td>2008.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kuwait</th>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>29363.027</td>\n",
" <td>2014.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Malawi</th>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>354.275</td>\n",
" <td>2011.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>New Zealand</th>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>37044.891</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Norway</th>\n",
" <td>Gross domestic product per capita, current prices</td>\n",
" <td>U.S. dollars</td>\n",
" <td>Units</td>\n",
" <td>See notes for: Gross domestic product, curren...</td>\n",
" <td>74822.106</td>\n",
" <td>2015.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Subject Descriptor Units \\\n",
"Country \n",
"Botswana Gross domestic product per capita, current prices U.S. dollars \n",
"Kuwait Gross domestic product per capita, current prices U.S. dollars \n",
"Malawi Gross domestic product per capita, current prices U.S. dollars \n",
"New Zealand Gross domestic product per capita, current prices U.S. dollars \n",
"Norway Gross domestic product per capita, current prices U.S. dollars \n",
"\n",
" Scale Country/Series-specific Notes \\\n",
"Country \n",
"Botswana Units See notes for: Gross domestic product, curren... \n",
"Kuwait Units See notes for: Gross domestic product, curren... \n",
"Malawi Units See notes for: Gross domestic product, curren... \n",
"New Zealand Units See notes for: Gross domestic product, curren... \n",
"Norway Units See notes for: Gross domestic product, curren... \n",
"\n",
" GDP per capita Estimates Start After \n",
"Country \n",
"Botswana 6040.957 2008.0 \n",
"Kuwait 29363.027 2014.0 \n",
"Malawi 354.275 2011.0 \n",
"New Zealand 37044.891 2015.0 \n",
"Norway 74822.106 2015.0 "
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdp_per_capita.loc[[c for c in gdp_per_capita.index if \"W\" in c.upper()]].head()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure ridge_model_plot\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(8,3))\n",
"\n",
"plt.xlabel(\"GDP per capita\")\n",
"plt.ylabel('Life satisfaction')\n",
"\n",
"plt.plot(list(sample_data[\"GDP per capita\"]), list(sample_data[\"Life satisfaction\"]), \"bo\")\n",
"plt.plot(list(missing_data[\"GDP per capita\"]), list(missing_data[\"Life satisfaction\"]), \"rs\")\n",
"\n",
"X = np.linspace(0, 110000, 1000)\n",
"plt.plot(X, t0full + t1full * X, \"r--\", label=\"Linear model on all data\")\n",
"plt.plot(X, t0 + t1*X, \"b:\", label=\"Linear model on partial data\")\n",
"\n",
"ridge = linear_model.Ridge(alpha=10**9.5)\n",
"Xsample = np.c_[sample_data[\"GDP per capita\"]]\n",
"ysample = np.c_[sample_data[\"Life satisfaction\"]]\n",
"ridge.fit(Xsample, ysample)\n",
"t0ridge, t1ridge = ridge.intercept_[0], ridge.coef_[0][0]\n",
"plt.plot(X, t0ridge + t1ridge * X, \"b\", label=\"Regularized linear model on partial data\")\n",
"\n",
"plt.legend(loc=\"lower right\")\n",
"plt.axis([0, 110000, 0, 10])\n",
"save_fig('ridge_model_plot')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"backup = oecd_bli, gdp_per_capita\n",
"\n",
"def prepare_country_stats(oecd_bli, gdp_per_capita):\n",
" return sample_data"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# Replace this linear model:\n",
"model = sklearn.linear_model.LinearRegression()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"# with this k-neighbors regression model:\n",
"model = sklearn.neighbors.KNeighborsRegressor(n_neighbors=3)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[5.76666667]]\n"
]
}
],
"source": [
"X = np.c_[country_stats[\"GDP per capita\"]]\n",
"y = np.c_[country_stats[\"Life satisfaction\"]]\n",
"\n",
"# Train the model\n",
"model.fit(X, y)\n",
"\n",
"# Make a prediction for Cyprus\n",
"X_new = np.array([[22587.0]]) # Cyprus' GDP per capita\n",
"print(model.predict(X_new)) # outputs [[ 5.76666667]]"
]
},
{
"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.5"
},
"nav_menu": {},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {
"height": "calc(100% - 180px)",
"left": "10px",
"top": "150px",
"width": "195px"
},
"toc_section_display": "block",
"toc_window_display": true
},
"toc_position": {
"height": "616px",
"left": "0px",
"right": "20px",
"top": "106px",
"width": "213px"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment