kiva-dig/Basic Prediction.ipynb

3727 line
149 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from pyspark.sql import SQLContext\n",
"\n",
"LOCAL_PATH = 'file:///Users/Karl-Loic/Documents/Columbia-University/Fall-2016/Big-Data-Analytics/final-project/kiva-dig/'"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"sql_ctx = SQLContext(sc)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# TODO: Create permanent database tables for reuse\n",
"# Remove previously created metastore DB\n",
"import os, shutil\n",
"\n",
"if os.path.exists(LOCAL_PATH + 'metastore_db/'):\n",
" shutil.rmtree('metastore_db/')\n",
"loans = sql_ctx.read.json(LOCAL_PATH + 'kiva-data/loans.json')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1014130"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"loans.count()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"root\n",
" |-- activity: string (nullable = true)\n",
" |-- basket_amount: long (nullable = true)\n",
" |-- bonus_credit_eligibility: boolean (nullable = true)\n",
" |-- borrowers: array (nullable = true)\n",
" | |-- element: struct (containsNull = true)\n",
" | | |-- first_name: string (nullable = true)\n",
" | | |-- gender: string (nullable = true)\n",
" | | |-- last_name: string (nullable = true)\n",
" | | |-- pictured: boolean (nullable = true)\n",
" |-- currency_exchange_loss_amount: double (nullable = true)\n",
" |-- delinquent: boolean (nullable = true)\n",
" |-- description: struct (nullable = true)\n",
" | |-- languages: array (nullable = true)\n",
" | | |-- element: string (containsNull = true)\n",
" | |-- texts: struct (nullable = true)\n",
" | | |-- ar: string (nullable = true)\n",
" | | |-- en: string (nullable = true)\n",
" | | |-- es: string (nullable = true)\n",
" | | |-- fr: string (nullable = true)\n",
" | | |-- id: string (nullable = true)\n",
" | | |-- mn: string (nullable = true)\n",
" | | |-- pt: string (nullable = true)\n",
" | | |-- ru: string (nullable = true)\n",
" | | |-- vi: string (nullable = true)\n",
" |-- funded_amount: long (nullable = true)\n",
" |-- funded_date: string (nullable = true)\n",
" |-- id: long (nullable = true)\n",
" |-- image: struct (nullable = true)\n",
" | |-- id: long (nullable = true)\n",
" | |-- template_id: long (nullable = true)\n",
" |-- journal_totals: struct (nullable = true)\n",
" | |-- bulkEntries: long (nullable = true)\n",
" | |-- entries: long (nullable = true)\n",
" |-- lender_count: long (nullable = true)\n",
" |-- loan_amount: long (nullable = true)\n",
" |-- location: struct (nullable = true)\n",
" | |-- country: string (nullable = true)\n",
" | |-- country_code: string (nullable = true)\n",
" | |-- geo: struct (nullable = true)\n",
" | | |-- level: string (nullable = true)\n",
" | | |-- pairs: string (nullable = true)\n",
" | | |-- type: string (nullable = true)\n",
" | |-- town: string (nullable = true)\n",
" |-- name: string (nullable = true)\n",
" |-- paid_amount: double (nullable = true)\n",
" |-- paid_date: string (nullable = true)\n",
" |-- partner_id: long (nullable = true)\n",
" |-- payments: array (nullable = true)\n",
" | |-- element: struct (containsNull = true)\n",
" | | |-- amount: double (nullable = true)\n",
" | | |-- currency_exchange_loss_amount: double (nullable = true)\n",
" | | |-- local_amount: double (nullable = true)\n",
" | | |-- payment_id: long (nullable = true)\n",
" | | |-- processed_date: string (nullable = true)\n",
" | | |-- rounded_local_amount: double (nullable = true)\n",
" | | |-- settlement_date: string (nullable = true)\n",
" |-- planned_expiration_date: string (nullable = true)\n",
" |-- posted_date: string (nullable = true)\n",
" |-- sector: string (nullable = true)\n",
" |-- status: string (nullable = true)\n",
" |-- tags: array (nullable = true)\n",
" | |-- element: struct (containsNull = true)\n",
" | | |-- name: string (nullable = true)\n",
" |-- terms: struct (nullable = true)\n",
" | |-- disbursal_amount: double (nullable = true)\n",
" | |-- disbursal_currency: string (nullable = true)\n",
" | |-- disbursal_date: string (nullable = true)\n",
" | |-- loan_amount: long (nullable = true)\n",
" | |-- local_payments: array (nullable = true)\n",
" | | |-- element: struct (containsNull = true)\n",
" | | | |-- amount: double (nullable = true)\n",
" | | | |-- due_date: string (nullable = true)\n",
" | |-- loss_liability: struct (nullable = true)\n",
" | | |-- currency_exchange: string (nullable = true)\n",
" | | |-- currency_exchange_coverage_rate: double (nullable = true)\n",
" | | |-- nonpayment: string (nullable = true)\n",
" | |-- repayment_interval: string (nullable = true)\n",
" | |-- repayment_term: long (nullable = true)\n",
" | |-- scheduled_payments: array (nullable = true)\n",
" | | |-- element: struct (containsNull = true)\n",
" | | | |-- amount: double (nullable = true)\n",
" | | | |-- due_date: string (nullable = true)\n",
" |-- themes: array (nullable = true)\n",
" | |-- element: string (containsNull = true)\n",
" |-- translator: struct (nullable = true)\n",
" | |-- byline: string (nullable = true)\n",
" | |-- image: long (nullable = true)\n",
" |-- use: string (nullable = true)\n",
" |-- video: struct (nullable = true)\n",
" | |-- id: long (nullable = true)\n",
" | |-- thumbnailImageId: long (nullable = true)\n",
" | |-- title: string (nullable = true)\n",
" | |-- youtubeId: string (nullable = true)\n",
"\n"
]
}
],
"source": [
"loans.printSchema()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[Row(activity=u'Clothing Sales', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=None, use=u'Compra de ropa dama, caballero y ni\\xf1o.', tags=[], status=u'deleted', delinquent=None),\n",
" Row(activity=u'Food Production/Sales', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=u'2007-03-15T04:52:22Z', use=u'Working capital', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Food Production/Sales', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=u'2007-05-17T22:02:42Z', use=u'Sell bread at the local market', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Clothing Sales', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=u'2007-07-20T16:35:52Z', use=u'To buy more clothes and baby things for sale', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Livestock', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=u'2007-09-20T02:55:18Z', use=u'Lohoure Odio will use the loan to purchase pigs for meat sales', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Construction', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=u'2007-11-02T23:38:36Z', use=u'buy a welding machine', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Cereals', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=u'2007-12-13T18:22:55Z', use=u'To buy rice for resale', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Taxi', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'1.0', disbursal_date=u'2008-01-11T20:44:52Z', use=u'Taxi repairs and repainting', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Used Clothing', basket_amount=None, num_borrowers=4, male_proportion(borrowers)=u'0.0', disbursal_date=u'2008-04-19T14:11:32Z', use=u'to invest in their businesses', tags=[], status=u'paid', delinquent=None),\n",
" Row(activity=u'Home Products Sales', basket_amount=None, num_borrowers=1, male_proportion(borrowers)=u'0.0', disbursal_date=u'2008-03-10T22:53:27Z', use=u'Edith needs a loan of 1000 soles (3 soles = $1), which she will use to buy more kitchen appliances.', tags=[], status=u'paid', delinquent=None)]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"loans.registerTempTable(\"loans\")\n",
"\n",
"def male_proportion(borrowers):\n",
" num_males = 0\n",
" for item in borrowers:\n",
" if item.gender == 'M':\n",
" num_males += 1\n",
" \n",
" return num_males/ float(len(borrowers))\n",
"\n",
"sql_ctx.registerFunction('male_proportion', male_proportion)\n",
"\n",
"bad_loans = sql_ctx.sql(\"\"\"\n",
"SELECT \n",
" activity, \n",
" basket_amount,\n",
" size(borrowers) as num_borrowers,\n",
" male_proportion(borrowers),\n",
" terms.disbursal_date,\n",
" \n",
" use,\n",
" tags,\n",
" status,\n",
" delinquent\n",
"FROM loans\n",
"LIMIT 10\n",
"\"\"\")\n",
"\n",
"bad_loans.collect()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[Row(status=u'refunded', count(1)=5504),\n",
" Row(status=u'defaulted', count(1)=21776),\n",
" Row(status=u'in_repayment', count(1)=155748),\n",
" Row(status=u'reviewed', count(1)=3),\n",
" Row(status=u'deleted', count(1)=2722),\n",
" Row(status=u'paid', count(1)=775330),\n",
" Row(status=u'issue', count(1)=199),\n",
" Row(status=u'inactive_expired', count(1)=12421),\n",
" Row(status=u'fundraising', count(1)=3986),\n",
" Row(status=u'expired', count(1)=33773)]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sql_ctx.sql(\"\"\"\n",
"SELECT\n",
" status,\n",
" COUNT(*)\n",
"FROM loans\n",
"GROUP BY status\n",
"LIMIT 10\n",
"\"\"\").collect()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Starts Here - GDP"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Datasets sources\n",
"1. Country codes - https://github.com/datasets/country-codes/tree/master/data\n",
"2. GDP Data - http://data.worldbank.org/indicator/NY.GDP.MKTP.CD"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"from datetime import datetime\n",
"import numpy as np\n",
"import math\n",
"\n",
"\n",
"# Load country info data\n",
"country_codes_raw = pd.read_csv(LOCAL_PATH + 'economic-data/country-codes.csv')\n",
"country_gdp_raw = pd.read_csv(LOCAL_PATH + 'economic-data/country-gdp.csv')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>official_name_en</th>\n",
" <th>official_name_fr</th>\n",
" <th>ISO3166-1-Alpha-2</th>\n",
" <th>ISO3166-1-Alpha-3</th>\n",
" <th>ISO3166-1-numeric</th>\n",
" <th>ITU</th>\n",
" <th>MARC</th>\n",
" <th>WMO</th>\n",
" <th>DS</th>\n",
" <th>...</th>\n",
" <th>ISO4217-currency_minor_unit</th>\n",
" <th>ISO4217-currency_name</th>\n",
" <th>ISO4217-currency_numeric_code</th>\n",
" <th>is_independent</th>\n",
" <th>Capital</th>\n",
" <th>Continent</th>\n",
" <th>TLD</th>\n",
" <th>Languages</th>\n",
" <th>geonameid</th>\n",
" <th>EDGAR</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NaN</td>\n",
" <td>Channel Islands</td>\n",
" <td>Îles Anglo-Normandes</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>830</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NaN</td>\n",
" <td>Sark</td>\n",
" <td>Sercq</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>680</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan</td>\n",
" <td>Afghanistan</td>\n",
" <td>Afghanistan</td>\n",
" <td>AF</td>\n",
" <td>AFG</td>\n",
" <td>4</td>\n",
" <td>AFG</td>\n",
" <td>af</td>\n",
" <td>AF</td>\n",
" <td>AFG</td>\n",
" <td>...</td>\n",
" <td>2.0</td>\n",
" <td>Afghani</td>\n",
" <td>971.0</td>\n",
" <td>Yes</td>\n",
" <td>Kabul</td>\n",
" <td>AS</td>\n",
" <td>.af</td>\n",
" <td>fa-AF,ps,uz-AF,tk</td>\n",
" <td>1149361.0</td>\n",
" <td>B2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Albania</td>\n",
" <td>Albania</td>\n",
" <td>Albanie</td>\n",
" <td>AL</td>\n",
" <td>ALB</td>\n",
" <td>8</td>\n",
" <td>ALB</td>\n",
" <td>aa</td>\n",
" <td>AB</td>\n",
" <td>AL</td>\n",
" <td>...</td>\n",
" <td>2.0</td>\n",
" <td>Lek</td>\n",
" <td>8.0</td>\n",
" <td>Yes</td>\n",
" <td>Tirana</td>\n",
" <td>EU</td>\n",
" <td>.al</td>\n",
" <td>sq,el</td>\n",
" <td>783754.0</td>\n",
" <td>B3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Algeria</td>\n",
" <td>Algeria</td>\n",
" <td>Algérie</td>\n",
" <td>DZ</td>\n",
" <td>DZA</td>\n",
" <td>12</td>\n",
" <td>ALG</td>\n",
" <td>ae</td>\n",
" <td>AL</td>\n",
" <td>DZ</td>\n",
" <td>...</td>\n",
" <td>2.0</td>\n",
" <td>Algerian Dinar</td>\n",
" <td>12.0</td>\n",
" <td>Yes</td>\n",
" <td>Algiers</td>\n",
" <td>AF</td>\n",
" <td>.dz</td>\n",
" <td>ar-DZ</td>\n",
" <td>2589581.0</td>\n",
" <td>B4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 27 columns</p>\n",
"</div>"
],
"text/plain": [
" name official_name_en official_name_fr ISO3166-1-Alpha-2 \\\n",
"0 NaN Channel Islands Îles Anglo-Normandes NaN \n",
"1 NaN Sark Sercq NaN \n",
"2 Afghanistan Afghanistan Afghanistan AF \n",
"3 Albania Albania Albanie AL \n",
"4 Algeria Algeria Algérie DZ \n",
"\n",
" ISO3166-1-Alpha-3 ISO3166-1-numeric ITU MARC WMO DS ... \\\n",
"0 NaN 830 NaN NaN NaN NaN ... \n",
"1 NaN 680 NaN NaN NaN NaN ... \n",
"2 AFG 4 AFG af AF AFG ... \n",
"3 ALB 8 ALB aa AB AL ... \n",
"4 DZA 12 ALG ae AL DZ ... \n",
"\n",
" ISO4217-currency_minor_unit ISO4217-currency_name \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 2.0 Afghani \n",
"3 2.0 Lek \n",
"4 2.0 Algerian Dinar \n",
"\n",
" ISO4217-currency_numeric_code is_independent Capital Continent TLD \\\n",
"0 NaN NaN NaN NaN NaN \n",
"1 NaN NaN NaN NaN NaN \n",
"2 971.0 Yes Kabul AS .af \n",
"3 8.0 Yes Tirana EU .al \n",
"4 12.0 Yes Algiers AF .dz \n",
"\n",
" Languages geonameid EDGAR \n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 fa-AF,ps,uz-AF,tk 1149361.0 B2 \n",
"3 sq,el 783754.0 B3 \n",
"4 ar-DZ 2589581.0 B4 \n",
"\n",
"[5 rows x 27 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"country_codes_raw.head()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Series Name</th>\n",
" <th>Series Code</th>\n",
" <th>Country Name</th>\n",
" <th>Country Code</th>\n",
" <th>2002 [YR2002]</th>\n",
" <th>2003 [YR2003]</th>\n",
" <th>2004 [YR2004]</th>\n",
" <th>2005 [YR2005]</th>\n",
" <th>2006 [YR2006]</th>\n",
" <th>2007 [YR2007]</th>\n",
" <th>2008 [YR2008]</th>\n",
" <th>2009 [YR2009]</th>\n",
" <th>2010 [YR2010]</th>\n",
" <th>2011 [YR2011]</th>\n",
" <th>2012 [YR2012]</th>\n",
" <th>2013 [YR2013]</th>\n",
" <th>2014 [YR2014]</th>\n",
" <th>2015 [YR2015]</th>\n",
" <th>2016 [YR2016]</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>GDP per capita (current US$)</td>\n",
" <td>NY.GDP.PCAP.CD</td>\n",
" <td>Afghanistan</td>\n",
" <td>AFG</td>\n",
" <td>192.153528278789</td>\n",
" <td>203.651040923182</td>\n",
" <td>224.914712193371</td>\n",
" <td>257.175794656273</td>\n",
" <td>280.245644106914</td>\n",
" <td>380.400955186598</td>\n",
" <td>384.131681276838</td>\n",
" <td>458.955781585831</td>\n",
" <td>569.940728793286</td>\n",
" <td>622.379654358451</td>\n",
" <td>690.842629014956</td>\n",
" <td>653.347488111011</td>\n",
" <td>633.947864294639</td>\n",
" <td>590.269515382605</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>GDP per capita (current US$)</td>\n",
" <td>NY.GDP.PCAP.CD</td>\n",
" <td>Albania</td>\n",
" <td>ALB</td>\n",
" <td>1453.64277660853</td>\n",
" <td>1890.68155743544</td>\n",
" <td>2416.5882350701</td>\n",
" <td>2709.14293056201</td>\n",
" <td>3005.0129033756</td>\n",
" <td>3603.01368536638</td>\n",
" <td>4370.53964653148</td>\n",
" <td>4114.13654490945</td>\n",
" <td>4094.35883191918</td>\n",
" <td>4437.8119990258</td>\n",
" <td>4247.83985201907</td>\n",
" <td>4412.34557813421</td>\n",
" <td>4588.64944014811</td>\n",
" <td>3965.01680558488</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>GDP per capita (current US$)</td>\n",
" <td>NY.GDP.PCAP.CD</td>\n",
" <td>Algeria</td>\n",
" <td>DZA</td>\n",
" <td>1774.29202079911</td>\n",
" <td>2094.89330213298</td>\n",
" <td>2600.00651972559</td>\n",
" <td>3102.03738422673</td>\n",
" <td>3467.54474008596</td>\n",
" <td>3939.55993939808</td>\n",
" <td>4912.25194081995</td>\n",
" <td>3875.82209542426</td>\n",
" <td>4473.48644568115</td>\n",
" <td>5447.40397556569</td>\n",
" <td>5583.61615950131</td>\n",
" <td>5491.6144135648</td>\n",
" <td>5484.0668056148</td>\n",
" <td>4206.03123244958</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>GDP per capita (current US$)</td>\n",
" <td>NY.GDP.PCAP.CD</td>\n",
" <td>American Samoa</td>\n",
" <td>ASM</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>GDP per capita (current US$)</td>\n",
" <td>NY.GDP.PCAP.CD</td>\n",
" <td>Andorra</td>\n",
" <td>ADO</td>\n",
" <td>24175.3727542522</td>\n",
" <td>31742.9925847537</td>\n",
" <td>37235.4500323146</td>\n",
" <td>39990.3304085679</td>\n",
" <td>42417.2291456984</td>\n",
" <td>47253.5297963111</td>\n",
" <td>46735.9995745016</td>\n",
" <td>42701.447136255</td>\n",
" <td>39639.386021211</td>\n",
" <td>41630.0525792977</td>\n",
" <td>39666.3692147448</td>\n",
" <td>42806.5224483021</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Series Name Series Code Country Name Country Code \\\n",
"0 GDP per capita (current US$) NY.GDP.PCAP.CD Afghanistan AFG \n",
"1 GDP per capita (current US$) NY.GDP.PCAP.CD Albania ALB \n",
"2 GDP per capita (current US$) NY.GDP.PCAP.CD Algeria DZA \n",
"3 GDP per capita (current US$) NY.GDP.PCAP.CD American Samoa ASM \n",
"4 GDP per capita (current US$) NY.GDP.PCAP.CD Andorra ADO \n",
"\n",
" 2002 [YR2002] 2003 [YR2003] 2004 [YR2004] 2005 [YR2005] \\\n",
"0 192.153528278789 203.651040923182 224.914712193371 257.175794656273 \n",
"1 1453.64277660853 1890.68155743544 2416.5882350701 2709.14293056201 \n",
"2 1774.29202079911 2094.89330213298 2600.00651972559 3102.03738422673 \n",
"3 .. .. .. .. \n",
"4 24175.3727542522 31742.9925847537 37235.4500323146 39990.3304085679 \n",
"\n",
" 2006 [YR2006] 2007 [YR2007] 2008 [YR2008] 2009 [YR2009] \\\n",
"0 280.245644106914 380.400955186598 384.131681276838 458.955781585831 \n",
"1 3005.0129033756 3603.01368536638 4370.53964653148 4114.13654490945 \n",
"2 3467.54474008596 3939.55993939808 4912.25194081995 3875.82209542426 \n",
"3 .. .. .. .. \n",
"4 42417.2291456984 47253.5297963111 46735.9995745016 42701.447136255 \n",
"\n",
" 2010 [YR2010] 2011 [YR2011] 2012 [YR2012] 2013 [YR2013] \\\n",
"0 569.940728793286 622.379654358451 690.842629014956 653.347488111011 \n",
"1 4094.35883191918 4437.8119990258 4247.83985201907 4412.34557813421 \n",
"2 4473.48644568115 5447.40397556569 5583.61615950131 5491.6144135648 \n",
"3 .. .. .. .. \n",
"4 39639.386021211 41630.0525792977 39666.3692147448 42806.5224483021 \n",
"\n",
" 2014 [YR2014] 2015 [YR2015] 2016 [YR2016] \n",
"0 633.947864294639 590.269515382605 .. \n",
"1 4588.64944014811 3965.01680558488 .. \n",
"2 5484.0668056148 4206.03123244958 .. \n",
"3 .. .. .. \n",
"4 .. .. .. "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"country_gdp_raw.head()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>official_name_en</th>\n",
" <th>ISO3166-1-Alpha-2</th>\n",
" <th>ISO3166-1-Alpha-3</th>\n",
" <th>ISO4217-currency_alphabetic_code</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Channel Islands</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sark</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan</td>\n",
" <td>AF</td>\n",
" <td>AFG</td>\n",
" <td>AFN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Albania</td>\n",
" <td>AL</td>\n",
" <td>ALB</td>\n",
" <td>ALL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Algeria</td>\n",
" <td>DZ</td>\n",
" <td>DZA</td>\n",
" <td>DZD</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>American Samoa</td>\n",
" <td>AS</td>\n",
" <td>ASM</td>\n",
" <td>USD</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Andorra</td>\n",
" <td>AD</td>\n",
" <td>AND</td>\n",
" <td>EUR</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Angola</td>\n",
" <td>AO</td>\n",
" <td>AGO</td>\n",
" <td>AOA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Anguilla</td>\n",
" <td>AI</td>\n",
" <td>AIA</td>\n",
" <td>XCD</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>NaN</td>\n",
" <td>AQ</td>\n",
" <td>ATA</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" official_name_en ISO3166-1-Alpha-2 ISO3166-1-Alpha-3 \\\n",
"0 Channel Islands NaN NaN \n",
"1 Sark NaN NaN \n",
"2 Afghanistan AF AFG \n",
"3 Albania AL ALB \n",
"4 Algeria DZ DZA \n",
"5 American Samoa AS ASM \n",
"6 Andorra AD AND \n",
"7 Angola AO AGO \n",
"8 Anguilla AI AIA \n",
"9 NaN AQ ATA \n",
"\n",
" ISO4217-currency_alphabetic_code \n",
"0 NaN \n",
"1 NaN \n",
"2 AFN \n",
"3 ALL \n",
"4 DZD \n",
"5 USD \n",
"6 EUR \n",
"7 AOA \n",
"8 XCD \n",
"9 NaN "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Clean country codes data\n",
"country_codes = country_codes_raw[['official_name_en', 'ISO3166-1-Alpha-2', 'ISO3166-1-Alpha-3', 'ISO4217-currency_alphabetic_code']]\n",
"country_codes.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Clean gdp data\n",
"country_gdp = country_gdp_raw.drop(country_gdp_raw.columns[[0, 1]], axis=1)\n",
"country_gdp.columns = ['name', 'country_code_3', '2002', '2003', '2004', '2005', '2006',\n",
" '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>country_code_3</th>\n",
" <th>2002</th>\n",
" <th>2003</th>\n",
" <th>2004</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" <th>2014</th>\n",
" <th>2015</th>\n",
" <th>2016</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan</td>\n",
" <td>AFG</td>\n",
" <td>192.153528278789</td>\n",
" <td>203.651040923182</td>\n",
" <td>224.914712193371</td>\n",
" <td>257.175794656273</td>\n",
" <td>280.245644106914</td>\n",
" <td>380.400955186598</td>\n",
" <td>384.131681276838</td>\n",
" <td>458.955781585831</td>\n",
" <td>569.940728793286</td>\n",
" <td>622.379654358451</td>\n",
" <td>690.842629014956</td>\n",
" <td>653.347488111011</td>\n",
" <td>633.947864294639</td>\n",
" <td>590.269515382605</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Albania</td>\n",
" <td>ALB</td>\n",
" <td>1453.64277660853</td>\n",
" <td>1890.68155743544</td>\n",
" <td>2416.5882350701</td>\n",
" <td>2709.14293056201</td>\n",
" <td>3005.0129033756</td>\n",
" <td>3603.01368536638</td>\n",
" <td>4370.53964653148</td>\n",
" <td>4114.13654490945</td>\n",
" <td>4094.35883191918</td>\n",
" <td>4437.8119990258</td>\n",
" <td>4247.83985201907</td>\n",
" <td>4412.34557813421</td>\n",
" <td>4588.64944014811</td>\n",
" <td>3965.01680558488</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Algeria</td>\n",
" <td>DZA</td>\n",
" <td>1774.29202079911</td>\n",
" <td>2094.89330213298</td>\n",
" <td>2600.00651972559</td>\n",
" <td>3102.03738422673</td>\n",
" <td>3467.54474008596</td>\n",
" <td>3939.55993939808</td>\n",
" <td>4912.25194081995</td>\n",
" <td>3875.82209542426</td>\n",
" <td>4473.48644568115</td>\n",
" <td>5447.40397556569</td>\n",
" <td>5583.61615950131</td>\n",
" <td>5491.6144135648</td>\n",
" <td>5484.0668056148</td>\n",
" <td>4206.03123244958</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>American Samoa</td>\n",
" <td>ASM</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Andorra</td>\n",
" <td>ADO</td>\n",
" <td>24175.3727542522</td>\n",
" <td>31742.9925847537</td>\n",
" <td>37235.4500323146</td>\n",
" <td>39990.3304085679</td>\n",
" <td>42417.2291456984</td>\n",
" <td>47253.5297963111</td>\n",
" <td>46735.9995745016</td>\n",
" <td>42701.447136255</td>\n",
" <td>39639.386021211</td>\n",
" <td>41630.0525792977</td>\n",
" <td>39666.3692147448</td>\n",
" <td>42806.5224483021</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name country_code_3 2002 2003 \\\n",
"0 Afghanistan AFG 192.153528278789 203.651040923182 \n",
"1 Albania ALB 1453.64277660853 1890.68155743544 \n",
"2 Algeria DZA 1774.29202079911 2094.89330213298 \n",
"3 American Samoa ASM .. .. \n",
"4 Andorra ADO 24175.3727542522 31742.9925847537 \n",
"\n",
" 2004 2005 2006 2007 \\\n",
"0 224.914712193371 257.175794656273 280.245644106914 380.400955186598 \n",
"1 2416.5882350701 2709.14293056201 3005.0129033756 3603.01368536638 \n",
"2 2600.00651972559 3102.03738422673 3467.54474008596 3939.55993939808 \n",
"3 .. .. .. .. \n",
"4 37235.4500323146 39990.3304085679 42417.2291456984 47253.5297963111 \n",
"\n",
" 2008 2009 2010 2011 \\\n",
"0 384.131681276838 458.955781585831 569.940728793286 622.379654358451 \n",
"1 4370.53964653148 4114.13654490945 4094.35883191918 4437.8119990258 \n",
"2 4912.25194081995 3875.82209542426 4473.48644568115 5447.40397556569 \n",
"3 .. .. .. .. \n",
"4 46735.9995745016 42701.447136255 39639.386021211 41630.0525792977 \n",
"\n",
" 2012 2013 2014 2015 2016 \n",
"0 690.842629014956 653.347488111011 633.947864294639 590.269515382605 .. \n",
"1 4247.83985201907 4412.34557813421 4588.64944014811 3965.01680558488 .. \n",
"2 5583.61615950131 5491.6144135648 5484.0668056148 4206.03123244958 .. \n",
"3 .. .. .. .. .. \n",
"4 39666.3692147448 42806.5224483021 .. .. .. "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"country_gdp.head()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>name</th>\n",
" <th>country_code</th>\n",
" <th>currency_code</th>\n",
" <th>2002</th>\n",
" <th>2003</th>\n",
" <th>2004</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" <th>2014</th>\n",
" <th>2015</th>\n",
" <th>2016</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan</td>\n",
" <td>AF</td>\n",
" <td>AFN</td>\n",
" <td>192.153528278789</td>\n",
" <td>203.651040923182</td>\n",
" <td>224.914712193371</td>\n",
" <td>257.175794656273</td>\n",
" <td>280.245644106914</td>\n",
" <td>380.400955186598</td>\n",
" <td>384.131681276838</td>\n",
" <td>458.955781585831</td>\n",
" <td>569.940728793286</td>\n",
" <td>622.379654358451</td>\n",
" <td>690.842629014956</td>\n",
" <td>653.347488111011</td>\n",
" <td>633.947864294639</td>\n",
" <td>590.269515382605</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Albania</td>\n",
" <td>AL</td>\n",
" <td>ALL</td>\n",
" <td>1453.64277660853</td>\n",
" <td>1890.68155743544</td>\n",
" <td>2416.5882350701</td>\n",
" <td>2709.14293056201</td>\n",
" <td>3005.0129033756</td>\n",
" <td>3603.01368536638</td>\n",
" <td>4370.53964653148</td>\n",
" <td>4114.13654490945</td>\n",
" <td>4094.35883191918</td>\n",
" <td>4437.8119990258</td>\n",
" <td>4247.83985201907</td>\n",
" <td>4412.34557813421</td>\n",
" <td>4588.64944014811</td>\n",
" <td>3965.01680558488</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Algeria</td>\n",
" <td>DZ</td>\n",
" <td>DZD</td>\n",
" <td>1774.29202079911</td>\n",
" <td>2094.89330213298</td>\n",
" <td>2600.00651972559</td>\n",
" <td>3102.03738422673</td>\n",
" <td>3467.54474008596</td>\n",
" <td>3939.55993939808</td>\n",
" <td>4912.25194081995</td>\n",
" <td>3875.82209542426</td>\n",
" <td>4473.48644568115</td>\n",
" <td>5447.40397556569</td>\n",
" <td>5583.61615950131</td>\n",
" <td>5491.6144135648</td>\n",
" <td>5484.0668056148</td>\n",
" <td>4206.03123244958</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>American Samoa</td>\n",
" <td>AS</td>\n",
" <td>USD</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>24175.3727542522</td>\n",
" <td>31742.9925847537</td>\n",
" <td>37235.4500323146</td>\n",
" <td>39990.3304085679</td>\n",
" <td>42417.2291456984</td>\n",
" <td>47253.5297963111</td>\n",
" <td>46735.9995745016</td>\n",
" <td>42701.447136255</td>\n",
" <td>39639.386021211</td>\n",
" <td>41630.0525792977</td>\n",
" <td>39666.3692147448</td>\n",
" <td>42806.5224483021</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Angola</td>\n",
" <td>AO</td>\n",
" <td>AOA</td>\n",
" <td>775.765518459716</td>\n",
" <td>850.075694129697</td>\n",
" <td>1135.60456355085</td>\n",
" <td>1576.16280066689</td>\n",
" <td>2253.83885003865</td>\n",
" <td>3151.02243105289</td>\n",
" <td>4242.36306234092</td>\n",
" <td>3678.94765447179</td>\n",
" <td>3886.47935432524</td>\n",
" <td>4744.98762949589</td>\n",
" <td>5086.8484258086</td>\n",
" <td>5327.14889219232</td>\n",
" <td>5232.69050054132</td>\n",
" <td>4102.11858969272</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>AG</td>\n",
" <td>XCD</td>\n",
" <td>10027.8562205839</td>\n",
" <td>10382.6309004545</td>\n",
" <td>10993.3692472668</td>\n",
" <td>12079.8656950416</td>\n",
" <td>13599.908857304</td>\n",
" <td>15276.0682646698</td>\n",
" <td>15786.1728395062</td>\n",
" <td>13979.2626925883</td>\n",
" <td>13017.3103875487</td>\n",
" <td>12817.8415733094</td>\n",
" <td>13525.616220134</td>\n",
" <td>13342.0849977054</td>\n",
" <td>13432.0792079208</td>\n",
" <td>14128.8785463675</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Argentina</td>\n",
" <td>AR</td>\n",
" <td>ARS</td>\n",
" <td>2579.18819898884</td>\n",
" <td>3330.42866006847</td>\n",
" <td>4251.5653466058</td>\n",
" <td>5096.25833247505</td>\n",
" <td>5904.67813228342</td>\n",
" <td>7226.27029452745</td>\n",
" <td>8992.58961919674</td>\n",
" <td>8198.56611136286</td>\n",
" <td>10332.0323662966</td>\n",
" <td>12800.2018563295</td>\n",
" <td>13040.306395228</td>\n",
" <td>13027.2048221392</td>\n",
" <td>12324.9387857728</td>\n",
" <td>13431.8783398577</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Armenia</td>\n",
" <td>AM</td>\n",
" <td>AMD</td>\n",
" <td>779.829626131555</td>\n",
" <td>924.464009817761</td>\n",
" <td>1181.9684454224</td>\n",
" <td>1625.40776912682</td>\n",
" <td>2126.61866107184</td>\n",
" <td>3080.97095943572</td>\n",
" <td>3919.97547381061</td>\n",
" <td>2915.5839059087</td>\n",
" <td>3124.78401786195</td>\n",
" <td>3417.17183599915</td>\n",
" <td>3565.5175749254</td>\n",
" <td>3716.82892254464</td>\n",
" <td>3873.53356580682</td>\n",
" <td>3499.80421759862</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Aruba</td>\n",
" <td>AW</td>\n",
" <td>AWG</td>\n",
" <td>20433.6541088167</td>\n",
" <td>20834.9397101237</td>\n",
" <td>22566.6821576324</td>\n",
" <td>23302.8319880055</td>\n",
" <td>24015.4206122701</td>\n",
" <td>25921.5382341406</td>\n",
" <td>27549.8894224976</td>\n",
" <td>24640.4212441218</td>\n",
" <td>24289.1415161326</td>\n",
" <td>25353.7875446441</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Australia</td>\n",
" <td>AU</td>\n",
" <td>AUD</td>\n",
" <td>20059.4520721372</td>\n",
" <td>23440.0053221856</td>\n",
" <td>30440.8548786229</td>\n",
" <td>33982.9504271591</td>\n",
" <td>36084.8589777475</td>\n",
" <td>40957.8304392487</td>\n",
" <td>49628.1151270179</td>\n",
" <td>42715.1322619629</td>\n",
" <td>51845.6548605562</td>\n",
" <td>62216.5471294133</td>\n",
" <td>67646.1038529626</td>\n",
" <td>67652.6832146189</td>\n",
" <td>61995.8296976</td>\n",
" <td>56327.7214484289</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Austria</td>\n",
" <td>AT</td>\n",
" <td>EUR</td>\n",
" <td>26351.3756769542</td>\n",
" <td>32102.9305523558</td>\n",
" <td>36693.4026205182</td>\n",
" <td>38242.0425174699</td>\n",
" <td>40430.993614499</td>\n",
" <td>46586.6502529235</td>\n",
" <td>51386.3766511975</td>\n",
" <td>47654.1872090808</td>\n",
" <td>46659.8408181344</td>\n",
" <td>51123.5613291663</td>\n",
" <td>48324.2540367606</td>\n",
" <td>50557.8038059874</td>\n",
" <td>51148.3588760796</td>\n",
" <td>43438.8630381343</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Azerbaijan</td>\n",
" <td>AZ</td>\n",
" <td>AZN</td>\n",
" <td>763.101212220367</td>\n",
" <td>883.614008967961</td>\n",
" <td>1045.02641527642</td>\n",
" <td>1578.36733030667</td>\n",
" <td>2473.08577636837</td>\n",
" <td>3851.43786871172</td>\n",
" <td>5574.60380218613</td>\n",
" <td>4950.29479142375</td>\n",
" <td>5842.80578358576</td>\n",
" <td>7189.69122920765</td>\n",
" <td>7393.77187697623</td>\n",
" <td>7811.6214184582</td>\n",
" <td>7886.45914367274</td>\n",
" <td>5496.34464026248</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Bahamas, The</td>\n",
" <td>BS</td>\n",
" <td>BSD</td>\n",
" <td>22505.4047934793</td>\n",
" <td>22008.4337005989</td>\n",
" <td>21995.5199216219</td>\n",
" <td>23405.8795479327</td>\n",
" <td>23721.1562800587</td>\n",
" <td>24306.1424243044</td>\n",
" <td>23657.365306222</td>\n",
" <td>22043.0125711709</td>\n",
" <td>21920.5165867583</td>\n",
" <td>21514.8986531628</td>\n",
" <td>22112.6083547268</td>\n",
" <td>22315.6036533886</td>\n",
" <td>22217.4941392075</td>\n",
" <td>22896.9236868716</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Bahrain</td>\n",
" <td>BH</td>\n",
" <td>BHD</td>\n",
" <td>13279.0457951397</td>\n",
" <td>14541.6160485141</td>\n",
" <td>16275.1804236433</td>\n",
" <td>18418.0726743768</td>\n",
" <td>19669.3195545631</td>\n",
" <td>21167.6187062133</td>\n",
" <td>23043.0253174017</td>\n",
" <td>19166.7082382358</td>\n",
" <td>20386.0175551116</td>\n",
" <td>22238.7119502059</td>\n",
" <td>23063.1322870426</td>\n",
" <td>24378.9448284188</td>\n",
" <td>24855.2156350086</td>\n",
" <td>23395.7476902684</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Bangladesh</td>\n",
" <td>BD</td>\n",
" <td>BDT</td>\n",
" <td>401.708153328187</td>\n",
" <td>434.046563233432</td>\n",
" <td>462.274879844841</td>\n",
" <td>485.852888073473</td>\n",
" <td>495.853780201055</td>\n",
" <td>543.082263122362</td>\n",
" <td>618.075883559283</td>\n",
" <td>683.614422272329</td>\n",
" <td>760.331935200195</td>\n",
" <td>838.547801702232</td>\n",
" <td>858.933362587621</td>\n",
" <td>954.396399715624</td>\n",
" <td>1086.80008676935</td>\n",
" <td>1211.70153057661</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Barbados</td>\n",
" <td>BB</td>\n",
" <td>BBD</td>\n",
" <td>11674.9361829092</td>\n",
" <td>12028.8987405468</td>\n",
" <td>12869.3365947615</td>\n",
" <td>14223.7777039775</td>\n",
" <td>15646.815008726</td>\n",
" <td>16461.8292691759</td>\n",
" <td>16569.6049618665</td>\n",
" <td>16526.2545517227</td>\n",
" <td>15901.4329353355</td>\n",
" <td>15530.8942915589</td>\n",
" <td>15317.1390013495</td>\n",
" <td>15153.8213753482</td>\n",
" <td>15366.2926106288</td>\n",
" <td>15660.6794152314</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Belarus</td>\n",
" <td>BY</td>\n",
" <td>BYR</td>\n",
" <td>1479.46532113219</td>\n",
" <td>1819.4790277163</td>\n",
" <td>2378.37489391196</td>\n",
" <td>3126.36777779462</td>\n",
" <td>3848.58620300891</td>\n",
" <td>4735.95688918873</td>\n",
" <td>6376.17311491284</td>\n",
" <td>5176.04470138203</td>\n",
" <td>5818.8548592158</td>\n",
" <td>6305.77366247653</td>\n",
" <td>6721.83490773968</td>\n",
" <td>7722.12335060436</td>\n",
" <td>8025.30435552468</td>\n",
" <td>5740.45649479562</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Belgium</td>\n",
" <td>BE</td>\n",
" <td>EUR</td>\n",
" <td>25052.3302823</td>\n",
" <td>30743.9569254283</td>\n",
" <td>35589.7129457001</td>\n",
" <td>36967.2829204297</td>\n",
" <td>38852.3610339939</td>\n",
" <td>44403.8313061102</td>\n",
" <td>48424.5892730273</td>\n",
" <td>44880.5601517887</td>\n",
" <td>44382.8797683492</td>\n",
" <td>47699.8070518961</td>\n",
" <td>44734.4523465803</td>\n",
" <td>46622.4679873931</td>\n",
" <td>47299.8601085612</td>\n",
" <td>40231.2831740081</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Belize</td>\n",
" <td>BZ</td>\n",
" <td>BZD</td>\n",
" <td>3556.61608225719</td>\n",
" <td>3679.79281542143</td>\n",
" <td>3831.60983030588</td>\n",
" <td>3933.2343731798</td>\n",
" <td>4187.23288999866</td>\n",
" <td>4324.83101711444</td>\n",
" <td>4470.22079597603</td>\n",
" <td>4258.84287648324</td>\n",
" <td>4344.13666906088</td>\n",
" <td>4516.23303047149</td>\n",
" <td>4673.55519784264</td>\n",
" <td>4723.59432062825</td>\n",
" <td>4884.3686203818</td>\n",
" <td>4906.9406908683</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>Benin</td>\n",
" <td>BJ</td>\n",
" <td>XOF</td>\n",
" <td>411.959075281789</td>\n",
" <td>509.461088697817</td>\n",
" <td>570.685501333771</td>\n",
" <td>587.080212422838</td>\n",
" <td>609.018608681583</td>\n",
" <td>685.551675107742</td>\n",
" <td>794.870176064085</td>\n",
" <td>768.013476447657</td>\n",
" <td>732.953622726674</td>\n",
" <td>799.03555913143</td>\n",
" <td>807.688451017232</td>\n",
" <td>882.638633279988</td>\n",
" <td>903.464924007693</td>\n",
" <td>779.067867757338</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>Bermuda</td>\n",
" <td>BM</td>\n",
" <td>BMD</td>\n",
" <td>62583.1002034588</td>\n",
" <td>66111.7252270036</td>\n",
" <td>70359.3191088798</td>\n",
" <td>75882.0338560339</td>\n",
" <td>83912.6977976846</td>\n",
" <td>90849.5869806436</td>\n",
" <td>93605.7481653976</td>\n",
" <td>88463.3128161375</td>\n",
" <td>88207.3275597322</td>\n",
" <td>85973.158416455</td>\n",
" <td>85458.455507886</td>\n",
" <td>85748.0654143782</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Bhutan</td>\n",
" <td>BT</td>\n",
" <td>INR</td>\n",
" <td>897.445333164014</td>\n",
" <td>1009.00623184688</td>\n",
" <td>1107.92059564068</td>\n",
" <td>1257.54864008661</td>\n",
" <td>1346.08577480046</td>\n",
" <td>1755.16170904287</td>\n",
" <td>1810.57617704401</td>\n",
" <td>1786.81067200588</td>\n",
" <td>2201.29307778936</td>\n",
" <td>2485.78705216849</td>\n",
" <td>2452.15158793741</td>\n",
" <td>2383.04472990264</td>\n",
" <td>2560.52213174131</td>\n",
" <td>2532.45446832741</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>Bolivia</td>\n",
" <td>BO</td>\n",
" <td>BOB</td>\n",
" <td>913.575853422027</td>\n",
" <td>917.36431048617</td>\n",
" <td>978.334757576746</td>\n",
" <td>1046.4278428307</td>\n",
" <td>1233.59297372996</td>\n",
" <td>1389.6317502607</td>\n",
" <td>1736.92401415151</td>\n",
" <td>1776.85718962366</td>\n",
" <td>1981.16010525701</td>\n",
" <td>2377.70068972888</td>\n",
" <td>2645.29027433174</td>\n",
" <td>2948.03291763073</td>\n",
" <td>3124.08076212353</td>\n",
" <td>3095.3596925636</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>Bosnia and Herzegovina</td>\n",
" <td>BA</td>\n",
" <td>BAM</td>\n",
" <td>1746.48638346723</td>\n",
" <td>2192.64707824367</td>\n",
" <td>2619.75325753727</td>\n",
" <td>2928.26359035282</td>\n",
" <td>3351.96339986152</td>\n",
" <td>4107.99623197216</td>\n",
" <td>4974.66226666137</td>\n",
" <td>4586.20631315947</td>\n",
" <td>4475.08813004565</td>\n",
" <td>4860.78181134244</td>\n",
" <td>4494.64064038047</td>\n",
" <td>4748.04069226421</td>\n",
" <td>4851.66052786926</td>\n",
" <td>4197.80730449044</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>Botswana</td>\n",
" <td>BW</td>\n",
" <td>BWP</td>\n",
" <td>3044.12735338963</td>\n",
" <td>4149.04137748834</td>\n",
" <td>4879.45946154727</td>\n",
" <td>5327.8535176786</td>\n",
" <td>5342.1403362253</td>\n",
" <td>5666.63784692568</td>\n",
" <td>5561.89823998598</td>\n",
" <td>5115.11924667202</td>\n",
" <td>6244.00257387272</td>\n",
" <td>7504.85090744898</td>\n",
" <td>6885.82968106945</td>\n",
" <td>6806.67746673071</td>\n",
" <td>7153.44432535212</td>\n",
" <td>6360.64477568565</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>Brazil</td>\n",
" <td>BR</td>\n",
" <td>BRL</td>\n",
" <td>2805.71725723054</td>\n",
" <td>3040.50649558819</td>\n",
" <td>3596.22457976056</td>\n",
" <td>4730.65346838158</td>\n",
" <td>5808.34054715979</td>\n",
" <td>7246.87010479067</td>\n",
" <td>8706.81914190374</td>\n",
" <td>8474.88106576607</td>\n",
" <td>11121.4209541496</td>\n",
" <td>13039.1216499582</td>\n",
" <td>12157.3082176473</td>\n",
" <td>12071.7779871352</td>\n",
" <td>11728.7993875108</td>\n",
" <td>8538.5899749574</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>British Virgin Islands</td>\n",
" <td>VG</td>\n",
" <td>USD</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>Brunei Darussalam</td>\n",
" <td>BN</td>\n",
" <td>BND</td>\n",
" <td>17016.9434933055</td>\n",
" <td>18758.9808946915</td>\n",
" <td>22131.9460641106</td>\n",
" <td>26337.9181126619</td>\n",
" <td>31157.6884478525</td>\n",
" <td>32707.7043073602</td>\n",
" <td>37798.3935034007</td>\n",
" <td>27726.481053695</td>\n",
" <td>31453.2243965354</td>\n",
" <td>41787.0214028978</td>\n",
" <td>41807.6533410575</td>\n",
" <td>39151.2342290391</td>\n",
" <td>40979.6419433378</td>\n",
" <td>36607.9278817468</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>Bulgaria</td>\n",
" <td>BG</td>\n",
" <td>BGN</td>\n",
" <td>2079.2289749196</td>\n",
" <td>2693.75876041107</td>\n",
" <td>3353.56414854374</td>\n",
" <td>3852.97775647268</td>\n",
" <td>4455.69022418578</td>\n",
" <td>5932.89967659315</td>\n",
" <td>7296.12247858585</td>\n",
" <td>6955.98773253421</td>\n",
" <td>6752.55217774882</td>\n",
" <td>7750.03988003072</td>\n",
" <td>7333.35507303945</td>\n",
" <td>7656.63850554922</td>\n",
" <td>7851.26542804234</td>\n",
" <td>6819.86910816324</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>187</th>\n",
" <td>Sweden</td>\n",
" <td>SE</td>\n",
" <td>SEK</td>\n",
" <td>29571.7044643283</td>\n",
" <td>36961.4253671424</td>\n",
" <td>42442.2204473133</td>\n",
" <td>43085.353145957</td>\n",
" <td>46256.4716010495</td>\n",
" <td>53324.3793724756</td>\n",
" <td>55746.8423811175</td>\n",
" <td>46207.0592032962</td>\n",
" <td>52076.4305245885</td>\n",
" <td>59593.6847982389</td>\n",
" <td>57134.0770682404</td>\n",
" <td>60283.24522267</td>\n",
" <td>58899.9797944845</td>\n",
" <td>50272.9415019928</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>188</th>\n",
" <td>Switzerland</td>\n",
" <td>CH</td>\n",
" <td>CHF</td>\n",
" <td>41336.7219170303</td>\n",
" <td>47960.5649721577</td>\n",
" <td>53255.9763084633</td>\n",
" <td>54797.5466345741</td>\n",
" <td>57348.9278823975</td>\n",
" <td>63223.467775151</td>\n",
" <td>72119.5608730311</td>\n",
" <td>69672.0047147337</td>\n",
" <td>74277.1205125567</td>\n",
" <td>88002.6095703805</td>\n",
" <td>83208.68654235</td>\n",
" <td>84669.2929367996</td>\n",
" <td>85610.8420285261</td>\n",
" <td>80214.7301520483</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189</th>\n",
" <td>Syrian Arab Republic</td>\n",
" <td>SY</td>\n",
" <td>SYP</td>\n",
" <td>1269.72920825685</td>\n",
" <td>1261.42609007136</td>\n",
" <td>1419.59337922665</td>\n",
" <td>1591.53019241227</td>\n",
" <td>1779.82104926154</td>\n",
" <td>2079.98786380715</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>190</th>\n",
" <td>Tajikistan</td>\n",
" <td>TJ</td>\n",
" <td>TJS</td>\n",
" <td>190.604911236529</td>\n",
" <td>237.89319314008</td>\n",
" <td>311.424112807574</td>\n",
" <td>339.768076770367</td>\n",
" <td>407.252611650134</td>\n",
" <td>523.947651220881</td>\n",
" <td>711.503629870563</td>\n",
" <td>671.544008840534</td>\n",
" <td>744.189892165383</td>\n",
" <td>841.219870374428</td>\n",
" <td>962.439124853526</td>\n",
" <td>1048.66690599689</td>\n",
" <td>1113.36635446715</td>\n",
" <td>925.91188767081</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191</th>\n",
" <td>Tanzania</td>\n",
" <td>TZ</td>\n",
" <td>TZS</td>\n",
" <td>310.207276508511</td>\n",
" <td>325.550773719717</td>\n",
" <td>348.052371292798</td>\n",
" <td>446.157893998536</td>\n",
" <td>475.908765113372</td>\n",
" <td>533.172396689392</td>\n",
" <td>657.728743357642</td>\n",
" <td>665.344002868127</td>\n",
" <td>708.521932325363</td>\n",
" <td>740.383900829825</td>\n",
" <td>827.52888076909</td>\n",
" <td>909.330141239446</td>\n",
" <td>954.618987954616</td>\n",
" <td>864.857502346707</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>192</th>\n",
" <td>Thailand</td>\n",
" <td>TH</td>\n",
" <td>THB</td>\n",
" <td>2093.97920641937</td>\n",
" <td>2349.38452566541</td>\n",
" <td>2643.47893487535</td>\n",
" <td>2874.38627417759</td>\n",
" <td>3351.11763286401</td>\n",
" <td>3962.7504988544</td>\n",
" <td>4384.78267515745</td>\n",
" <td>4231.14036778126</td>\n",
" <td>5111.90920222917</td>\n",
" <td>5539.49436810396</td>\n",
" <td>5915.22114668686</td>\n",
" <td>6225.05228315387</td>\n",
" <td>5969.94011583791</td>\n",
" <td>5816.44068998475</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>193</th>\n",
" <td>Timor-Leste</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>496.17975117256</td>\n",
" <td>487.394976066002</td>\n",
" <td>484.088448984765</td>\n",
" <td>501.429226481591</td>\n",
" <td>464.835169248192</td>\n",
" <td>551.720598424389</td>\n",
" <td>673.374537904</td>\n",
" <td>780.261110851448</td>\n",
" <td>875.836569271265</td>\n",
" <td>1015.71592799663</td>\n",
" <td>1127.10821457355</td>\n",
" <td>1117.73125130819</td>\n",
" <td>1131.23085071824</td>\n",
" <td>1134.42642789183</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>194</th>\n",
" <td>Togo</td>\n",
" <td>TG</td>\n",
" <td>XOF</td>\n",
" <td>286.758081572586</td>\n",
" <td>316.792068666893</td>\n",
" <td>356.830803515721</td>\n",
" <td>379.18092890047</td>\n",
" <td>384.288555620343</td>\n",
" <td>428.401561823965</td>\n",
" <td>522.625007010443</td>\n",
" <td>508.54052572385</td>\n",
" <td>496.482494202806</td>\n",
" <td>572.025703222528</td>\n",
" <td>573.207476512184</td>\n",
" <td>589.014053731293</td>\n",
" <td>629.9976439467</td>\n",
" <td>547.974683363941</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>195</th>\n",
" <td>Tonga</td>\n",
" <td>TO</td>\n",
" <td>TOP</td>\n",
" <td>1836.29040439251</td>\n",
" <td>2089.21704269256</td>\n",
" <td>2357.14647444959</td>\n",
" <td>2565.38579890357</td>\n",
" <td>2837.07547156741</td>\n",
" <td>2932.96275815712</td>\n",
" <td>3307.28239321081</td>\n",
" <td>3106.90237557772</td>\n",
" <td>3557.73718366504</td>\n",
" <td>4226.69274653294</td>\n",
" <td>4364.30924422214</td>\n",
" <td>4117.31098292096</td>\n",
" <td>4114.05211511279</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>196</th>\n",
" <td>Trinidad and Tobago</td>\n",
" <td>TT</td>\n",
" <td>TTD</td>\n",
" <td>7049.61006145836</td>\n",
" <td>8804.5186659639</td>\n",
" <td>10290.5191436384</td>\n",
" <td>12323.1365595732</td>\n",
" <td>14095.9958152811</td>\n",
" <td>16530.1804420146</td>\n",
" <td>21188.118565877</td>\n",
" <td>14508.8137365799</td>\n",
" <td>15840.4426914159</td>\n",
" <td>18287.3907851354</td>\n",
" <td>18322.323800986</td>\n",
" <td>20217.0322820943</td>\n",
" <td>21317.449265568</td>\n",
" <td>20444.0785895112</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>197</th>\n",
" <td>Tunisia</td>\n",
" <td>TN</td>\n",
" <td>TND</td>\n",
" <td>2373.83647757576</td>\n",
" <td>2790.00436823287</td>\n",
" <td>3139.53720163156</td>\n",
" <td>3217.96864628265</td>\n",
" <td>3394.42897986889</td>\n",
" <td>3805.15293730174</td>\n",
" <td>4342.82317730308</td>\n",
" <td>4162.5096689683</td>\n",
" <td>4176.59159013024</td>\n",
" <td>4291.87604315683</td>\n",
" <td>4179.46434367471</td>\n",
" <td>4248.89127558615</td>\n",
" <td>4328.90419734881</td>\n",
" <td>3872.51208364171</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>198</th>\n",
" <td>Turkey</td>\n",
" <td>TR</td>\n",
" <td>TRY</td>\n",
" <td>3570.54626341295</td>\n",
" <td>4586.81120315865</td>\n",
" <td>5855.53865983905</td>\n",
" <td>7117.23324132191</td>\n",
" <td>7727.27240453727</td>\n",
" <td>9309.50947782175</td>\n",
" <td>10382.3181608988</td>\n",
" <td>8623.94962718666</td>\n",
" <td>10111.5177049589</td>\n",
" <td>10538.4351203671</td>\n",
" <td>10539.3703371146</td>\n",
" <td>10800.3579763053</td>\n",
" <td>10303.8988002501</td>\n",
" <td>9130.02606479616</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>199</th>\n",
" <td>Turkmenistan</td>\n",
" <td>TM</td>\n",
" <td>TMT</td>\n",
" <td>969.970033452985</td>\n",
" <td>1286.01426124964</td>\n",
" <td>1455.93604950756</td>\n",
" <td>1706.95672639245</td>\n",
" <td>2140.45547216715</td>\n",
" <td>2606.74197588003</td>\n",
" <td>3918.93492678718</td>\n",
" <td>4059.96151102083</td>\n",
" <td>4479.01235418457</td>\n",
" <td>5724.53710231112</td>\n",
" <td>6797.72116602834</td>\n",
" <td>7480.32167773692</td>\n",
" <td>8193.72029690445</td>\n",
" <td>6947.84002260404</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>200</th>\n",
" <td>Turks and Caicos Islands</td>\n",
" <td>TC</td>\n",
" <td>USD</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>201</th>\n",
" <td>Tuvalu</td>\n",
" <td>TV</td>\n",
" <td>AUD</td>\n",
" <td>1621.33358266022</td>\n",
" <td>1901.03347628001</td>\n",
" <td>2232.60251748372</td>\n",
" <td>2252.89288563217</td>\n",
" <td>2353.35608772946</td>\n",
" <td>2768.37095732057</td>\n",
" <td>3094.62809172302</td>\n",
" <td>2763.16030537848</td>\n",
" <td>3238.37576273905</td>\n",
" <td>3993.50025430234</td>\n",
" <td>4044.19378022487</td>\n",
" <td>3880.19087861123</td>\n",
" <td>3826.90331140252</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>202</th>\n",
" <td>Uganda</td>\n",
" <td>UG</td>\n",
" <td>UGX</td>\n",
" <td>243.674624856652</td>\n",
" <td>241.694801118865</td>\n",
" <td>292.843015035141</td>\n",
" <td>321.435761373761</td>\n",
" <td>342.837263983568</td>\n",
" <td>409.87032601315</td>\n",
" <td>459.109775900068</td>\n",
" <td>557.523595605241</td>\n",
" <td>608.813023856722</td>\n",
" <td>591.438623816353</td>\n",
" <td>656.398072749334</td>\n",
" <td>674.341641819883</td>\n",
" <td>714.567356471156</td>\n",
" <td>675.573466220693</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>203</th>\n",
" <td>Ukraine</td>\n",
" <td>UA</td>\n",
" <td>UAH</td>\n",
" <td>879.475048622777</td>\n",
" <td>1048.52248790763</td>\n",
" <td>1367.35243333629</td>\n",
" <td>1828.71762576598</td>\n",
" <td>2303.01883093184</td>\n",
" <td>3068.60899799696</td>\n",
" <td>3891.03782318207</td>\n",
" <td>2545.4803410735</td>\n",
" <td>2973.99648071562</td>\n",
" <td>3569.75702740477</td>\n",
" <td>3855.4212801318</td>\n",
" <td>3986.28296611562</td>\n",
" <td>3065.16422265266</td>\n",
" <td>2114.95471628444</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>204</th>\n",
" <td>United Arab Emirates</td>\n",
" <td>AE</td>\n",
" <td>AED</td>\n",
" <td>32355.4095972427</td>\n",
" <td>34294.8939976005</td>\n",
" <td>37179.6818919642</td>\n",
" <td>40298.5242178562</td>\n",
" <td>42950.1005841305</td>\n",
" <td>42913.7840342254</td>\n",
" <td>45720.0178979792</td>\n",
" <td>32905.0538494054</td>\n",
" <td>34341.9112921486</td>\n",
" <td>39901.2209155518</td>\n",
" <td>41712.1242109135</td>\n",
" <td>42831.0891322689</td>\n",
" <td>43962.7136932011</td>\n",
" <td>40438.3763627115</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>205</th>\n",
" <td>United Kingdom</td>\n",
" <td>GB</td>\n",
" <td>GBP</td>\n",
" <td>28301.2083322425</td>\n",
" <td>32575.0919626199</td>\n",
" <td>38305.8726859929</td>\n",
" <td>40047.905967007</td>\n",
" <td>42534.3062613449</td>\n",
" <td>48428.1574527987</td>\n",
" <td>45195.1569273881</td>\n",
" <td>37166.2759654944</td>\n",
" <td>38292.8711313583</td>\n",
" <td>41020.3769643089</td>\n",
" <td>41294.5148008666</td>\n",
" <td>42294.8901157814</td>\n",
" <td>46278.5202128829</td>\n",
" <td>43734.0001709187</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>206</th>\n",
" <td>United States</td>\n",
" <td>US</td>\n",
" <td>USD</td>\n",
" <td>38166.0378407812</td>\n",
" <td>39677.1983481058</td>\n",
" <td>41921.8097617892</td>\n",
" <td>44307.9205848603</td>\n",
" <td>46437.0671173065</td>\n",
" <td>48061.5376613353</td>\n",
" <td>48401.4273403899</td>\n",
" <td>47001.5553496818</td>\n",
" <td>48374.0867933094</td>\n",
" <td>49781.8006563523</td>\n",
" <td>51433.0470904727</td>\n",
" <td>52660.2951049798</td>\n",
" <td>54398.4600093994</td>\n",
" <td>55836.7926308733</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>207</th>\n",
" <td>Uruguay</td>\n",
" <td>UY</td>\n",
" <td>UYU</td>\n",
" <td>4088.77254119908</td>\n",
" <td>3622.05228427976</td>\n",
" <td>4117.30885333007</td>\n",
" <td>5220.95739601735</td>\n",
" <td>5877.87960762231</td>\n",
" <td>7009.67815952936</td>\n",
" <td>9062.29053512906</td>\n",
" <td>9415.15358319032</td>\n",
" <td>11938.2750549849</td>\n",
" <td>14166.5576669096</td>\n",
" <td>15092.4720586676</td>\n",
" <td>16881.38400062</td>\n",
" <td>16737.973101175</td>\n",
" <td>15573.9009189374</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>208</th>\n",
" <td>Uzbekistan</td>\n",
" <td>UZ</td>\n",
" <td>UZS</td>\n",
" <td>383.349499748749</td>\n",
" <td>396.129968981304</td>\n",
" <td>465.119886944025</td>\n",
" <td>546.776850185552</td>\n",
" <td>642.960414644088</td>\n",
" <td>830.407694204322</td>\n",
" <td>1023.11964110698</td>\n",
" <td>1181.84735960066</td>\n",
" <td>1377.08214046938</td>\n",
" <td>1544.82777273524</td>\n",
" <td>1719.03619624155</td>\n",
" <td>1877.9645118434</td>\n",
" <td>2052.58678135925</td>\n",
" <td>2132.07244181734</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>209</th>\n",
" <td>Vanuatu</td>\n",
" <td>VU</td>\n",
" <td>VUV</td>\n",
" <td>1353.9278386398</td>\n",
" <td>1580.51066802466</td>\n",
" <td>1787.9382648014</td>\n",
" <td>1886.38830966499</td>\n",
" <td>2047.08828520065</td>\n",
" <td>2393.3346212201</td>\n",
" <td>2698.02124012432</td>\n",
" <td>2643.47578534313</td>\n",
" <td>2965.75223011673</td>\n",
" <td>3275.02398203673</td>\n",
" <td>3158.4209735273</td>\n",
" <td>3167.05530330465</td>\n",
" <td>3147.96485986836</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>210</th>\n",
" <td>Venezuela, RB</td>\n",
" <td>VE</td>\n",
" <td>VEF</td>\n",
" <td>3657.19374768603</td>\n",
" <td>3233.9561063252</td>\n",
" <td>4273.36537157056</td>\n",
" <td>5435.87225994853</td>\n",
" <td>6740.23677858669</td>\n",
" <td>8325.21658255278</td>\n",
" <td>11224.6467026883</td>\n",
" <td>11534.8406001136</td>\n",
" <td>13581.3533771018</td>\n",
" <td>10754.5928790654</td>\n",
" <td>12771.5950361107</td>\n",
" <td>12265.03113567</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>211</th>\n",
" <td>Vietnam</td>\n",
" <td>VN</td>\n",
" <td>VND</td>\n",
" <td>477.105876263106</td>\n",
" <td>530.861849364997</td>\n",
" <td>606.904378261988</td>\n",
" <td>699.499778976363</td>\n",
" <td>796.671573774518</td>\n",
" <td>919.209265568078</td>\n",
" <td>1164.61252461712</td>\n",
" <td>1232.36967118834</td>\n",
" <td>1333.58352635481</td>\n",
" <td>1542.67043610149</td>\n",
" <td>1754.5479738641</td>\n",
" <td>1907.56438167972</td>\n",
" <td>2052.31908380089</td>\n",
" <td>2111.13802366815</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>212</th>\n",
" <td>Virgin Islands (U.S.)</td>\n",
" <td>VI</td>\n",
" <td>USD</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>213</th>\n",
" <td>West Bank and Gaza</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1156.21747345769</td>\n",
" <td>1257.69857009689</td>\n",
" <td>1337.56572430673</td>\n",
" <td>1455.18787518115</td>\n",
" <td>1441.46170046742</td>\n",
" <td>1575.56340027289</td>\n",
" <td>1855.45702045882</td>\n",
" <td>1963.20151865719</td>\n",
" <td>2338.71987682303</td>\n",
" <td>2663.53702496611</td>\n",
" <td>2787.16973802917</td>\n",
" <td>2992.20099455427</td>\n",
" <td>2960.77800405245</td>\n",
" <td>2866.80010121789</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>214</th>\n",
" <td>Yemen, Rep.</td>\n",
" <td>YE</td>\n",
" <td>YER</td>\n",
" <td>567.821963311624</td>\n",
" <td>607.915804267557</td>\n",
" <td>696.054960696925</td>\n",
" <td>817.082416653512</td>\n",
" <td>904.605600055261</td>\n",
" <td>1181.2151760728</td>\n",
" <td>1361.7172085227</td>\n",
" <td>1239.83711886653</td>\n",
" <td>1310.05383929542</td>\n",
" <td>1282.39883187217</td>\n",
" <td>1289.03407763668</td>\n",
" <td>1408.14619260488</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>215</th>\n",
" <td>Zambia</td>\n",
" <td>ZM</td>\n",
" <td>ZMW</td>\n",
" <td>376.468039539246</td>\n",
" <td>429.007277894455</td>\n",
" <td>530.553584072736</td>\n",
" <td>691.80945858671</td>\n",
" <td>1030.31535972563</td>\n",
" <td>1103.48657711875</td>\n",
" <td>1365.72120522548</td>\n",
" <td>1134.77299782945</td>\n",
" <td>1456.12652618031</td>\n",
" <td>1635.54730435222</td>\n",
" <td>1724.74356387435</td>\n",
" <td>1839.52248112115</td>\n",
" <td>1725.97454864009</td>\n",
" <td>1307.78861109883</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>216</th>\n",
" <td>Zimbabwe</td>\n",
" <td>ZW</td>\n",
" <td>ZWL</td>\n",
" <td>499.716414957462</td>\n",
" <td>448.373192699451</td>\n",
" <td>451.171588554028</td>\n",
" <td>443.240135984532</td>\n",
" <td>414.680115131526</td>\n",
" <td>397.956872258099</td>\n",
" <td>327.199083662345</td>\n",
" <td>594.495968478092</td>\n",
" <td>674.268695411166</td>\n",
" <td>768.556409302399</td>\n",
" <td>850.827696604891</td>\n",
" <td>905.500321786172</td>\n",
" <td>931.19818468692</td>\n",
" <td>890.416087751634</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>217 rows × 18 columns</p>\n",
"</div>"
],
"text/plain": [
" name country_code currency_code 2002 \\\n",
"0 Afghanistan AF AFN 192.153528278789 \n",
"1 Albania AL ALL 1453.64277660853 \n",
"2 Algeria DZ DZD 1774.29202079911 \n",
"3 American Samoa AS USD NaN \n",
"4 Andorra NaN NaN 24175.3727542522 \n",
"5 Angola AO AOA 775.765518459716 \n",
"6 Antigua and Barbuda AG XCD 10027.8562205839 \n",
"7 Argentina AR ARS 2579.18819898884 \n",
"8 Armenia AM AMD 779.829626131555 \n",
"9 Aruba AW AWG 20433.6541088167 \n",
"10 Australia AU AUD 20059.4520721372 \n",
"11 Austria AT EUR 26351.3756769542 \n",
"12 Azerbaijan AZ AZN 763.101212220367 \n",
"13 Bahamas, The BS BSD 22505.4047934793 \n",
"14 Bahrain BH BHD 13279.0457951397 \n",
"15 Bangladesh BD BDT 401.708153328187 \n",
"16 Barbados BB BBD 11674.9361829092 \n",
"17 Belarus BY BYR 1479.46532113219 \n",
"18 Belgium BE EUR 25052.3302823 \n",
"19 Belize BZ BZD 3556.61608225719 \n",
"20 Benin BJ XOF 411.959075281789 \n",
"21 Bermuda BM BMD 62583.1002034588 \n",
"22 Bhutan BT INR 897.445333164014 \n",
"23 Bolivia BO BOB 913.575853422027 \n",
"24 Bosnia and Herzegovina BA BAM 1746.48638346723 \n",
"25 Botswana BW BWP 3044.12735338963 \n",
"26 Brazil BR BRL 2805.71725723054 \n",
"27 British Virgin Islands VG USD NaN \n",
"28 Brunei Darussalam BN BND 17016.9434933055 \n",
"29 Bulgaria BG BGN 2079.2289749196 \n",
".. ... ... ... ... \n",
"187 Sweden SE SEK 29571.7044643283 \n",
"188 Switzerland CH CHF 41336.7219170303 \n",
"189 Syrian Arab Republic SY SYP 1269.72920825685 \n",
"190 Tajikistan TJ TJS 190.604911236529 \n",
"191 Tanzania TZ TZS 310.207276508511 \n",
"192 Thailand TH THB 2093.97920641937 \n",
"193 Timor-Leste NaN NaN 496.17975117256 \n",
"194 Togo TG XOF 286.758081572586 \n",
"195 Tonga TO TOP 1836.29040439251 \n",
"196 Trinidad and Tobago TT TTD 7049.61006145836 \n",
"197 Tunisia TN TND 2373.83647757576 \n",
"198 Turkey TR TRY 3570.54626341295 \n",
"199 Turkmenistan TM TMT 969.970033452985 \n",
"200 Turks and Caicos Islands TC USD NaN \n",
"201 Tuvalu TV AUD 1621.33358266022 \n",
"202 Uganda UG UGX 243.674624856652 \n",
"203 Ukraine UA UAH 879.475048622777 \n",
"204 United Arab Emirates AE AED 32355.4095972427 \n",
"205 United Kingdom GB GBP 28301.2083322425 \n",
"206 United States US USD 38166.0378407812 \n",
"207 Uruguay UY UYU 4088.77254119908 \n",
"208 Uzbekistan UZ UZS 383.349499748749 \n",
"209 Vanuatu VU VUV 1353.9278386398 \n",
"210 Venezuela, RB VE VEF 3657.19374768603 \n",
"211 Vietnam VN VND 477.105876263106 \n",
"212 Virgin Islands (U.S.) VI USD NaN \n",
"213 West Bank and Gaza NaN NaN 1156.21747345769 \n",
"214 Yemen, Rep. YE YER 567.821963311624 \n",
"215 Zambia ZM ZMW 376.468039539246 \n",
"216 Zimbabwe ZW ZWL 499.716414957462 \n",
"\n",
" 2003 2004 2005 2006 \\\n",
"0 203.651040923182 224.914712193371 257.175794656273 280.245644106914 \n",
"1 1890.68155743544 2416.5882350701 2709.14293056201 3005.0129033756 \n",
"2 2094.89330213298 2600.00651972559 3102.03738422673 3467.54474008596 \n",
"3 NaN NaN NaN NaN \n",
"4 31742.9925847537 37235.4500323146 39990.3304085679 42417.2291456984 \n",
"5 850.075694129697 1135.60456355085 1576.16280066689 2253.83885003865 \n",
"6 10382.6309004545 10993.3692472668 12079.8656950416 13599.908857304 \n",
"7 3330.42866006847 4251.5653466058 5096.25833247505 5904.67813228342 \n",
"8 924.464009817761 1181.9684454224 1625.40776912682 2126.61866107184 \n",
"9 20834.9397101237 22566.6821576324 23302.8319880055 24015.4206122701 \n",
"10 23440.0053221856 30440.8548786229 33982.9504271591 36084.8589777475 \n",
"11 32102.9305523558 36693.4026205182 38242.0425174699 40430.993614499 \n",
"12 883.614008967961 1045.02641527642 1578.36733030667 2473.08577636837 \n",
"13 22008.4337005989 21995.5199216219 23405.8795479327 23721.1562800587 \n",
"14 14541.6160485141 16275.1804236433 18418.0726743768 19669.3195545631 \n",
"15 434.046563233432 462.274879844841 485.852888073473 495.853780201055 \n",
"16 12028.8987405468 12869.3365947615 14223.7777039775 15646.815008726 \n",
"17 1819.4790277163 2378.37489391196 3126.36777779462 3848.58620300891 \n",
"18 30743.9569254283 35589.7129457001 36967.2829204297 38852.3610339939 \n",
"19 3679.79281542143 3831.60983030588 3933.2343731798 4187.23288999866 \n",
"20 509.461088697817 570.685501333771 587.080212422838 609.018608681583 \n",
"21 66111.7252270036 70359.3191088798 75882.0338560339 83912.6977976846 \n",
"22 1009.00623184688 1107.92059564068 1257.54864008661 1346.08577480046 \n",
"23 917.36431048617 978.334757576746 1046.4278428307 1233.59297372996 \n",
"24 2192.64707824367 2619.75325753727 2928.26359035282 3351.96339986152 \n",
"25 4149.04137748834 4879.45946154727 5327.8535176786 5342.1403362253 \n",
"26 3040.50649558819 3596.22457976056 4730.65346838158 5808.34054715979 \n",
"27 NaN NaN NaN NaN \n",
"28 18758.9808946915 22131.9460641106 26337.9181126619 31157.6884478525 \n",
"29 2693.75876041107 3353.56414854374 3852.97775647268 4455.69022418578 \n",
".. ... ... ... ... \n",
"187 36961.4253671424 42442.2204473133 43085.353145957 46256.4716010495 \n",
"188 47960.5649721577 53255.9763084633 54797.5466345741 57348.9278823975 \n",
"189 1261.42609007136 1419.59337922665 1591.53019241227 1779.82104926154 \n",
"190 237.89319314008 311.424112807574 339.768076770367 407.252611650134 \n",
"191 325.550773719717 348.052371292798 446.157893998536 475.908765113372 \n",
"192 2349.38452566541 2643.47893487535 2874.38627417759 3351.11763286401 \n",
"193 487.394976066002 484.088448984765 501.429226481591 464.835169248192 \n",
"194 316.792068666893 356.830803515721 379.18092890047 384.288555620343 \n",
"195 2089.21704269256 2357.14647444959 2565.38579890357 2837.07547156741 \n",
"196 8804.5186659639 10290.5191436384 12323.1365595732 14095.9958152811 \n",
"197 2790.00436823287 3139.53720163156 3217.96864628265 3394.42897986889 \n",
"198 4586.81120315865 5855.53865983905 7117.23324132191 7727.27240453727 \n",
"199 1286.01426124964 1455.93604950756 1706.95672639245 2140.45547216715 \n",
"200 NaN NaN NaN NaN \n",
"201 1901.03347628001 2232.60251748372 2252.89288563217 2353.35608772946 \n",
"202 241.694801118865 292.843015035141 321.435761373761 342.837263983568 \n",
"203 1048.52248790763 1367.35243333629 1828.71762576598 2303.01883093184 \n",
"204 34294.8939976005 37179.6818919642 40298.5242178562 42950.1005841305 \n",
"205 32575.0919626199 38305.8726859929 40047.905967007 42534.3062613449 \n",
"206 39677.1983481058 41921.8097617892 44307.9205848603 46437.0671173065 \n",
"207 3622.05228427976 4117.30885333007 5220.95739601735 5877.87960762231 \n",
"208 396.129968981304 465.119886944025 546.776850185552 642.960414644088 \n",
"209 1580.51066802466 1787.9382648014 1886.38830966499 2047.08828520065 \n",
"210 3233.9561063252 4273.36537157056 5435.87225994853 6740.23677858669 \n",
"211 530.861849364997 606.904378261988 699.499778976363 796.671573774518 \n",
"212 NaN NaN NaN NaN \n",
"213 1257.69857009689 1337.56572430673 1455.18787518115 1441.46170046742 \n",
"214 607.915804267557 696.054960696925 817.082416653512 904.605600055261 \n",
"215 429.007277894455 530.553584072736 691.80945858671 1030.31535972563 \n",
"216 448.373192699451 451.171588554028 443.240135984532 414.680115131526 \n",
"\n",
" 2007 2008 2009 2010 \\\n",
"0 380.400955186598 384.131681276838 458.955781585831 569.940728793286 \n",
"1 3603.01368536638 4370.53964653148 4114.13654490945 4094.35883191918 \n",
"2 3939.55993939808 4912.25194081995 3875.82209542426 4473.48644568115 \n",
"3 NaN NaN NaN NaN \n",
"4 47253.5297963111 46735.9995745016 42701.447136255 39639.386021211 \n",
"5 3151.02243105289 4242.36306234092 3678.94765447179 3886.47935432524 \n",
"6 15276.0682646698 15786.1728395062 13979.2626925883 13017.3103875487 \n",
"7 7226.27029452745 8992.58961919674 8198.56611136286 10332.0323662966 \n",
"8 3080.97095943572 3919.97547381061 2915.5839059087 3124.78401786195 \n",
"9 25921.5382341406 27549.8894224976 24640.4212441218 24289.1415161326 \n",
"10 40957.8304392487 49628.1151270179 42715.1322619629 51845.6548605562 \n",
"11 46586.6502529235 51386.3766511975 47654.1872090808 46659.8408181344 \n",
"12 3851.43786871172 5574.60380218613 4950.29479142375 5842.80578358576 \n",
"13 24306.1424243044 23657.365306222 22043.0125711709 21920.5165867583 \n",
"14 21167.6187062133 23043.0253174017 19166.7082382358 20386.0175551116 \n",
"15 543.082263122362 618.075883559283 683.614422272329 760.331935200195 \n",
"16 16461.8292691759 16569.6049618665 16526.2545517227 15901.4329353355 \n",
"17 4735.95688918873 6376.17311491284 5176.04470138203 5818.8548592158 \n",
"18 44403.8313061102 48424.5892730273 44880.5601517887 44382.8797683492 \n",
"19 4324.83101711444 4470.22079597603 4258.84287648324 4344.13666906088 \n",
"20 685.551675107742 794.870176064085 768.013476447657 732.953622726674 \n",
"21 90849.5869806436 93605.7481653976 88463.3128161375 88207.3275597322 \n",
"22 1755.16170904287 1810.57617704401 1786.81067200588 2201.29307778936 \n",
"23 1389.6317502607 1736.92401415151 1776.85718962366 1981.16010525701 \n",
"24 4107.99623197216 4974.66226666137 4586.20631315947 4475.08813004565 \n",
"25 5666.63784692568 5561.89823998598 5115.11924667202 6244.00257387272 \n",
"26 7246.87010479067 8706.81914190374 8474.88106576607 11121.4209541496 \n",
"27 NaN NaN NaN NaN \n",
"28 32707.7043073602 37798.3935034007 27726.481053695 31453.2243965354 \n",
"29 5932.89967659315 7296.12247858585 6955.98773253421 6752.55217774882 \n",
".. ... ... ... ... \n",
"187 53324.3793724756 55746.8423811175 46207.0592032962 52076.4305245885 \n",
"188 63223.467775151 72119.5608730311 69672.0047147337 74277.1205125567 \n",
"189 2079.98786380715 NaN NaN NaN \n",
"190 523.947651220881 711.503629870563 671.544008840534 744.189892165383 \n",
"191 533.172396689392 657.728743357642 665.344002868127 708.521932325363 \n",
"192 3962.7504988544 4384.78267515745 4231.14036778126 5111.90920222917 \n",
"193 551.720598424389 673.374537904 780.261110851448 875.836569271265 \n",
"194 428.401561823965 522.625007010443 508.54052572385 496.482494202806 \n",
"195 2932.96275815712 3307.28239321081 3106.90237557772 3557.73718366504 \n",
"196 16530.1804420146 21188.118565877 14508.8137365799 15840.4426914159 \n",
"197 3805.15293730174 4342.82317730308 4162.5096689683 4176.59159013024 \n",
"198 9309.50947782175 10382.3181608988 8623.94962718666 10111.5177049589 \n",
"199 2606.74197588003 3918.93492678718 4059.96151102083 4479.01235418457 \n",
"200 NaN NaN NaN NaN \n",
"201 2768.37095732057 3094.62809172302 2763.16030537848 3238.37576273905 \n",
"202 409.87032601315 459.109775900068 557.523595605241 608.813023856722 \n",
"203 3068.60899799696 3891.03782318207 2545.4803410735 2973.99648071562 \n",
"204 42913.7840342254 45720.0178979792 32905.0538494054 34341.9112921486 \n",
"205 48428.1574527987 45195.1569273881 37166.2759654944 38292.8711313583 \n",
"206 48061.5376613353 48401.4273403899 47001.5553496818 48374.0867933094 \n",
"207 7009.67815952936 9062.29053512906 9415.15358319032 11938.2750549849 \n",
"208 830.407694204322 1023.11964110698 1181.84735960066 1377.08214046938 \n",
"209 2393.3346212201 2698.02124012432 2643.47578534313 2965.75223011673 \n",
"210 8325.21658255278 11224.6467026883 11534.8406001136 13581.3533771018 \n",
"211 919.209265568078 1164.61252461712 1232.36967118834 1333.58352635481 \n",
"212 NaN NaN NaN NaN \n",
"213 1575.56340027289 1855.45702045882 1963.20151865719 2338.71987682303 \n",
"214 1181.2151760728 1361.7172085227 1239.83711886653 1310.05383929542 \n",
"215 1103.48657711875 1365.72120522548 1134.77299782945 1456.12652618031 \n",
"216 397.956872258099 327.199083662345 594.495968478092 674.268695411166 \n",
"\n",
" 2011 2012 2013 2014 \\\n",
"0 622.379654358451 690.842629014956 653.347488111011 633.947864294639 \n",
"1 4437.8119990258 4247.83985201907 4412.34557813421 4588.64944014811 \n",
"2 5447.40397556569 5583.61615950131 5491.6144135648 5484.0668056148 \n",
"3 NaN NaN NaN NaN \n",
"4 41630.0525792977 39666.3692147448 42806.5224483021 NaN \n",
"5 4744.98762949589 5086.8484258086 5327.14889219232 5232.69050054132 \n",
"6 12817.8415733094 13525.616220134 13342.0849977054 13432.0792079208 \n",
"7 12800.2018563295 13040.306395228 13027.2048221392 12324.9387857728 \n",
"8 3417.17183599915 3565.5175749254 3716.82892254464 3873.53356580682 \n",
"9 25353.7875446441 NaN NaN NaN \n",
"10 62216.5471294133 67646.1038529626 67652.6832146189 61995.8296976 \n",
"11 51123.5613291663 48324.2540367606 50557.8038059874 51148.3588760796 \n",
"12 7189.69122920765 7393.77187697623 7811.6214184582 7886.45914367274 \n",
"13 21514.8986531628 22112.6083547268 22315.6036533886 22217.4941392075 \n",
"14 22238.7119502059 23063.1322870426 24378.9448284188 24855.2156350086 \n",
"15 838.547801702232 858.933362587621 954.396399715624 1086.80008676935 \n",
"16 15530.8942915589 15317.1390013495 15153.8213753482 15366.2926106288 \n",
"17 6305.77366247653 6721.83490773968 7722.12335060436 8025.30435552468 \n",
"18 47699.8070518961 44734.4523465803 46622.4679873931 47299.8601085612 \n",
"19 4516.23303047149 4673.55519784264 4723.59432062825 4884.3686203818 \n",
"20 799.03555913143 807.688451017232 882.638633279988 903.464924007693 \n",
"21 85973.158416455 85458.455507886 85748.0654143782 NaN \n",
"22 2485.78705216849 2452.15158793741 2383.04472990264 2560.52213174131 \n",
"23 2377.70068972888 2645.29027433174 2948.03291763073 3124.08076212353 \n",
"24 4860.78181134244 4494.64064038047 4748.04069226421 4851.66052786926 \n",
"25 7504.85090744898 6885.82968106945 6806.67746673071 7153.44432535212 \n",
"26 13039.1216499582 12157.3082176473 12071.7779871352 11728.7993875108 \n",
"27 NaN NaN NaN NaN \n",
"28 41787.0214028978 41807.6533410575 39151.2342290391 40979.6419433378 \n",
"29 7750.03988003072 7333.35507303945 7656.63850554922 7851.26542804234 \n",
".. ... ... ... ... \n",
"187 59593.6847982389 57134.0770682404 60283.24522267 58899.9797944845 \n",
"188 88002.6095703805 83208.68654235 84669.2929367996 85610.8420285261 \n",
"189 NaN NaN NaN NaN \n",
"190 841.219870374428 962.439124853526 1048.66690599689 1113.36635446715 \n",
"191 740.383900829825 827.52888076909 909.330141239446 954.618987954616 \n",
"192 5539.49436810396 5915.22114668686 6225.05228315387 5969.94011583791 \n",
"193 1015.71592799663 1127.10821457355 1117.73125130819 1131.23085071824 \n",
"194 572.025703222528 573.207476512184 589.014053731293 629.9976439467 \n",
"195 4226.69274653294 4364.30924422214 4117.31098292096 4114.05211511279 \n",
"196 18287.3907851354 18322.323800986 20217.0322820943 21317.449265568 \n",
"197 4291.87604315683 4179.46434367471 4248.89127558615 4328.90419734881 \n",
"198 10538.4351203671 10539.3703371146 10800.3579763053 10303.8988002501 \n",
"199 5724.53710231112 6797.72116602834 7480.32167773692 8193.72029690445 \n",
"200 NaN NaN NaN NaN \n",
"201 3993.50025430234 4044.19378022487 3880.19087861123 3826.90331140252 \n",
"202 591.438623816353 656.398072749334 674.341641819883 714.567356471156 \n",
"203 3569.75702740477 3855.4212801318 3986.28296611562 3065.16422265266 \n",
"204 39901.2209155518 41712.1242109135 42831.0891322689 43962.7136932011 \n",
"205 41020.3769643089 41294.5148008666 42294.8901157814 46278.5202128829 \n",
"206 49781.8006563523 51433.0470904727 52660.2951049798 54398.4600093994 \n",
"207 14166.5576669096 15092.4720586676 16881.38400062 16737.973101175 \n",
"208 1544.82777273524 1719.03619624155 1877.9645118434 2052.58678135925 \n",
"209 3275.02398203673 3158.4209735273 3167.05530330465 3147.96485986836 \n",
"210 10754.5928790654 12771.5950361107 12265.03113567 NaN \n",
"211 1542.67043610149 1754.5479738641 1907.56438167972 2052.31908380089 \n",
"212 NaN NaN NaN NaN \n",
"213 2663.53702496611 2787.16973802917 2992.20099455427 2960.77800405245 \n",
"214 1282.39883187217 1289.03407763668 1408.14619260488 NaN \n",
"215 1635.54730435222 1724.74356387435 1839.52248112115 1725.97454864009 \n",
"216 768.556409302399 850.827696604891 905.500321786172 931.19818468692 \n",
"\n",
" 2015 2016 \n",
"0 590.269515382605 NaN \n",
"1 3965.01680558488 NaN \n",
"2 4206.03123244958 NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 4102.11858969272 NaN \n",
"6 14128.8785463675 NaN \n",
"7 13431.8783398577 NaN \n",
"8 3499.80421759862 NaN \n",
"9 NaN NaN \n",
"10 56327.7214484289 NaN \n",
"11 43438.8630381343 NaN \n",
"12 5496.34464026248 NaN \n",
"13 22896.9236868716 NaN \n",
"14 23395.7476902684 NaN \n",
"15 1211.70153057661 NaN \n",
"16 15660.6794152314 NaN \n",
"17 5740.45649479562 NaN \n",
"18 40231.2831740081 NaN \n",
"19 4906.9406908683 NaN \n",
"20 779.067867757338 NaN \n",
"21 NaN NaN \n",
"22 2532.45446832741 NaN \n",
"23 3095.3596925636 NaN \n",
"24 4197.80730449044 NaN \n",
"25 6360.64477568565 NaN \n",
"26 8538.5899749574 NaN \n",
"27 NaN NaN \n",
"28 36607.9278817468 NaN \n",
"29 6819.86910816324 NaN \n",
".. ... ... \n",
"187 50272.9415019928 NaN \n",
"188 80214.7301520483 NaN \n",
"189 NaN NaN \n",
"190 925.91188767081 NaN \n",
"191 864.857502346707 NaN \n",
"192 5816.44068998475 NaN \n",
"193 1134.42642789183 NaN \n",
"194 547.974683363941 NaN \n",
"195 NaN NaN \n",
"196 20444.0785895112 NaN \n",
"197 3872.51208364171 NaN \n",
"198 9130.02606479616 NaN \n",
"199 6947.84002260404 NaN \n",
"200 NaN NaN \n",
"201 NaN NaN \n",
"202 675.573466220693 NaN \n",
"203 2114.95471628444 NaN \n",
"204 40438.3763627115 NaN \n",
"205 43734.0001709187 NaN \n",
"206 55836.7926308733 NaN \n",
"207 15573.9009189374 NaN \n",
"208 2132.07244181734 NaN \n",
"209 NaN NaN \n",
"210 NaN NaN \n",
"211 2111.13802366815 NaN \n",
"212 NaN NaN \n",
"213 2866.80010121789 NaN \n",
"214 NaN NaN \n",
"215 1307.78861109883 NaN \n",
"216 890.416087751634 NaN \n",
"\n",
"[217 rows x 18 columns]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Merde gdp and code\n",
"country_gdp = pd.merge(country_gdp, country_codes, left_on='country_code_3', right_on='ISO3166-1-Alpha-3', how='left')\n",
"country_gdp.drop(['official_name_en', 'ISO3166-1-Alpha-3', 'country_code_3'], axis=1, inplace=True)\n",
"country_gdp = country_gdp.rename(columns = {'ISO3166-1-Alpha-2':'country_code',\n",
" 'ISO4217-currency_alphabetic_code':'currency_code'})\n",
"country_gdp.replace('..', np.nan, inplace=True)\n",
"\n",
"# Reorder columns\n",
"cols = list(country_gdp.columns)\n",
"cols.insert(1, cols.pop(cols.index('country_code')))\n",
"cols.insert(2, cols.pop(cols.index('currency_code')))\n",
"country_gdp = country_gdp.reindex(columns= cols)\n",
"\n",
"country_gdp"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def gdp(country_code, disbursal_date):\n",
" def historical_gdp(array):\n",
" array = np.array(map(float, array))\n",
" array = array[~np.isnan(array)] # Remove NaN\n",
" if len(array) == 0: # No GDP values\n",
" return 0\n",
" return float(np.mean(array, dtype=np.float64))\n",
" \n",
" # TODO: Unable to resolve country code WorldBank dataset has wrong alpha 3 codes e.g. Andorra causing issues\n",
" try:\n",
" float(country_code)\n",
" return 0\n",
" except:\n",
" if country_code not in list(country_gdp['country_code']):\n",
" return 0 # TODO: Bad solution ? \n",
" \n",
" # Get the historical average GDP if no disbursal date\n",
" all_gdp = country_gdp[country_gdp.country_code == country_code].values[0][3:]\n",
" if (disbursal_date is None): # or (country_gdp[date][country_gdp.country_code == country_code] == float('Nan')):\n",
" return historical_gdp(all_gdp)\n",
" \n",
" date = str(datetime.strptime(disbursal_date, '%Y-%m-%dT%H:%M:%SZ').year)\n",
" # Get the historical average GDP if no GDP for that year\n",
" if pd.isnull(country_gdp[date][country_gdp.country_code == country_code].values[0]):\n",
" return historical_gdp(all_gdp)\n",
" \n",
" return float(country_gdp[date][country_gdp.country_code == country_code].values[0])\n",
"\n",
"sql_ctx.registerFunction('gdp', gdp, pyspark.sql.types.FloatType())\n",
"# gdp('ZA', '2016-12-13T18:22:55Z')\n",
"\n",
"# sql_ctx.sql(\"\"\"\n",
"# SELECT \n",
"# activity, \n",
"# basket_amount,\n",
"# terms.disbursal_date,\n",
"# gdp(location.country_code, terms.disbursal_date) as gdp\n",
"# FROM loans\n",
"# LIMIT 10\n",
"# \"\"\").collect()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"train, validation, test = loans.randomSplit([.6, .2, .2], 101)\n",
"\n",
"\n",
"train.registerTempTable('loans_train')\n",
"validation.registerTempTable('loans_validation')\n",
"test.registerTempTable('loans_test')\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"# Starts Here - Currency exchange"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Series Name</th>\n",
" <th>Series Code</th>\n",
" <th>Country Name</th>\n",
" <th>Country Code</th>\n",
" <th>2002 [YR2002]</th>\n",
" <th>2003 [YR2003]</th>\n",
" <th>2004 [YR2004]</th>\n",
" <th>2005 [YR2005]</th>\n",
" <th>2006 [YR2006]</th>\n",
" <th>2007 [YR2007]</th>\n",
" <th>2008 [YR2008]</th>\n",
" <th>2009 [YR2009]</th>\n",
" <th>2010 [YR2010]</th>\n",
" <th>2011 [YR2011]</th>\n",
" <th>2012 [YR2012]</th>\n",
" <th>2013 [YR2013]</th>\n",
" <th>2014 [YR2014]</th>\n",
" <th>2015 [YR2015]</th>\n",
" <th>2016 [YR2016]</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>213</th>\n",
" <td>Official exchange rate (LCU per US$, period av...</td>\n",
" <td>PA.NUS.FCRF</td>\n",
" <td>West Bank and Gaza</td>\n",
" <td>WBG</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>214</th>\n",
" <td>Official exchange rate (LCU per US$, period av...</td>\n",
" <td>PA.NUS.FCRF</td>\n",
" <td>Yemen, Rep.</td>\n",
" <td>YEM</td>\n",
" <td>175.625</td>\n",
" <td>183.448333333333</td>\n",
" <td>184.775833333333</td>\n",
" <td>191.509166666667</td>\n",
" <td>197.049166666667</td>\n",
" <td>198.953333333333</td>\n",
" <td>199.764166666667</td>\n",
" <td>202.846666666667</td>\n",
" <td>219.59</td>\n",
" <td>213.8</td>\n",
" <td>214.350833333333</td>\n",
" <td>214.89</td>\n",
" <td>214.89</td>\n",
" <td>214.89</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>215</th>\n",
" <td>Official exchange rate (LCU per US$, period av...</td>\n",
" <td>PA.NUS.FCRF</td>\n",
" <td>Zambia</td>\n",
" <td>ZMB</td>\n",
" <td>4.398595</td>\n",
" <td>4.73327104649872</td>\n",
" <td>4.77887538643579</td>\n",
" <td>4.46350331051587</td>\n",
" <td>3.60307204258249</td>\n",
" <td>4.00252266503643</td>\n",
" <td>3.74566069008764</td>\n",
" <td>5.04610924521235</td>\n",
" <td>4.797136875</td>\n",
" <td>4.86066553209349</td>\n",
" <td>5.14725266514413</td>\n",
" <td>5.39588706794446</td>\n",
" <td>6.15281624812449</td>\n",
" <td>8.63235596234196</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>216</th>\n",
" <td>Official exchange rate (LCU per US$, period av...</td>\n",
" <td>PA.NUS.FCRF</td>\n",
" <td>Zimbabwe</td>\n",
" <td>ZWE</td>\n",
" <td>0.0550982905810338</td>\n",
" <td>0.698216071305723</td>\n",
" <td>5.07441941463195</td>\n",
" <td>22.3890396048255</td>\n",
" <td>164.547356500646</td>\n",
" <td>9686.77166954175</td>\n",
" <td>6723052073.3381</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" <td>..</td>\n",
" </tr>\n",
" <tr>\n",
" <th>217</th>\n",
" <td>Official exchange rate (LCU per US$, period av...</td>\n",
" <td>PA.NUS.FCRF</td>\n",
" <td>Euro area</td>\n",
" <td>EMU</td>\n",
" <td>1.06255166666667</td>\n",
" <td>0.886034166666667</td>\n",
" <td>0.805365</td>\n",
" <td>0.80412</td>\n",
" <td>0.797140833333333</td>\n",
" <td>0.7306375</td>\n",
" <td>0.682674711239873</td>\n",
" <td>0.719843359785615</td>\n",
" <td>0.755044951989835</td>\n",
" <td>0.719355253609154</td>\n",
" <td>0.778293601412852</td>\n",
" <td>0.75315918184727</td>\n",
" <td>0.753730736717402</td>\n",
" <td>0.901658961641278</td>\n",
" <td>..</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Series Name Series Code \\\n",
"213 Official exchange rate (LCU per US$, period av... PA.NUS.FCRF \n",
"214 Official exchange rate (LCU per US$, period av... PA.NUS.FCRF \n",
"215 Official exchange rate (LCU per US$, period av... PA.NUS.FCRF \n",
"216 Official exchange rate (LCU per US$, period av... PA.NUS.FCRF \n",
"217 Official exchange rate (LCU per US$, period av... PA.NUS.FCRF \n",
"\n",
" Country Name Country Code 2002 [YR2002] 2003 [YR2003] \\\n",
"213 West Bank and Gaza WBG .. .. \n",
"214 Yemen, Rep. YEM 175.625 183.448333333333 \n",
"215 Zambia ZMB 4.398595 4.73327104649872 \n",
"216 Zimbabwe ZWE 0.0550982905810338 0.698216071305723 \n",
"217 Euro area EMU 1.06255166666667 0.886034166666667 \n",
"\n",
" 2004 [YR2004] 2005 [YR2005] 2006 [YR2006] 2007 [YR2007] \\\n",
"213 .. .. .. .. \n",
"214 184.775833333333 191.509166666667 197.049166666667 198.953333333333 \n",
"215 4.77887538643579 4.46350331051587 3.60307204258249 4.00252266503643 \n",
"216 5.07441941463195 22.3890396048255 164.547356500646 9686.77166954175 \n",
"217 0.805365 0.80412 0.797140833333333 0.7306375 \n",
"\n",
" 2008 [YR2008] 2009 [YR2009] 2010 [YR2010] \\\n",
"213 .. .. .. \n",
"214 199.764166666667 202.846666666667 219.59 \n",
"215 3.74566069008764 5.04610924521235 4.797136875 \n",
"216 6723052073.3381 .. .. \n",
"217 0.682674711239873 0.719843359785615 0.755044951989835 \n",
"\n",
" 2011 [YR2011] 2012 [YR2012] 2013 [YR2013] \\\n",
"213 .. .. .. \n",
"214 213.8 214.350833333333 214.89 \n",
"215 4.86066553209349 5.14725266514413 5.39588706794446 \n",
"216 .. .. .. \n",
"217 0.719355253609154 0.778293601412852 0.75315918184727 \n",
"\n",
" 2014 [YR2014] 2015 [YR2015] 2016 [YR2016] \n",
"213 .. .. .. \n",
"214 214.89 214.89 .. \n",
"215 6.15281624812449 8.63235596234196 .. \n",
"216 .. .. .. \n",
"217 0.753730736717402 0.901658961641278 .. "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"currencies_raw = pd.read_csv(LOCAL_PATH + 'economic-data/currencies.csv')\n",
"currencies_raw.tail()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Cleanup\n",
"currencies = currencies_raw.drop(country_gdp_raw.columns[[0, 1]], axis=1)\n",
"currencies.columns = ['country_name', 'country_code_3', '2002', '2003', '2004', '2005', '2006',\n",
" '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016']"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>country_name</th>\n",
" <th>country_code</th>\n",
" <th>currency_code</th>\n",
" <th>2002</th>\n",
" <th>2003</th>\n",
" <th>2004</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" <th>2014</th>\n",
" <th>2015</th>\n",
" <th>2016</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>213</th>\n",
" <td>West Bank and Gaza</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>214</th>\n",
" <td>Yemen, Rep.</td>\n",
" <td>YE</td>\n",
" <td>YER</td>\n",
" <td>175.625</td>\n",
" <td>183.448333333333</td>\n",
" <td>184.775833333333</td>\n",
" <td>191.509166666667</td>\n",
" <td>197.049166666667</td>\n",
" <td>198.953333333333</td>\n",
" <td>199.764166666667</td>\n",
" <td>202.846666666667</td>\n",
" <td>219.59</td>\n",
" <td>213.8</td>\n",
" <td>214.350833333333</td>\n",
" <td>214.89</td>\n",
" <td>214.89</td>\n",
" <td>214.89</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>215</th>\n",
" <td>Zambia</td>\n",
" <td>ZM</td>\n",
" <td>ZMW</td>\n",
" <td>4.398595</td>\n",
" <td>4.73327104649872</td>\n",
" <td>4.77887538643579</td>\n",
" <td>4.46350331051587</td>\n",
" <td>3.60307204258249</td>\n",
" <td>4.00252266503643</td>\n",
" <td>3.74566069008764</td>\n",
" <td>5.04610924521235</td>\n",
" <td>4.797136875</td>\n",
" <td>4.86066553209349</td>\n",
" <td>5.14725266514413</td>\n",
" <td>5.39588706794446</td>\n",
" <td>6.15281624812449</td>\n",
" <td>8.63235596234196</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>216</th>\n",
" <td>Zimbabwe</td>\n",
" <td>ZW</td>\n",
" <td>ZWL</td>\n",
" <td>0.0550982905810338</td>\n",
" <td>0.698216071305723</td>\n",
" <td>5.07441941463195</td>\n",
" <td>22.3890396048255</td>\n",
" <td>164.547356500646</td>\n",
" <td>9686.77166954175</td>\n",
" <td>6723052073.3381</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>217</th>\n",
" <td>Euro area</td>\n",
" <td>EU</td>\n",
" <td>EMU</td>\n",
" <td>1.06255166666667</td>\n",
" <td>0.886034166666667</td>\n",
" <td>0.805365</td>\n",
" <td>0.80412</td>\n",
" <td>0.797140833333333</td>\n",
" <td>0.7306375</td>\n",
" <td>0.682674711239873</td>\n",
" <td>0.719843359785615</td>\n",
" <td>0.755044951989835</td>\n",
" <td>0.719355253609154</td>\n",
" <td>0.778293601412852</td>\n",
" <td>0.75315918184727</td>\n",
" <td>0.753730736717402</td>\n",
" <td>0.901658961641278</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" country_name country_code currency_code 2002 \\\n",
"213 West Bank and Gaza NaN NaN NaN \n",
"214 Yemen, Rep. YE YER 175.625 \n",
"215 Zambia ZM ZMW 4.398595 \n",
"216 Zimbabwe ZW ZWL 0.0550982905810338 \n",
"217 Euro area EU EMU 1.06255166666667 \n",
"\n",
" 2003 2004 2005 2006 \\\n",
"213 NaN NaN NaN NaN \n",
"214 183.448333333333 184.775833333333 191.509166666667 197.049166666667 \n",
"215 4.73327104649872 4.77887538643579 4.46350331051587 3.60307204258249 \n",
"216 0.698216071305723 5.07441941463195 22.3890396048255 164.547356500646 \n",
"217 0.886034166666667 0.805365 0.80412 0.797140833333333 \n",
"\n",
" 2007 2008 2009 \\\n",
"213 NaN NaN NaN \n",
"214 198.953333333333 199.764166666667 202.846666666667 \n",
"215 4.00252266503643 3.74566069008764 5.04610924521235 \n",
"216 9686.77166954175 6723052073.3381 NaN \n",
"217 0.7306375 0.682674711239873 0.719843359785615 \n",
"\n",
" 2010 2011 2012 \\\n",
"213 NaN NaN NaN \n",
"214 219.59 213.8 214.350833333333 \n",
"215 4.797136875 4.86066553209349 5.14725266514413 \n",
"216 NaN NaN NaN \n",
"217 0.755044951989835 0.719355253609154 0.778293601412852 \n",
"\n",
" 2013 2014 2015 2016 \n",
"213 NaN NaN NaN NaN \n",
"214 214.89 214.89 214.89 NaN \n",
"215 5.39588706794446 6.15281624812449 8.63235596234196 NaN \n",
"216 NaN NaN NaN NaN \n",
"217 0.75315918184727 0.753730736717402 0.901658961641278 NaN "
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get ISO 2 code\n",
"currencies = pd.merge(currencies, country_codes, left_on='country_code_3', right_on='ISO3166-1-Alpha-3', how='left')\n",
"currencies.drop(['official_name_en', 'ISO3166-1-Alpha-3', 'country_code_3'], axis=1, inplace=True)\n",
"currencies = currencies.rename(columns = {'ISO3166-1-Alpha-2':'country_code',\n",
" 'ISO4217-currency_alphabetic_code':'currency_code'})\n",
"currencies.replace('..', np.nan, inplace=True)\n",
"\n",
"# Add code for European Union\n",
"currencies.set_value(217, 'country_code', 'EU')\n",
"currencies.set_value(217, 'currency_code', 'EMU')\n",
"\n",
"# Reorder columns\n",
"cols = list(currencies.columns)\n",
"cols.insert(1, cols.pop(cols.index('country_code')))\n",
"cols.insert(2, cols.pop(cols.index('currency_code')))\n",
"currencies = currencies.reindex(columns=cols)\n",
"\n",
"currencies.tail()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def xchange_rate(country_code, disbursal_date):\n",
" def historical_rates(array):\n",
" array = np.array(map(float, array))\n",
" array = array[~np.isnan(array)] # Remove NaN\n",
" if len(array) == 0: # No rate values\n",
" return 1\n",
" return float(np.mean(array, dtype=np.float64))\n",
" \n",
" eu = ['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','DE','GR','HU','IE',\n",
" 'IT','LV','LT','LU','MT','NL','PL','PT','RO','SK','SI','ES','SE','GB']\n",
" us = ['AS','GU','MP','PR','UM','VI']\n",
" try:\n",
" float(country_code) # Country code unknown?\n",
" if pd.isnull(country_code):\n",
" return 1 # TODO: Bad solution ??\n",
" except:\n",
" if country_code in eu:\n",
" country_code = 'EU'\n",
" elif country_code in us:\n",
" country_code = 'US'\n",
" if country_code not in list(currencies['country_code']):\n",
" return 1\n",
" \n",
" \n",
" # TODO: Unable to resolve country code WorldBank dataset has wrong alpha 3 codes e.g. Andorra causing\n",
" try:\n",
" float(country_code)\n",
" return 0\n",
" except:\n",
" if country_code not in list(currencies['country_code']):\n",
" return 0 # TODO: Bad solution \n",
" \n",
" # Get the historical average exchange rate if no disbursal date\n",
" all_rates = currencies[currencies.country_code == country_code].values[0][3:]\n",
" if (disbursal_date is None): # or (country_gdp[date][country_gdp.country_code == country_code] == float('Nan')):\n",
" return historical_rates(all_rates)\n",
" \n",
" date = str(datetime.strptime(disbursal_date, '%Y-%m-%dT%H:%M:%SZ').year)\n",
" # Get the historical average exchange rate if no GDP for that year\n",
" if pd.isnull(currencies[date][currencies.country_code == country_code].values[0]):\n",
" return historical_rates(all_rates)\n",
" \n",
" return float(currencies[date][currencies.country_code == country_code].values[0])\n",
"\n",
"sql_ctx.registerFunction('xchange_rate', xchange_rate, pyspark.sql.types.FloatType())\n",
"# xchange_rate('BE', '2016-12-13T18:22:55Z') \n",
"\n",
"# sql_ctx.sql(\"\"\"\n",
"# SELECT \n",
"# xchange_rate(location.country_code, terms.disbursal_date) as xchange_rate\n",
"# FROM loans\n",
"# LIMIT 20\n",
"# \"\"\").collect()"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def extract_tags(tags):\n",
" value = []\n",
" if len(tags) != 0:\n",
" value = [item for (item,) in tags]\n",
" return ','.join(value)\n",
"\n",
"sql_ctx.registerFunction('extract_tags', extract_tags, pyspark.sql.types.StringType())\n",
"\n",
" \n",
"# # unpack_tags([('volunteer_pick',), ('volunteer_like',)])\n",
"\n",
"# sql_ctx.registerFunction('unpack_tags', unpack_tags)\n",
"# sql_ctx.sql(\n",
"# \"\"\"\n",
"# SELECT \n",
"# unpack_tags(tags) as tags\n",
"# FROM loans\n",
"# LIMIT 20000\n",
"# \"\"\"\n",
"# ).collect()"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"\n",
"query = '''\n",
"SELECT\n",
" id,\n",
" activity,\n",
" size(borrowers) as num_borrowers,\n",
" male_proportion(borrowers) as male_proportion,\n",
" lender_count,\n",
" location.country,\n",
" location.country_code,\n",
" partner_id,\n",
" sector,\n",
" extract_tags(tags) as tags,\n",
" DATEDIFF(terms.disbursal_date, planned_expiration_date) as loan_length,\n",
" terms.disbursal_amount,\n",
" terms.disbursal_currency,\n",
" terms.disbursal_date,\n",
" size(terms.scheduled_payments) as num_repayments,\n",
" terms.repayment_interval,\n",
" CASE WHEN\n",
" (status = 'defaulted') OR\n",
" (status = 'deleted') OR\n",
" (status = 'issue') OR\n",
" (status = 'inactive_expired') OR\n",
" (status = 'expired') OR\n",
" (status = 'inactive') OR\n",
" (delinquent = True) THEN 1 ELSE 0 END AS bad_loan,\n",
" gdp(location.country_code, terms.disbursal_date) as gdp,\n",
" xchange_rate(location.country_code, terms.disbursal_date) as xchange_rate,\n",
" status,\n",
" delinquent\n",
" \n",
"FROM {}\n",
"WHERE\n",
" status != 'fundraising' AND\n",
" status != 'funded'\n",
"'''# Removed CASE WHEN (status = 'refunded') as it appears not to be bad loan indicator\n",
"\n",
"train_filtered = sql_ctx.sql(query.format('loans_train'))\n",
"# sparkSql.sql(query.format('loans_validation')).write.json('validation_data-filtered.json')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prediction"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"loans_pd = sql_ctx.sql(query2.format('loans')).toPandas()"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>activity</th>\n",
" <th>num_borrowers</th>\n",
" <th>male_proportion</th>\n",
" <th>lender_count</th>\n",
" <th>country</th>\n",
" <th>country_code</th>\n",
" <th>partner_id</th>\n",
" <th>sector</th>\n",
" <th>tags</th>\n",
" <th>...</th>\n",
" <th>disbursal_amount</th>\n",
" <th>disbursal_currency</th>\n",
" <th>disbursal_date</th>\n",
" <th>num_repayments</th>\n",
" <th>repayment_interval</th>\n",
" <th>bad_loan</th>\n",
" <th>gdp</th>\n",
" <th>xchange_rate</th>\n",
" <th>status</th>\n",
" <th>delinquent</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1224</td>\n",
" <td>Clothing Sales</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>Honduras</td>\n",
" <td>HN</td>\n",
" <td>5</td>\n",
" <td>Clothing</td>\n",
" <td></td>\n",
" <td>...</td>\n",
" <td>250.0</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>1</td>\n",
" <td>1884.941162</td>\n",
" <td>18.520081</td>\n",
" <td>deleted</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>5320</td>\n",
" <td>Food Production/Sales</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>7</td>\n",
" <td>Ghana</td>\n",
" <td>GH</td>\n",
" <td>19</td>\n",
" <td>Food</td>\n",
" <td></td>\n",
" <td>...</td>\n",
" <td>500.0</td>\n",
" <td>USD</td>\n",
" <td>2007-03-15T04:52:22Z</td>\n",
" <td>9</td>\n",
" <td>Monthly</td>\n",
" <td>0</td>\n",
" <td>1099.022339</td>\n",
" <td>0.935248</td>\n",
" <td>paid</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>9416</td>\n",
" <td>Food Production/Sales</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>3</td>\n",
" <td>Vietnam</td>\n",
" <td>VN</td>\n",
" <td>41</td>\n",
" <td>Food</td>\n",
" <td></td>\n",
" <td>...</td>\n",
" <td>75.0</td>\n",
" <td>USD</td>\n",
" <td>2007-05-17T22:02:42Z</td>\n",
" <td>6</td>\n",
" <td>Monthly</td>\n",
" <td>0</td>\n",
" <td>919.209290</td>\n",
" <td>16105.125000</td>\n",
" <td>paid</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>13512</td>\n",
" <td>Clothing Sales</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>10</td>\n",
" <td>Nigeria</td>\n",
" <td>NG</td>\n",
" <td>20</td>\n",
" <td>Clothing</td>\n",
" <td></td>\n",
" <td>...</td>\n",
" <td>450.0</td>\n",
" <td>USD</td>\n",
" <td>2007-07-20T16:35:52Z</td>\n",
" <td>8</td>\n",
" <td>Monthly</td>\n",
" <td>0</td>\n",
" <td>1131.147705</td>\n",
" <td>125.808105</td>\n",
" <td>paid</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>17608</td>\n",
" <td>Livestock</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>36</td>\n",
" <td>Cote D'Ivoire</td>\n",
" <td>CI</td>\n",
" <td>53</td>\n",
" <td>Agriculture</td>\n",
" <td></td>\n",
" <td>...</td>\n",
" <td>950.0</td>\n",
" <td>USD</td>\n",
" <td>2007-09-20T02:55:18Z</td>\n",
" <td>12</td>\n",
" <td>Monthly</td>\n",
" <td>0</td>\n",
" <td>1078.541504</td>\n",
" <td>479.266785</td>\n",
" <td>paid</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" id activity num_borrowers male_proportion lender_count \\\n",
"0 1224 Clothing Sales 1 0.0 0 \n",
"1 5320 Food Production/Sales 1 0.0 7 \n",
"2 9416 Food Production/Sales 1 0.0 3 \n",
"3 13512 Clothing Sales 1 0.0 10 \n",
"4 17608 Livestock 1 0.0 36 \n",
"\n",
" country country_code partner_id sector tags ... \\\n",
"0 Honduras HN 5 Clothing ... \n",
"1 Ghana GH 19 Food ... \n",
"2 Vietnam VN 41 Food ... \n",
"3 Nigeria NG 20 Clothing ... \n",
"4 Cote D'Ivoire CI 53 Agriculture ... \n",
"\n",
" disbursal_amount disbursal_currency disbursal_date num_repayments \\\n",
"0 250.0 None None 0 \n",
"1 500.0 USD 2007-03-15T04:52:22Z 9 \n",
"2 75.0 USD 2007-05-17T22:02:42Z 6 \n",
"3 450.0 USD 2007-07-20T16:35:52Z 8 \n",
"4 950.0 USD 2007-09-20T02:55:18Z 12 \n",
"\n",
" repayment_interval bad_loan gdp xchange_rate status delinquent \n",
"0 None 1 1884.941162 18.520081 deleted None \n",
"1 Monthly 0 1099.022339 0.935248 paid None \n",
"2 Monthly 0 919.209290 16105.125000 paid None \n",
"3 Monthly 0 1131.147705 125.808105 paid None \n",
"4 Monthly 0 1078.541504 479.266785 paid None \n",
"\n",
"[5 rows x 21 columns]"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"loans_pd.head()"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"loans_pd.fillna(0, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"loans_pd = loans_pd.drop(['status', 'delinquent'], axis=1)\n",
"loans_dummies = pd.get_dummies(loans_pd)\n",
"\n",
"train, test = train_test_split(loans_dummies, test_size=0.30, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"11 0\n",
"47 0\n",
"85 0\n",
"28 1\n",
"93 1\n",
"Name: bad_loan, dtype: int64"
]
},
"execution_count": 168,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_target = pd.Series(train['bad_loan'])\n",
"train_ids = pd.Series(test['id'])\n",
"\n",
"test_target = pd.Series(test['bad_loan'])\n",
"test_ids = pd.Series(test['id'])\n",
"\n",
"train = train.drop(['id', 'bad_loan'], axis=1)\n",
"test = test.drop(['id', 'bad_loan'], axis=1)\n",
"\n",
"train_target.head()"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"train_data = train.as_matrix()\n",
"test_data = test.as_matrix()"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn import svm\n",
"\n",
"clf = svm.SVC(gamma=0.001, C=100.)"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.93333333333333335"
]
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf.fit(train_data, train_target)\n",
"\n",
"predicted = clf.predict(test_data)\n",
"np.mean(predicted == test_target)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 0
}