diff --git a/Basic Prediction.ipynb b/Basic Prediction.ipynb
new file mode 100644
index 0000000..c47488b
--- /dev/null
+++ b/Basic Prediction.ipynb
@@ -0,0 +1,3726 @@
+{
+ "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": [
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " official_name_en | \n",
+ " official_name_fr | \n",
+ " ISO3166-1-Alpha-2 | \n",
+ " ISO3166-1-Alpha-3 | \n",
+ " ISO3166-1-numeric | \n",
+ " ITU | \n",
+ " MARC | \n",
+ " WMO | \n",
+ " DS | \n",
+ " ... | \n",
+ " ISO4217-currency_minor_unit | \n",
+ " ISO4217-currency_name | \n",
+ " ISO4217-currency_numeric_code | \n",
+ " is_independent | \n",
+ " Capital | \n",
+ " Continent | \n",
+ " TLD | \n",
+ " Languages | \n",
+ " geonameid | \n",
+ " EDGAR | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " NaN | \n",
+ " Channel Islands | \n",
+ " Îles Anglo-Normandes | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 830 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " NaN | \n",
+ " Sark | \n",
+ " Sercq | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 680 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Afghanistan | \n",
+ " Afghanistan | \n",
+ " Afghanistan | \n",
+ " AF | \n",
+ " AFG | \n",
+ " 4 | \n",
+ " AFG | \n",
+ " af | \n",
+ " AF | \n",
+ " AFG | \n",
+ " ... | \n",
+ " 2.0 | \n",
+ " Afghani | \n",
+ " 971.0 | \n",
+ " Yes | \n",
+ " Kabul | \n",
+ " AS | \n",
+ " .af | \n",
+ " fa-AF,ps,uz-AF,tk | \n",
+ " 1149361.0 | \n",
+ " B2 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " Albania | \n",
+ " Albania | \n",
+ " Albanie | \n",
+ " AL | \n",
+ " ALB | \n",
+ " 8 | \n",
+ " ALB | \n",
+ " aa | \n",
+ " AB | \n",
+ " AL | \n",
+ " ... | \n",
+ " 2.0 | \n",
+ " Lek | \n",
+ " 8.0 | \n",
+ " Yes | \n",
+ " Tirana | \n",
+ " EU | \n",
+ " .al | \n",
+ " sq,el | \n",
+ " 783754.0 | \n",
+ " B3 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Algeria | \n",
+ " Algeria | \n",
+ " Algérie | \n",
+ " DZ | \n",
+ " DZA | \n",
+ " 12 | \n",
+ " ALG | \n",
+ " ae | \n",
+ " AL | \n",
+ " DZ | \n",
+ " ... | \n",
+ " 2.0 | \n",
+ " Algerian Dinar | \n",
+ " 12.0 | \n",
+ " Yes | \n",
+ " Algiers | \n",
+ " AF | \n",
+ " .dz | \n",
+ " ar-DZ | \n",
+ " 2589581.0 | \n",
+ " B4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 27 columns
\n",
+ "
"
+ ],
+ "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": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Series Name | \n",
+ " Series Code | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " 2002 [YR2002] | \n",
+ " 2003 [YR2003] | \n",
+ " 2004 [YR2004] | \n",
+ " 2005 [YR2005] | \n",
+ " 2006 [YR2006] | \n",
+ " 2007 [YR2007] | \n",
+ " 2008 [YR2008] | \n",
+ " 2009 [YR2009] | \n",
+ " 2010 [YR2010] | \n",
+ " 2011 [YR2011] | \n",
+ " 2012 [YR2012] | \n",
+ " 2013 [YR2013] | \n",
+ " 2014 [YR2014] | \n",
+ " 2015 [YR2015] | \n",
+ " 2016 [YR2016] | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " GDP per capita (current US$) | \n",
+ " NY.GDP.PCAP.CD | \n",
+ " Afghanistan | \n",
+ " AFG | \n",
+ " 192.153528278789 | \n",
+ " 203.651040923182 | \n",
+ " 224.914712193371 | \n",
+ " 257.175794656273 | \n",
+ " 280.245644106914 | \n",
+ " 380.400955186598 | \n",
+ " 384.131681276838 | \n",
+ " 458.955781585831 | \n",
+ " 569.940728793286 | \n",
+ " 622.379654358451 | \n",
+ " 690.842629014956 | \n",
+ " 653.347488111011 | \n",
+ " 633.947864294639 | \n",
+ " 590.269515382605 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " GDP per capita (current US$) | \n",
+ " NY.GDP.PCAP.CD | \n",
+ " Albania | \n",
+ " ALB | \n",
+ " 1453.64277660853 | \n",
+ " 1890.68155743544 | \n",
+ " 2416.5882350701 | \n",
+ " 2709.14293056201 | \n",
+ " 3005.0129033756 | \n",
+ " 3603.01368536638 | \n",
+ " 4370.53964653148 | \n",
+ " 4114.13654490945 | \n",
+ " 4094.35883191918 | \n",
+ " 4437.8119990258 | \n",
+ " 4247.83985201907 | \n",
+ " 4412.34557813421 | \n",
+ " 4588.64944014811 | \n",
+ " 3965.01680558488 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " GDP per capita (current US$) | \n",
+ " NY.GDP.PCAP.CD | \n",
+ " Algeria | \n",
+ " DZA | \n",
+ " 1774.29202079911 | \n",
+ " 2094.89330213298 | \n",
+ " 2600.00651972559 | \n",
+ " 3102.03738422673 | \n",
+ " 3467.54474008596 | \n",
+ " 3939.55993939808 | \n",
+ " 4912.25194081995 | \n",
+ " 3875.82209542426 | \n",
+ " 4473.48644568115 | \n",
+ " 5447.40397556569 | \n",
+ " 5583.61615950131 | \n",
+ " 5491.6144135648 | \n",
+ " 5484.0668056148 | \n",
+ " 4206.03123244958 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " GDP per capita (current US$) | \n",
+ " NY.GDP.PCAP.CD | \n",
+ " American Samoa | \n",
+ " ASM | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " GDP per capita (current US$) | \n",
+ " NY.GDP.PCAP.CD | \n",
+ " Andorra | \n",
+ " ADO | \n",
+ " 24175.3727542522 | \n",
+ " 31742.9925847537 | \n",
+ " 37235.4500323146 | \n",
+ " 39990.3304085679 | \n",
+ " 42417.2291456984 | \n",
+ " 47253.5297963111 | \n",
+ " 46735.9995745016 | \n",
+ " 42701.447136255 | \n",
+ " 39639.386021211 | \n",
+ " 41630.0525792977 | \n",
+ " 39666.3692147448 | \n",
+ " 42806.5224483021 | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "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": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " official_name_en | \n",
+ " ISO3166-1-Alpha-2 | \n",
+ " ISO3166-1-Alpha-3 | \n",
+ " ISO4217-currency_alphabetic_code | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Channel Islands | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Sark | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Afghanistan | \n",
+ " AF | \n",
+ " AFG | \n",
+ " AFN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " Albania | \n",
+ " AL | \n",
+ " ALB | \n",
+ " ALL | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Algeria | \n",
+ " DZ | \n",
+ " DZA | \n",
+ " DZD | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " American Samoa | \n",
+ " AS | \n",
+ " ASM | \n",
+ " USD | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " Andorra | \n",
+ " AD | \n",
+ " AND | \n",
+ " EUR | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " Angola | \n",
+ " AO | \n",
+ " AGO | \n",
+ " AOA | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " Anguilla | \n",
+ " AI | \n",
+ " AIA | \n",
+ " XCD | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " NaN | \n",
+ " AQ | \n",
+ " ATA | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "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": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " country_code_3 | \n",
+ " 2002 | \n",
+ " 2003 | \n",
+ " 2004 | \n",
+ " 2005 | \n",
+ " 2006 | \n",
+ " 2007 | \n",
+ " 2008 | \n",
+ " 2009 | \n",
+ " 2010 | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Afghanistan | \n",
+ " AFG | \n",
+ " 192.153528278789 | \n",
+ " 203.651040923182 | \n",
+ " 224.914712193371 | \n",
+ " 257.175794656273 | \n",
+ " 280.245644106914 | \n",
+ " 380.400955186598 | \n",
+ " 384.131681276838 | \n",
+ " 458.955781585831 | \n",
+ " 569.940728793286 | \n",
+ " 622.379654358451 | \n",
+ " 690.842629014956 | \n",
+ " 653.347488111011 | \n",
+ " 633.947864294639 | \n",
+ " 590.269515382605 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Albania | \n",
+ " ALB | \n",
+ " 1453.64277660853 | \n",
+ " 1890.68155743544 | \n",
+ " 2416.5882350701 | \n",
+ " 2709.14293056201 | \n",
+ " 3005.0129033756 | \n",
+ " 3603.01368536638 | \n",
+ " 4370.53964653148 | \n",
+ " 4114.13654490945 | \n",
+ " 4094.35883191918 | \n",
+ " 4437.8119990258 | \n",
+ " 4247.83985201907 | \n",
+ " 4412.34557813421 | \n",
+ " 4588.64944014811 | \n",
+ " 3965.01680558488 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Algeria | \n",
+ " DZA | \n",
+ " 1774.29202079911 | \n",
+ " 2094.89330213298 | \n",
+ " 2600.00651972559 | \n",
+ " 3102.03738422673 | \n",
+ " 3467.54474008596 | \n",
+ " 3939.55993939808 | \n",
+ " 4912.25194081995 | \n",
+ " 3875.82209542426 | \n",
+ " 4473.48644568115 | \n",
+ " 5447.40397556569 | \n",
+ " 5583.61615950131 | \n",
+ " 5491.6144135648 | \n",
+ " 5484.0668056148 | \n",
+ " 4206.03123244958 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " American Samoa | \n",
+ " ASM | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Andorra | \n",
+ " ADO | \n",
+ " 24175.3727542522 | \n",
+ " 31742.9925847537 | \n",
+ " 37235.4500323146 | \n",
+ " 39990.3304085679 | \n",
+ " 42417.2291456984 | \n",
+ " 47253.5297963111 | \n",
+ " 46735.9995745016 | \n",
+ " 42701.447136255 | \n",
+ " 39639.386021211 | \n",
+ " 41630.0525792977 | \n",
+ " 39666.3692147448 | \n",
+ " 42806.5224483021 | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "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": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " country_code | \n",
+ " currency_code | \n",
+ " 2002 | \n",
+ " 2003 | \n",
+ " 2004 | \n",
+ " 2005 | \n",
+ " 2006 | \n",
+ " 2007 | \n",
+ " 2008 | \n",
+ " 2009 | \n",
+ " 2010 | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Afghanistan | \n",
+ " AF | \n",
+ " AFN | \n",
+ " 192.153528278789 | \n",
+ " 203.651040923182 | \n",
+ " 224.914712193371 | \n",
+ " 257.175794656273 | \n",
+ " 280.245644106914 | \n",
+ " 380.400955186598 | \n",
+ " 384.131681276838 | \n",
+ " 458.955781585831 | \n",
+ " 569.940728793286 | \n",
+ " 622.379654358451 | \n",
+ " 690.842629014956 | \n",
+ " 653.347488111011 | \n",
+ " 633.947864294639 | \n",
+ " 590.269515382605 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Albania | \n",
+ " AL | \n",
+ " ALL | \n",
+ " 1453.64277660853 | \n",
+ " 1890.68155743544 | \n",
+ " 2416.5882350701 | \n",
+ " 2709.14293056201 | \n",
+ " 3005.0129033756 | \n",
+ " 3603.01368536638 | \n",
+ " 4370.53964653148 | \n",
+ " 4114.13654490945 | \n",
+ " 4094.35883191918 | \n",
+ " 4437.8119990258 | \n",
+ " 4247.83985201907 | \n",
+ " 4412.34557813421 | \n",
+ " 4588.64944014811 | \n",
+ " 3965.01680558488 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Algeria | \n",
+ " DZ | \n",
+ " DZD | \n",
+ " 1774.29202079911 | \n",
+ " 2094.89330213298 | \n",
+ " 2600.00651972559 | \n",
+ " 3102.03738422673 | \n",
+ " 3467.54474008596 | \n",
+ " 3939.55993939808 | \n",
+ " 4912.25194081995 | \n",
+ " 3875.82209542426 | \n",
+ " 4473.48644568115 | \n",
+ " 5447.40397556569 | \n",
+ " 5583.61615950131 | \n",
+ " 5491.6144135648 | \n",
+ " 5484.0668056148 | \n",
+ " 4206.03123244958 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " American Samoa | \n",
+ " AS | \n",
+ " USD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Andorra | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 24175.3727542522 | \n",
+ " 31742.9925847537 | \n",
+ " 37235.4500323146 | \n",
+ " 39990.3304085679 | \n",
+ " 42417.2291456984 | \n",
+ " 47253.5297963111 | \n",
+ " 46735.9995745016 | \n",
+ " 42701.447136255 | \n",
+ " 39639.386021211 | \n",
+ " 41630.0525792977 | \n",
+ " 39666.3692147448 | \n",
+ " 42806.5224483021 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " Angola | \n",
+ " AO | \n",
+ " AOA | \n",
+ " 775.765518459716 | \n",
+ " 850.075694129697 | \n",
+ " 1135.60456355085 | \n",
+ " 1576.16280066689 | \n",
+ " 2253.83885003865 | \n",
+ " 3151.02243105289 | \n",
+ " 4242.36306234092 | \n",
+ " 3678.94765447179 | \n",
+ " 3886.47935432524 | \n",
+ " 4744.98762949589 | \n",
+ " 5086.8484258086 | \n",
+ " 5327.14889219232 | \n",
+ " 5232.69050054132 | \n",
+ " 4102.11858969272 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " Antigua and Barbuda | \n",
+ " AG | \n",
+ " XCD | \n",
+ " 10027.8562205839 | \n",
+ " 10382.6309004545 | \n",
+ " 10993.3692472668 | \n",
+ " 12079.8656950416 | \n",
+ " 13599.908857304 | \n",
+ " 15276.0682646698 | \n",
+ " 15786.1728395062 | \n",
+ " 13979.2626925883 | \n",
+ " 13017.3103875487 | \n",
+ " 12817.8415733094 | \n",
+ " 13525.616220134 | \n",
+ " 13342.0849977054 | \n",
+ " 13432.0792079208 | \n",
+ " 14128.8785463675 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " Argentina | \n",
+ " AR | \n",
+ " ARS | \n",
+ " 2579.18819898884 | \n",
+ " 3330.42866006847 | \n",
+ " 4251.5653466058 | \n",
+ " 5096.25833247505 | \n",
+ " 5904.67813228342 | \n",
+ " 7226.27029452745 | \n",
+ " 8992.58961919674 | \n",
+ " 8198.56611136286 | \n",
+ " 10332.0323662966 | \n",
+ " 12800.2018563295 | \n",
+ " 13040.306395228 | \n",
+ " 13027.2048221392 | \n",
+ " 12324.9387857728 | \n",
+ " 13431.8783398577 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " Armenia | \n",
+ " AM | \n",
+ " AMD | \n",
+ " 779.829626131555 | \n",
+ " 924.464009817761 | \n",
+ " 1181.9684454224 | \n",
+ " 1625.40776912682 | \n",
+ " 2126.61866107184 | \n",
+ " 3080.97095943572 | \n",
+ " 3919.97547381061 | \n",
+ " 2915.5839059087 | \n",
+ " 3124.78401786195 | \n",
+ " 3417.17183599915 | \n",
+ " 3565.5175749254 | \n",
+ " 3716.82892254464 | \n",
+ " 3873.53356580682 | \n",
+ " 3499.80421759862 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " Aruba | \n",
+ " AW | \n",
+ " AWG | \n",
+ " 20433.6541088167 | \n",
+ " 20834.9397101237 | \n",
+ " 22566.6821576324 | \n",
+ " 23302.8319880055 | \n",
+ " 24015.4206122701 | \n",
+ " 25921.5382341406 | \n",
+ " 27549.8894224976 | \n",
+ " 24640.4212441218 | \n",
+ " 24289.1415161326 | \n",
+ " 25353.7875446441 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " Australia | \n",
+ " AU | \n",
+ " AUD | \n",
+ " 20059.4520721372 | \n",
+ " 23440.0053221856 | \n",
+ " 30440.8548786229 | \n",
+ " 33982.9504271591 | \n",
+ " 36084.8589777475 | \n",
+ " 40957.8304392487 | \n",
+ " 49628.1151270179 | \n",
+ " 42715.1322619629 | \n",
+ " 51845.6548605562 | \n",
+ " 62216.5471294133 | \n",
+ " 67646.1038529626 | \n",
+ " 67652.6832146189 | \n",
+ " 61995.8296976 | \n",
+ " 56327.7214484289 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " Austria | \n",
+ " AT | \n",
+ " EUR | \n",
+ " 26351.3756769542 | \n",
+ " 32102.9305523558 | \n",
+ " 36693.4026205182 | \n",
+ " 38242.0425174699 | \n",
+ " 40430.993614499 | \n",
+ " 46586.6502529235 | \n",
+ " 51386.3766511975 | \n",
+ " 47654.1872090808 | \n",
+ " 46659.8408181344 | \n",
+ " 51123.5613291663 | \n",
+ " 48324.2540367606 | \n",
+ " 50557.8038059874 | \n",
+ " 51148.3588760796 | \n",
+ " 43438.8630381343 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " Azerbaijan | \n",
+ " AZ | \n",
+ " AZN | \n",
+ " 763.101212220367 | \n",
+ " 883.614008967961 | \n",
+ " 1045.02641527642 | \n",
+ " 1578.36733030667 | \n",
+ " 2473.08577636837 | \n",
+ " 3851.43786871172 | \n",
+ " 5574.60380218613 | \n",
+ " 4950.29479142375 | \n",
+ " 5842.80578358576 | \n",
+ " 7189.69122920765 | \n",
+ " 7393.77187697623 | \n",
+ " 7811.6214184582 | \n",
+ " 7886.45914367274 | \n",
+ " 5496.34464026248 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " Bahamas, The | \n",
+ " BS | \n",
+ " BSD | \n",
+ " 22505.4047934793 | \n",
+ " 22008.4337005989 | \n",
+ " 21995.5199216219 | \n",
+ " 23405.8795479327 | \n",
+ " 23721.1562800587 | \n",
+ " 24306.1424243044 | \n",
+ " 23657.365306222 | \n",
+ " 22043.0125711709 | \n",
+ " 21920.5165867583 | \n",
+ " 21514.8986531628 | \n",
+ " 22112.6083547268 | \n",
+ " 22315.6036533886 | \n",
+ " 22217.4941392075 | \n",
+ " 22896.9236868716 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " Bahrain | \n",
+ " BH | \n",
+ " BHD | \n",
+ " 13279.0457951397 | \n",
+ " 14541.6160485141 | \n",
+ " 16275.1804236433 | \n",
+ " 18418.0726743768 | \n",
+ " 19669.3195545631 | \n",
+ " 21167.6187062133 | \n",
+ " 23043.0253174017 | \n",
+ " 19166.7082382358 | \n",
+ " 20386.0175551116 | \n",
+ " 22238.7119502059 | \n",
+ " 23063.1322870426 | \n",
+ " 24378.9448284188 | \n",
+ " 24855.2156350086 | \n",
+ " 23395.7476902684 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " Bangladesh | \n",
+ " BD | \n",
+ " BDT | \n",
+ " 401.708153328187 | \n",
+ " 434.046563233432 | \n",
+ " 462.274879844841 | \n",
+ " 485.852888073473 | \n",
+ " 495.853780201055 | \n",
+ " 543.082263122362 | \n",
+ " 618.075883559283 | \n",
+ " 683.614422272329 | \n",
+ " 760.331935200195 | \n",
+ " 838.547801702232 | \n",
+ " 858.933362587621 | \n",
+ " 954.396399715624 | \n",
+ " 1086.80008676935 | \n",
+ " 1211.70153057661 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " Barbados | \n",
+ " BB | \n",
+ " BBD | \n",
+ " 11674.9361829092 | \n",
+ " 12028.8987405468 | \n",
+ " 12869.3365947615 | \n",
+ " 14223.7777039775 | \n",
+ " 15646.815008726 | \n",
+ " 16461.8292691759 | \n",
+ " 16569.6049618665 | \n",
+ " 16526.2545517227 | \n",
+ " 15901.4329353355 | \n",
+ " 15530.8942915589 | \n",
+ " 15317.1390013495 | \n",
+ " 15153.8213753482 | \n",
+ " 15366.2926106288 | \n",
+ " 15660.6794152314 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " Belarus | \n",
+ " BY | \n",
+ " BYR | \n",
+ " 1479.46532113219 | \n",
+ " 1819.4790277163 | \n",
+ " 2378.37489391196 | \n",
+ " 3126.36777779462 | \n",
+ " 3848.58620300891 | \n",
+ " 4735.95688918873 | \n",
+ " 6376.17311491284 | \n",
+ " 5176.04470138203 | \n",
+ " 5818.8548592158 | \n",
+ " 6305.77366247653 | \n",
+ " 6721.83490773968 | \n",
+ " 7722.12335060436 | \n",
+ " 8025.30435552468 | \n",
+ " 5740.45649479562 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " Belgium | \n",
+ " BE | \n",
+ " EUR | \n",
+ " 25052.3302823 | \n",
+ " 30743.9569254283 | \n",
+ " 35589.7129457001 | \n",
+ " 36967.2829204297 | \n",
+ " 38852.3610339939 | \n",
+ " 44403.8313061102 | \n",
+ " 48424.5892730273 | \n",
+ " 44880.5601517887 | \n",
+ " 44382.8797683492 | \n",
+ " 47699.8070518961 | \n",
+ " 44734.4523465803 | \n",
+ " 46622.4679873931 | \n",
+ " 47299.8601085612 | \n",
+ " 40231.2831740081 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " Belize | \n",
+ " BZ | \n",
+ " BZD | \n",
+ " 3556.61608225719 | \n",
+ " 3679.79281542143 | \n",
+ " 3831.60983030588 | \n",
+ " 3933.2343731798 | \n",
+ " 4187.23288999866 | \n",
+ " 4324.83101711444 | \n",
+ " 4470.22079597603 | \n",
+ " 4258.84287648324 | \n",
+ " 4344.13666906088 | \n",
+ " 4516.23303047149 | \n",
+ " 4673.55519784264 | \n",
+ " 4723.59432062825 | \n",
+ " 4884.3686203818 | \n",
+ " 4906.9406908683 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " Benin | \n",
+ " BJ | \n",
+ " XOF | \n",
+ " 411.959075281789 | \n",
+ " 509.461088697817 | \n",
+ " 570.685501333771 | \n",
+ " 587.080212422838 | \n",
+ " 609.018608681583 | \n",
+ " 685.551675107742 | \n",
+ " 794.870176064085 | \n",
+ " 768.013476447657 | \n",
+ " 732.953622726674 | \n",
+ " 799.03555913143 | \n",
+ " 807.688451017232 | \n",
+ " 882.638633279988 | \n",
+ " 903.464924007693 | \n",
+ " 779.067867757338 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " Bermuda | \n",
+ " BM | \n",
+ " BMD | \n",
+ " 62583.1002034588 | \n",
+ " 66111.7252270036 | \n",
+ " 70359.3191088798 | \n",
+ " 75882.0338560339 | \n",
+ " 83912.6977976846 | \n",
+ " 90849.5869806436 | \n",
+ " 93605.7481653976 | \n",
+ " 88463.3128161375 | \n",
+ " 88207.3275597322 | \n",
+ " 85973.158416455 | \n",
+ " 85458.455507886 | \n",
+ " 85748.0654143782 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " Bhutan | \n",
+ " BT | \n",
+ " INR | \n",
+ " 897.445333164014 | \n",
+ " 1009.00623184688 | \n",
+ " 1107.92059564068 | \n",
+ " 1257.54864008661 | \n",
+ " 1346.08577480046 | \n",
+ " 1755.16170904287 | \n",
+ " 1810.57617704401 | \n",
+ " 1786.81067200588 | \n",
+ " 2201.29307778936 | \n",
+ " 2485.78705216849 | \n",
+ " 2452.15158793741 | \n",
+ " 2383.04472990264 | \n",
+ " 2560.52213174131 | \n",
+ " 2532.45446832741 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " Bolivia | \n",
+ " BO | \n",
+ " BOB | \n",
+ " 913.575853422027 | \n",
+ " 917.36431048617 | \n",
+ " 978.334757576746 | \n",
+ " 1046.4278428307 | \n",
+ " 1233.59297372996 | \n",
+ " 1389.6317502607 | \n",
+ " 1736.92401415151 | \n",
+ " 1776.85718962366 | \n",
+ " 1981.16010525701 | \n",
+ " 2377.70068972888 | \n",
+ " 2645.29027433174 | \n",
+ " 2948.03291763073 | \n",
+ " 3124.08076212353 | \n",
+ " 3095.3596925636 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " Bosnia and Herzegovina | \n",
+ " BA | \n",
+ " BAM | \n",
+ " 1746.48638346723 | \n",
+ " 2192.64707824367 | \n",
+ " 2619.75325753727 | \n",
+ " 2928.26359035282 | \n",
+ " 3351.96339986152 | \n",
+ " 4107.99623197216 | \n",
+ " 4974.66226666137 | \n",
+ " 4586.20631315947 | \n",
+ " 4475.08813004565 | \n",
+ " 4860.78181134244 | \n",
+ " 4494.64064038047 | \n",
+ " 4748.04069226421 | \n",
+ " 4851.66052786926 | \n",
+ " 4197.80730449044 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " Botswana | \n",
+ " BW | \n",
+ " BWP | \n",
+ " 3044.12735338963 | \n",
+ " 4149.04137748834 | \n",
+ " 4879.45946154727 | \n",
+ " 5327.8535176786 | \n",
+ " 5342.1403362253 | \n",
+ " 5666.63784692568 | \n",
+ " 5561.89823998598 | \n",
+ " 5115.11924667202 | \n",
+ " 6244.00257387272 | \n",
+ " 7504.85090744898 | \n",
+ " 6885.82968106945 | \n",
+ " 6806.67746673071 | \n",
+ " 7153.44432535212 | \n",
+ " 6360.64477568565 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " Brazil | \n",
+ " BR | \n",
+ " BRL | \n",
+ " 2805.71725723054 | \n",
+ " 3040.50649558819 | \n",
+ " 3596.22457976056 | \n",
+ " 4730.65346838158 | \n",
+ " 5808.34054715979 | \n",
+ " 7246.87010479067 | \n",
+ " 8706.81914190374 | \n",
+ " 8474.88106576607 | \n",
+ " 11121.4209541496 | \n",
+ " 13039.1216499582 | \n",
+ " 12157.3082176473 | \n",
+ " 12071.7779871352 | \n",
+ " 11728.7993875108 | \n",
+ " 8538.5899749574 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " British Virgin Islands | \n",
+ " VG | \n",
+ " USD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " Brunei Darussalam | \n",
+ " BN | \n",
+ " BND | \n",
+ " 17016.9434933055 | \n",
+ " 18758.9808946915 | \n",
+ " 22131.9460641106 | \n",
+ " 26337.9181126619 | \n",
+ " 31157.6884478525 | \n",
+ " 32707.7043073602 | \n",
+ " 37798.3935034007 | \n",
+ " 27726.481053695 | \n",
+ " 31453.2243965354 | \n",
+ " 41787.0214028978 | \n",
+ " 41807.6533410575 | \n",
+ " 39151.2342290391 | \n",
+ " 40979.6419433378 | \n",
+ " 36607.9278817468 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " Bulgaria | \n",
+ " BG | \n",
+ " BGN | \n",
+ " 2079.2289749196 | \n",
+ " 2693.75876041107 | \n",
+ " 3353.56414854374 | \n",
+ " 3852.97775647268 | \n",
+ " 4455.69022418578 | \n",
+ " 5932.89967659315 | \n",
+ " 7296.12247858585 | \n",
+ " 6955.98773253421 | \n",
+ " 6752.55217774882 | \n",
+ " 7750.03988003072 | \n",
+ " 7333.35507303945 | \n",
+ " 7656.63850554922 | \n",
+ " 7851.26542804234 | \n",
+ " 6819.86910816324 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 187 | \n",
+ " Sweden | \n",
+ " SE | \n",
+ " SEK | \n",
+ " 29571.7044643283 | \n",
+ " 36961.4253671424 | \n",
+ " 42442.2204473133 | \n",
+ " 43085.353145957 | \n",
+ " 46256.4716010495 | \n",
+ " 53324.3793724756 | \n",
+ " 55746.8423811175 | \n",
+ " 46207.0592032962 | \n",
+ " 52076.4305245885 | \n",
+ " 59593.6847982389 | \n",
+ " 57134.0770682404 | \n",
+ " 60283.24522267 | \n",
+ " 58899.9797944845 | \n",
+ " 50272.9415019928 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 188 | \n",
+ " Switzerland | \n",
+ " CH | \n",
+ " CHF | \n",
+ " 41336.7219170303 | \n",
+ " 47960.5649721577 | \n",
+ " 53255.9763084633 | \n",
+ " 54797.5466345741 | \n",
+ " 57348.9278823975 | \n",
+ " 63223.467775151 | \n",
+ " 72119.5608730311 | \n",
+ " 69672.0047147337 | \n",
+ " 74277.1205125567 | \n",
+ " 88002.6095703805 | \n",
+ " 83208.68654235 | \n",
+ " 84669.2929367996 | \n",
+ " 85610.8420285261 | \n",
+ " 80214.7301520483 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 189 | \n",
+ " Syrian Arab Republic | \n",
+ " SY | \n",
+ " SYP | \n",
+ " 1269.72920825685 | \n",
+ " 1261.42609007136 | \n",
+ " 1419.59337922665 | \n",
+ " 1591.53019241227 | \n",
+ " 1779.82104926154 | \n",
+ " 2079.98786380715 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 190 | \n",
+ " Tajikistan | \n",
+ " TJ | \n",
+ " TJS | \n",
+ " 190.604911236529 | \n",
+ " 237.89319314008 | \n",
+ " 311.424112807574 | \n",
+ " 339.768076770367 | \n",
+ " 407.252611650134 | \n",
+ " 523.947651220881 | \n",
+ " 711.503629870563 | \n",
+ " 671.544008840534 | \n",
+ " 744.189892165383 | \n",
+ " 841.219870374428 | \n",
+ " 962.439124853526 | \n",
+ " 1048.66690599689 | \n",
+ " 1113.36635446715 | \n",
+ " 925.91188767081 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 191 | \n",
+ " Tanzania | \n",
+ " TZ | \n",
+ " TZS | \n",
+ " 310.207276508511 | \n",
+ " 325.550773719717 | \n",
+ " 348.052371292798 | \n",
+ " 446.157893998536 | \n",
+ " 475.908765113372 | \n",
+ " 533.172396689392 | \n",
+ " 657.728743357642 | \n",
+ " 665.344002868127 | \n",
+ " 708.521932325363 | \n",
+ " 740.383900829825 | \n",
+ " 827.52888076909 | \n",
+ " 909.330141239446 | \n",
+ " 954.618987954616 | \n",
+ " 864.857502346707 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 192 | \n",
+ " Thailand | \n",
+ " TH | \n",
+ " THB | \n",
+ " 2093.97920641937 | \n",
+ " 2349.38452566541 | \n",
+ " 2643.47893487535 | \n",
+ " 2874.38627417759 | \n",
+ " 3351.11763286401 | \n",
+ " 3962.7504988544 | \n",
+ " 4384.78267515745 | \n",
+ " 4231.14036778126 | \n",
+ " 5111.90920222917 | \n",
+ " 5539.49436810396 | \n",
+ " 5915.22114668686 | \n",
+ " 6225.05228315387 | \n",
+ " 5969.94011583791 | \n",
+ " 5816.44068998475 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 193 | \n",
+ " Timor-Leste | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 496.17975117256 | \n",
+ " 487.394976066002 | \n",
+ " 484.088448984765 | \n",
+ " 501.429226481591 | \n",
+ " 464.835169248192 | \n",
+ " 551.720598424389 | \n",
+ " 673.374537904 | \n",
+ " 780.261110851448 | \n",
+ " 875.836569271265 | \n",
+ " 1015.71592799663 | \n",
+ " 1127.10821457355 | \n",
+ " 1117.73125130819 | \n",
+ " 1131.23085071824 | \n",
+ " 1134.42642789183 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 194 | \n",
+ " Togo | \n",
+ " TG | \n",
+ " XOF | \n",
+ " 286.758081572586 | \n",
+ " 316.792068666893 | \n",
+ " 356.830803515721 | \n",
+ " 379.18092890047 | \n",
+ " 384.288555620343 | \n",
+ " 428.401561823965 | \n",
+ " 522.625007010443 | \n",
+ " 508.54052572385 | \n",
+ " 496.482494202806 | \n",
+ " 572.025703222528 | \n",
+ " 573.207476512184 | \n",
+ " 589.014053731293 | \n",
+ " 629.9976439467 | \n",
+ " 547.974683363941 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 195 | \n",
+ " Tonga | \n",
+ " TO | \n",
+ " TOP | \n",
+ " 1836.29040439251 | \n",
+ " 2089.21704269256 | \n",
+ " 2357.14647444959 | \n",
+ " 2565.38579890357 | \n",
+ " 2837.07547156741 | \n",
+ " 2932.96275815712 | \n",
+ " 3307.28239321081 | \n",
+ " 3106.90237557772 | \n",
+ " 3557.73718366504 | \n",
+ " 4226.69274653294 | \n",
+ " 4364.30924422214 | \n",
+ " 4117.31098292096 | \n",
+ " 4114.05211511279 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 196 | \n",
+ " Trinidad and Tobago | \n",
+ " TT | \n",
+ " TTD | \n",
+ " 7049.61006145836 | \n",
+ " 8804.5186659639 | \n",
+ " 10290.5191436384 | \n",
+ " 12323.1365595732 | \n",
+ " 14095.9958152811 | \n",
+ " 16530.1804420146 | \n",
+ " 21188.118565877 | \n",
+ " 14508.8137365799 | \n",
+ " 15840.4426914159 | \n",
+ " 18287.3907851354 | \n",
+ " 18322.323800986 | \n",
+ " 20217.0322820943 | \n",
+ " 21317.449265568 | \n",
+ " 20444.0785895112 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 197 | \n",
+ " Tunisia | \n",
+ " TN | \n",
+ " TND | \n",
+ " 2373.83647757576 | \n",
+ " 2790.00436823287 | \n",
+ " 3139.53720163156 | \n",
+ " 3217.96864628265 | \n",
+ " 3394.42897986889 | \n",
+ " 3805.15293730174 | \n",
+ " 4342.82317730308 | \n",
+ " 4162.5096689683 | \n",
+ " 4176.59159013024 | \n",
+ " 4291.87604315683 | \n",
+ " 4179.46434367471 | \n",
+ " 4248.89127558615 | \n",
+ " 4328.90419734881 | \n",
+ " 3872.51208364171 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 198 | \n",
+ " Turkey | \n",
+ " TR | \n",
+ " TRY | \n",
+ " 3570.54626341295 | \n",
+ " 4586.81120315865 | \n",
+ " 5855.53865983905 | \n",
+ " 7117.23324132191 | \n",
+ " 7727.27240453727 | \n",
+ " 9309.50947782175 | \n",
+ " 10382.3181608988 | \n",
+ " 8623.94962718666 | \n",
+ " 10111.5177049589 | \n",
+ " 10538.4351203671 | \n",
+ " 10539.3703371146 | \n",
+ " 10800.3579763053 | \n",
+ " 10303.8988002501 | \n",
+ " 9130.02606479616 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 199 | \n",
+ " Turkmenistan | \n",
+ " TM | \n",
+ " TMT | \n",
+ " 969.970033452985 | \n",
+ " 1286.01426124964 | \n",
+ " 1455.93604950756 | \n",
+ " 1706.95672639245 | \n",
+ " 2140.45547216715 | \n",
+ " 2606.74197588003 | \n",
+ " 3918.93492678718 | \n",
+ " 4059.96151102083 | \n",
+ " 4479.01235418457 | \n",
+ " 5724.53710231112 | \n",
+ " 6797.72116602834 | \n",
+ " 7480.32167773692 | \n",
+ " 8193.72029690445 | \n",
+ " 6947.84002260404 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 200 | \n",
+ " Turks and Caicos Islands | \n",
+ " TC | \n",
+ " USD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 201 | \n",
+ " Tuvalu | \n",
+ " TV | \n",
+ " AUD | \n",
+ " 1621.33358266022 | \n",
+ " 1901.03347628001 | \n",
+ " 2232.60251748372 | \n",
+ " 2252.89288563217 | \n",
+ " 2353.35608772946 | \n",
+ " 2768.37095732057 | \n",
+ " 3094.62809172302 | \n",
+ " 2763.16030537848 | \n",
+ " 3238.37576273905 | \n",
+ " 3993.50025430234 | \n",
+ " 4044.19378022487 | \n",
+ " 3880.19087861123 | \n",
+ " 3826.90331140252 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 202 | \n",
+ " Uganda | \n",
+ " UG | \n",
+ " UGX | \n",
+ " 243.674624856652 | \n",
+ " 241.694801118865 | \n",
+ " 292.843015035141 | \n",
+ " 321.435761373761 | \n",
+ " 342.837263983568 | \n",
+ " 409.87032601315 | \n",
+ " 459.109775900068 | \n",
+ " 557.523595605241 | \n",
+ " 608.813023856722 | \n",
+ " 591.438623816353 | \n",
+ " 656.398072749334 | \n",
+ " 674.341641819883 | \n",
+ " 714.567356471156 | \n",
+ " 675.573466220693 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 203 | \n",
+ " Ukraine | \n",
+ " UA | \n",
+ " UAH | \n",
+ " 879.475048622777 | \n",
+ " 1048.52248790763 | \n",
+ " 1367.35243333629 | \n",
+ " 1828.71762576598 | \n",
+ " 2303.01883093184 | \n",
+ " 3068.60899799696 | \n",
+ " 3891.03782318207 | \n",
+ " 2545.4803410735 | \n",
+ " 2973.99648071562 | \n",
+ " 3569.75702740477 | \n",
+ " 3855.4212801318 | \n",
+ " 3986.28296611562 | \n",
+ " 3065.16422265266 | \n",
+ " 2114.95471628444 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 204 | \n",
+ " United Arab Emirates | \n",
+ " AE | \n",
+ " AED | \n",
+ " 32355.4095972427 | \n",
+ " 34294.8939976005 | \n",
+ " 37179.6818919642 | \n",
+ " 40298.5242178562 | \n",
+ " 42950.1005841305 | \n",
+ " 42913.7840342254 | \n",
+ " 45720.0178979792 | \n",
+ " 32905.0538494054 | \n",
+ " 34341.9112921486 | \n",
+ " 39901.2209155518 | \n",
+ " 41712.1242109135 | \n",
+ " 42831.0891322689 | \n",
+ " 43962.7136932011 | \n",
+ " 40438.3763627115 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 205 | \n",
+ " United Kingdom | \n",
+ " GB | \n",
+ " GBP | \n",
+ " 28301.2083322425 | \n",
+ " 32575.0919626199 | \n",
+ " 38305.8726859929 | \n",
+ " 40047.905967007 | \n",
+ " 42534.3062613449 | \n",
+ " 48428.1574527987 | \n",
+ " 45195.1569273881 | \n",
+ " 37166.2759654944 | \n",
+ " 38292.8711313583 | \n",
+ " 41020.3769643089 | \n",
+ " 41294.5148008666 | \n",
+ " 42294.8901157814 | \n",
+ " 46278.5202128829 | \n",
+ " 43734.0001709187 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 206 | \n",
+ " United States | \n",
+ " US | \n",
+ " USD | \n",
+ " 38166.0378407812 | \n",
+ " 39677.1983481058 | \n",
+ " 41921.8097617892 | \n",
+ " 44307.9205848603 | \n",
+ " 46437.0671173065 | \n",
+ " 48061.5376613353 | \n",
+ " 48401.4273403899 | \n",
+ " 47001.5553496818 | \n",
+ " 48374.0867933094 | \n",
+ " 49781.8006563523 | \n",
+ " 51433.0470904727 | \n",
+ " 52660.2951049798 | \n",
+ " 54398.4600093994 | \n",
+ " 55836.7926308733 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 207 | \n",
+ " Uruguay | \n",
+ " UY | \n",
+ " UYU | \n",
+ " 4088.77254119908 | \n",
+ " 3622.05228427976 | \n",
+ " 4117.30885333007 | \n",
+ " 5220.95739601735 | \n",
+ " 5877.87960762231 | \n",
+ " 7009.67815952936 | \n",
+ " 9062.29053512906 | \n",
+ " 9415.15358319032 | \n",
+ " 11938.2750549849 | \n",
+ " 14166.5576669096 | \n",
+ " 15092.4720586676 | \n",
+ " 16881.38400062 | \n",
+ " 16737.973101175 | \n",
+ " 15573.9009189374 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 208 | \n",
+ " Uzbekistan | \n",
+ " UZ | \n",
+ " UZS | \n",
+ " 383.349499748749 | \n",
+ " 396.129968981304 | \n",
+ " 465.119886944025 | \n",
+ " 546.776850185552 | \n",
+ " 642.960414644088 | \n",
+ " 830.407694204322 | \n",
+ " 1023.11964110698 | \n",
+ " 1181.84735960066 | \n",
+ " 1377.08214046938 | \n",
+ " 1544.82777273524 | \n",
+ " 1719.03619624155 | \n",
+ " 1877.9645118434 | \n",
+ " 2052.58678135925 | \n",
+ " 2132.07244181734 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 209 | \n",
+ " Vanuatu | \n",
+ " VU | \n",
+ " VUV | \n",
+ " 1353.9278386398 | \n",
+ " 1580.51066802466 | \n",
+ " 1787.9382648014 | \n",
+ " 1886.38830966499 | \n",
+ " 2047.08828520065 | \n",
+ " 2393.3346212201 | \n",
+ " 2698.02124012432 | \n",
+ " 2643.47578534313 | \n",
+ " 2965.75223011673 | \n",
+ " 3275.02398203673 | \n",
+ " 3158.4209735273 | \n",
+ " 3167.05530330465 | \n",
+ " 3147.96485986836 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 210 | \n",
+ " Venezuela, RB | \n",
+ " VE | \n",
+ " VEF | \n",
+ " 3657.19374768603 | \n",
+ " 3233.9561063252 | \n",
+ " 4273.36537157056 | \n",
+ " 5435.87225994853 | \n",
+ " 6740.23677858669 | \n",
+ " 8325.21658255278 | \n",
+ " 11224.6467026883 | \n",
+ " 11534.8406001136 | \n",
+ " 13581.3533771018 | \n",
+ " 10754.5928790654 | \n",
+ " 12771.5950361107 | \n",
+ " 12265.03113567 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 211 | \n",
+ " Vietnam | \n",
+ " VN | \n",
+ " VND | \n",
+ " 477.105876263106 | \n",
+ " 530.861849364997 | \n",
+ " 606.904378261988 | \n",
+ " 699.499778976363 | \n",
+ " 796.671573774518 | \n",
+ " 919.209265568078 | \n",
+ " 1164.61252461712 | \n",
+ " 1232.36967118834 | \n",
+ " 1333.58352635481 | \n",
+ " 1542.67043610149 | \n",
+ " 1754.5479738641 | \n",
+ " 1907.56438167972 | \n",
+ " 2052.31908380089 | \n",
+ " 2111.13802366815 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 212 | \n",
+ " Virgin Islands (U.S.) | \n",
+ " VI | \n",
+ " USD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 213 | \n",
+ " West Bank and Gaza | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 1156.21747345769 | \n",
+ " 1257.69857009689 | \n",
+ " 1337.56572430673 | \n",
+ " 1455.18787518115 | \n",
+ " 1441.46170046742 | \n",
+ " 1575.56340027289 | \n",
+ " 1855.45702045882 | \n",
+ " 1963.20151865719 | \n",
+ " 2338.71987682303 | \n",
+ " 2663.53702496611 | \n",
+ " 2787.16973802917 | \n",
+ " 2992.20099455427 | \n",
+ " 2960.77800405245 | \n",
+ " 2866.80010121789 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 214 | \n",
+ " Yemen, Rep. | \n",
+ " YE | \n",
+ " YER | \n",
+ " 567.821963311624 | \n",
+ " 607.915804267557 | \n",
+ " 696.054960696925 | \n",
+ " 817.082416653512 | \n",
+ " 904.605600055261 | \n",
+ " 1181.2151760728 | \n",
+ " 1361.7172085227 | \n",
+ " 1239.83711886653 | \n",
+ " 1310.05383929542 | \n",
+ " 1282.39883187217 | \n",
+ " 1289.03407763668 | \n",
+ " 1408.14619260488 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 215 | \n",
+ " Zambia | \n",
+ " ZM | \n",
+ " ZMW | \n",
+ " 376.468039539246 | \n",
+ " 429.007277894455 | \n",
+ " 530.553584072736 | \n",
+ " 691.80945858671 | \n",
+ " 1030.31535972563 | \n",
+ " 1103.48657711875 | \n",
+ " 1365.72120522548 | \n",
+ " 1134.77299782945 | \n",
+ " 1456.12652618031 | \n",
+ " 1635.54730435222 | \n",
+ " 1724.74356387435 | \n",
+ " 1839.52248112115 | \n",
+ " 1725.97454864009 | \n",
+ " 1307.78861109883 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 216 | \n",
+ " Zimbabwe | \n",
+ " ZW | \n",
+ " ZWL | \n",
+ " 499.716414957462 | \n",
+ " 448.373192699451 | \n",
+ " 451.171588554028 | \n",
+ " 443.240135984532 | \n",
+ " 414.680115131526 | \n",
+ " 397.956872258099 | \n",
+ " 327.199083662345 | \n",
+ " 594.495968478092 | \n",
+ " 674.268695411166 | \n",
+ " 768.556409302399 | \n",
+ " 850.827696604891 | \n",
+ " 905.500321786172 | \n",
+ " 931.19818468692 | \n",
+ " 890.416087751634 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
217 rows × 18 columns
\n",
+ "
"
+ ],
+ "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": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Series Name | \n",
+ " Series Code | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " 2002 [YR2002] | \n",
+ " 2003 [YR2003] | \n",
+ " 2004 [YR2004] | \n",
+ " 2005 [YR2005] | \n",
+ " 2006 [YR2006] | \n",
+ " 2007 [YR2007] | \n",
+ " 2008 [YR2008] | \n",
+ " 2009 [YR2009] | \n",
+ " 2010 [YR2010] | \n",
+ " 2011 [YR2011] | \n",
+ " 2012 [YR2012] | \n",
+ " 2013 [YR2013] | \n",
+ " 2014 [YR2014] | \n",
+ " 2015 [YR2015] | \n",
+ " 2016 [YR2016] | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 213 | \n",
+ " Official exchange rate (LCU per US$, period av... | \n",
+ " PA.NUS.FCRF | \n",
+ " West Bank and Gaza | \n",
+ " WBG | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 214 | \n",
+ " Official exchange rate (LCU per US$, period av... | \n",
+ " PA.NUS.FCRF | \n",
+ " Yemen, Rep. | \n",
+ " YEM | \n",
+ " 175.625 | \n",
+ " 183.448333333333 | \n",
+ " 184.775833333333 | \n",
+ " 191.509166666667 | \n",
+ " 197.049166666667 | \n",
+ " 198.953333333333 | \n",
+ " 199.764166666667 | \n",
+ " 202.846666666667 | \n",
+ " 219.59 | \n",
+ " 213.8 | \n",
+ " 214.350833333333 | \n",
+ " 214.89 | \n",
+ " 214.89 | \n",
+ " 214.89 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 215 | \n",
+ " Official exchange rate (LCU per US$, period av... | \n",
+ " PA.NUS.FCRF | \n",
+ " Zambia | \n",
+ " ZMB | \n",
+ " 4.398595 | \n",
+ " 4.73327104649872 | \n",
+ " 4.77887538643579 | \n",
+ " 4.46350331051587 | \n",
+ " 3.60307204258249 | \n",
+ " 4.00252266503643 | \n",
+ " 3.74566069008764 | \n",
+ " 5.04610924521235 | \n",
+ " 4.797136875 | \n",
+ " 4.86066553209349 | \n",
+ " 5.14725266514413 | \n",
+ " 5.39588706794446 | \n",
+ " 6.15281624812449 | \n",
+ " 8.63235596234196 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 216 | \n",
+ " Official exchange rate (LCU per US$, period av... | \n",
+ " PA.NUS.FCRF | \n",
+ " Zimbabwe | \n",
+ " ZWE | \n",
+ " 0.0550982905810338 | \n",
+ " 0.698216071305723 | \n",
+ " 5.07441941463195 | \n",
+ " 22.3890396048255 | \n",
+ " 164.547356500646 | \n",
+ " 9686.77166954175 | \n",
+ " 6723052073.3381 | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ " 217 | \n",
+ " Official exchange rate (LCU per US$, period av... | \n",
+ " PA.NUS.FCRF | \n",
+ " Euro area | \n",
+ " EMU | \n",
+ " 1.06255166666667 | \n",
+ " 0.886034166666667 | \n",
+ " 0.805365 | \n",
+ " 0.80412 | \n",
+ " 0.797140833333333 | \n",
+ " 0.7306375 | \n",
+ " 0.682674711239873 | \n",
+ " 0.719843359785615 | \n",
+ " 0.755044951989835 | \n",
+ " 0.719355253609154 | \n",
+ " 0.778293601412852 | \n",
+ " 0.75315918184727 | \n",
+ " 0.753730736717402 | \n",
+ " 0.901658961641278 | \n",
+ " .. | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "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": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " country_name | \n",
+ " country_code | \n",
+ " currency_code | \n",
+ " 2002 | \n",
+ " 2003 | \n",
+ " 2004 | \n",
+ " 2005 | \n",
+ " 2006 | \n",
+ " 2007 | \n",
+ " 2008 | \n",
+ " 2009 | \n",
+ " 2010 | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 213 | \n",
+ " West Bank and Gaza | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 214 | \n",
+ " Yemen, Rep. | \n",
+ " YE | \n",
+ " YER | \n",
+ " 175.625 | \n",
+ " 183.448333333333 | \n",
+ " 184.775833333333 | \n",
+ " 191.509166666667 | \n",
+ " 197.049166666667 | \n",
+ " 198.953333333333 | \n",
+ " 199.764166666667 | \n",
+ " 202.846666666667 | \n",
+ " 219.59 | \n",
+ " 213.8 | \n",
+ " 214.350833333333 | \n",
+ " 214.89 | \n",
+ " 214.89 | \n",
+ " 214.89 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 215 | \n",
+ " Zambia | \n",
+ " ZM | \n",
+ " ZMW | \n",
+ " 4.398595 | \n",
+ " 4.73327104649872 | \n",
+ " 4.77887538643579 | \n",
+ " 4.46350331051587 | \n",
+ " 3.60307204258249 | \n",
+ " 4.00252266503643 | \n",
+ " 3.74566069008764 | \n",
+ " 5.04610924521235 | \n",
+ " 4.797136875 | \n",
+ " 4.86066553209349 | \n",
+ " 5.14725266514413 | \n",
+ " 5.39588706794446 | \n",
+ " 6.15281624812449 | \n",
+ " 8.63235596234196 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 216 | \n",
+ " Zimbabwe | \n",
+ " ZW | \n",
+ " ZWL | \n",
+ " 0.0550982905810338 | \n",
+ " 0.698216071305723 | \n",
+ " 5.07441941463195 | \n",
+ " 22.3890396048255 | \n",
+ " 164.547356500646 | \n",
+ " 9686.77166954175 | \n",
+ " 6723052073.3381 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 217 | \n",
+ " Euro area | \n",
+ " EU | \n",
+ " EMU | \n",
+ " 1.06255166666667 | \n",
+ " 0.886034166666667 | \n",
+ " 0.805365 | \n",
+ " 0.80412 | \n",
+ " 0.797140833333333 | \n",
+ " 0.7306375 | \n",
+ " 0.682674711239873 | \n",
+ " 0.719843359785615 | \n",
+ " 0.755044951989835 | \n",
+ " 0.719355253609154 | \n",
+ " 0.778293601412852 | \n",
+ " 0.75315918184727 | \n",
+ " 0.753730736717402 | \n",
+ " 0.901658961641278 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "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": [
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " id | \n",
+ " activity | \n",
+ " num_borrowers | \n",
+ " male_proportion | \n",
+ " lender_count | \n",
+ " country | \n",
+ " country_code | \n",
+ " partner_id | \n",
+ " sector | \n",
+ " tags | \n",
+ " ... | \n",
+ " disbursal_amount | \n",
+ " disbursal_currency | \n",
+ " disbursal_date | \n",
+ " num_repayments | \n",
+ " repayment_interval | \n",
+ " bad_loan | \n",
+ " gdp | \n",
+ " xchange_rate | \n",
+ " status | \n",
+ " delinquent | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1224 | \n",
+ " Clothing Sales | \n",
+ " 1 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " Honduras | \n",
+ " HN | \n",
+ " 5 | \n",
+ " Clothing | \n",
+ " | \n",
+ " ... | \n",
+ " 250.0 | \n",
+ " None | \n",
+ " None | \n",
+ " 0 | \n",
+ " None | \n",
+ " 1 | \n",
+ " 1884.941162 | \n",
+ " 18.520081 | \n",
+ " deleted | \n",
+ " None | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 5320 | \n",
+ " Food Production/Sales | \n",
+ " 1 | \n",
+ " 0.0 | \n",
+ " 7 | \n",
+ " Ghana | \n",
+ " GH | \n",
+ " 19 | \n",
+ " Food | \n",
+ " | \n",
+ " ... | \n",
+ " 500.0 | \n",
+ " USD | \n",
+ " 2007-03-15T04:52:22Z | \n",
+ " 9 | \n",
+ " Monthly | \n",
+ " 0 | \n",
+ " 1099.022339 | \n",
+ " 0.935248 | \n",
+ " paid | \n",
+ " None | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 9416 | \n",
+ " Food Production/Sales | \n",
+ " 1 | \n",
+ " 0.0 | \n",
+ " 3 | \n",
+ " Vietnam | \n",
+ " VN | \n",
+ " 41 | \n",
+ " Food | \n",
+ " | \n",
+ " ... | \n",
+ " 75.0 | \n",
+ " USD | \n",
+ " 2007-05-17T22:02:42Z | \n",
+ " 6 | \n",
+ " Monthly | \n",
+ " 0 | \n",
+ " 919.209290 | \n",
+ " 16105.125000 | \n",
+ " paid | \n",
+ " None | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 13512 | \n",
+ " Clothing Sales | \n",
+ " 1 | \n",
+ " 0.0 | \n",
+ " 10 | \n",
+ " Nigeria | \n",
+ " NG | \n",
+ " 20 | \n",
+ " Clothing | \n",
+ " | \n",
+ " ... | \n",
+ " 450.0 | \n",
+ " USD | \n",
+ " 2007-07-20T16:35:52Z | \n",
+ " 8 | \n",
+ " Monthly | \n",
+ " 0 | \n",
+ " 1131.147705 | \n",
+ " 125.808105 | \n",
+ " paid | \n",
+ " None | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 17608 | \n",
+ " Livestock | \n",
+ " 1 | \n",
+ " 0.0 | \n",
+ " 36 | \n",
+ " Cote D'Ivoire | \n",
+ " CI | \n",
+ " 53 | \n",
+ " Agriculture | \n",
+ " | \n",
+ " ... | \n",
+ " 950.0 | \n",
+ " USD | \n",
+ " 2007-09-20T02:55:18Z | \n",
+ " 12 | \n",
+ " Monthly | \n",
+ " 0 | \n",
+ " 1078.541504 | \n",
+ " 479.266785 | \n",
+ " paid | \n",
+ " None | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 21 columns
\n",
+ "
"
+ ],
+ "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.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}