In [1]:
import numpy as np, requests, pandas as pd

In [9]:
df=pd.read_excel("http://www.happyplanetindex.org/assets/hpi-data.xlsx",sheetname="Complete HPI Dataset",skiprows=5)

In [10]:
df


Out[10]:
Unnamed: 0 HPI Rank Country Sub-Region Life Expectancy Well-being (0-10) Happy Life Years Footprint (gha/capita) Happy Planet Index Population ... Unnamed: 22 Unnamed: 23 Unnamed: 24 Unnamed: 25 Unnamed: 26 Unnamed: 27 Unnamed: 28 Unnamed: 29 Unnamed: 30 Unnamed: 31
0 NaN 109 Afghanistan 3b 48.7 4.758381 28.963890 0.540334 36.753658 34385000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN 18 Albania 7b 76.9 5.268937 48.771132 1.811906 54.051180 3205000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN 26 Algeria 3a 73.1 5.236961 46.180395 1.648142 52.181298 35468000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN 127 Angola 4a 51.1 4.206092 28.209269 0.890611 33.201432 19082000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN 17 Argentina 1b 75.9 6.441067 55.015278 2.709071 54.055042 40412000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN 53 Armenia 7a 74.2 4.367811 41.889160 1.733441 46.003186 3092000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN 76 Australia 2a 81.9 7.405616 65.471978 6.684992 41.979812 22299000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN 48 Austria 2c 80.9 7.346036 64.299900 5.291346 47.085135 8390000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
8 NaN 80 Azerbaijan 7a 70.7 4.218611 39.097695 1.968812 40.884570 9054000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN 146 Bahrain 3b 75.1 4.549466 43.452009 6.645130 26.617850 1262000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
10 NaN 11 Bangladesh 5a 68.9 4.985649 42.188328 0.656559 56.292001 148692000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
11 NaN 103 Belarus 7c 70.3 5.525923 45.982110 3.987826 37.414602 9490000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
12 NaN 107 Belgium 2c 80.0 6.853514 60.538204 7.110513 37.090528 10896000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
13 NaN 4 Belize 1a 76.1 6.450644 55.216594 2.109170 59.289845 345000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
14 NaN 132 Benin 4c 56.1 3.667140 28.631818 1.355720 31.083209 8850000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
15 NaN 64 Bolivia 1b 66.6 5.780620 44.873489 2.606055 43.577908 9929000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
16 NaN 74 Bosnia and Herzegovina 7b 75.7 4.668517 44.495946 2.738704 42.354560 3760000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
17 NaN 151 Botswana 4a 53.2 3.553020 26.682347 2.842845 22.591174 2007000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
18 NaN 21 Brazil 1b 73.5 6.837331 55.527512 2.934765 52.931996 194946000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19 NaN 123 Bulgaria 7b 73.4 4.220367 40.600786 3.564774 34.145379 7534000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
20 NaN 129 Burkina Faso 4c 55.4 4.035560 29.852609 1.525786 31.793850 16468000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
21 NaN 135 Burundi 4b 50.4 3.791681 26.208003 0.845378 30.515012 8382000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
22 NaN 85 Cambodia 6c 63.1 4.161225 34.614869 1.193421 40.322921 14139000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
23 NaN 124 Cameroon 4c 51.6 4.433885 29.394068 1.087925 33.686686 19599000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
24 NaN 65 Canada 2b 81.0 7.650346 66.285144 6.428538 43.559839 34126000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25 NaN 148 Central African Republic 4a 48.4 3.567892 24.330570 1.356605 25.256461 4401000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
26 NaN 150 Chad 4b 49.6 3.742871 25.604825 1.891418 24.681898 11227000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
27 NaN 19 Chile 1b 79.1 6.635656 58.524800 3.237786 53.883338 17113688 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
28 NaN 60 China 6a 73.5 4.652737 43.113124 2.130289 44.660738 1338300000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
29 NaN 3 Colombia 1b 73.7 6.408114 53.232858 1.801068 59.751023 46295000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
121 NaN 90 Singapore 6b 81.1 6.531402 59.350865 6.100924 39.781933 5077000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
122 NaN 89 Slovakia 7b 75.4 6.052223 52.386054 4.660814 40.132383 5430000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
123 NaN 87 Slovenia 7b 79.3 6.082555 55.281647 5.211424 40.174398 2049000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
124 NaN 142 South Africa 4a 52.8 4.652429 30.969803 2.589261 28.190112 49991000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
125 NaN 62 Spain 2e 81.4 6.188263 57.410869 4.740126 44.062793 46071000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
126 NaN 35 Sri Lanka 5a 74.9 4.180569 41.200034 1.206349 49.382588 20860000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
127 NaN 101 Sudan 4b 61.5 4.375097 34.754096 1.630335 37.573654 43552000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
128 NaN 52 Sweden 2d 81.4 7.496019 65.641221 5.708356 46.172373 9378000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
129 NaN 34 Switzerland 2c 82.3 7.524521 66.548341 5.013067 50.338647 7826000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
130 NaN 47 Syria 3b 75.9 4.065824 41.076748 1.454491 47.119819 20447000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
131 NaN 43 Tajikistan 7a 67.5 4.380636 38.173647 0.900643 47.789313 6879000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
132 NaN 133 Tanzania 4b 58.2 3.229129 27.732651 1.192383 30.740735 44841000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
133 NaN 20 Thailand 6c 74.1 6.216703 52.425166 2.411845 53.457642 69122000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
134 NaN 141 Togo 4c 57.1 2.807855 25.348688 1.031873 28.231490 6028000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
135 NaN 136 Trinidad and Tobago 1a 70.1 6.696444 52.195308 7.559942 30.267267 1341000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
136 NaN 39 Tunisia 3a 74.5 4.685981 43.891183 1.764818 48.298366 10549000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
137 NaN 44 Turkey 3b 74.0 5.490347 48.198677 2.554785 47.623544 72752000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
138 NaN 95 Turkmenistan 7a 65.0 6.567713 47.750994 3.983001 39.078872 5042000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
139 NaN 131 Uganda 4b 54.1 4.192882 29.810138 1.565490 31.526206 33424000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
140 NaN 100 Ukraine 7c 68.5 5.057561 42.324258 3.193976 37.583250 45871000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
141 NaN 130 United Arab Emirates 3b 76.5 7.196803 59.920089 8.880909 31.778274 7512000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
142 NaN 41 United Kingdom 2c 80.2 7.029364 61.779946 4.713110 47.925476 62232000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
143 NaN 105 United States of America 2b 78.5 7.163616 61.285207 7.189133 37.340106 309349000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
144 NaN 93 Uruguay 1c 77.0 6.062011 53.555964 5.078661 39.320977 3357000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
145 NaN 54 Uzbekistan 7a 68.3 5.095342 42.400191 1.819812 46.002763 28228000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
146 NaN 9 Venezuela 1b 74.4 7.478454 59.895361 3.024572 56.871442 28834000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
147 NaN 2 Vietnam 6c 75.2 5.767345 50.590777 1.390974 60.438991 86928000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
148 NaN 68 Yemen 3b 65.5 3.924142 34.730810 0.871183 42.966753 24053000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
149 NaN 99 Zambia 4a 49.0 5.260361 31.044045 0.840814 37.733570 12927000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
150 NaN 115 Zimbabwe 4a 51.4 4.845642 30.916468 1.170250 35.317168 12571000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

151 rows × 32 columns


In [50]:
url='http://api.worldbank.org/v2/en/indicator/ny.gdp.pcap.pp.kd?downloadformat=csv'
filename='ny.gdp.pcap.pp.kd_Indicator_en_csv_v2.csv'
r = requests.get(url)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
gdp=pd.read_csv(z.open(filename),skiprows=[0,1]).drop('Unnamed: 58',axis=1).drop('Indicator Code',axis=1)
gdp.head(2)


Out[50]:
Country Name Country Code Indicator Name 1961 1962 1963 1964 1965 1966 1967 ... 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
0 Aruba ABW GDP per capita, PPP (constant 2011 internation... NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN 36016.483757 NaN NaN NaN
1 Andorra AND GDP per capita, PPP (constant 2011 internation... NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 rows × 57 columns


In [49]:
url='http://api.worldbank.org/v2/en/indicator/ny.gnp.pcap.pp.kd?downloadformat=csv'
filename='ny.gnp.pcap.pp.kd_Indicator_en_csv_v2.csv'
r = requests.get(url)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
gnp=pd.read_csv(z.open(filename),skiprows=[0,1]).drop('Unnamed: 58',axis=1).drop('Indicator Code',axis=1)
gnp.head(2)


Out[49]:
Country Name Country Code Indicator Name 1961 1962 1963 1964 1965 1966 1967 ... 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
0 Aruba ABW GNI per capita, PPP (constant 2011 internation... NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 Andorra AND GNI per capita, PPP (constant 2011 internation... NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 rows × 57 columns


In [51]:
url='http://api.worldbank.org/v2/en/indicator/sp.dyn.le00.in?downloadformat=csv'
filename='sp.dyn.le00.in_Indicator_en_csv_v2.csv'
r = requests.get(url)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
le=pd.read_csv(z.open(filename),skiprows=[0,1]).drop('Unnamed: 58',axis=1).drop('Indicator Code',axis=1)
le.head(2)


Out[51]:
Country Name Country Code Indicator Name 1961 1962 1963 1964 1965 1966 1967 ... 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
0 Aruba ABW Life expectancy at birth, total (years) 65.988024 66.365537 66.713976 67.044293 67.369756 67.699 68.034683 ... 74.228073 74.375707 74.526244 74.67422 74.816146 74.952024 75.08039 75.206756 NaN NaN
1 Andorra AND Life expectancy at birth, total (years) NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 rows × 57 columns


In [53]:
url='http://api.worldbank.org/v2/en/indicator/se.adt.litr.zs?downloadformat=csv'
filename='se.adt.litr.zs_Indicator_en_csv_v2.csv'
r = requests.get(url)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
alr=pd.read_csv(z.open(filename),skiprows=[0,1]).drop('Unnamed: 58',axis=1).drop('Indicator Code',axis=1)
alr.head(2)


Out[53]:
Country Name Country Code Indicator Name 1961 1962 1963 1964 1965 1966 1967 ... 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
0 Aruba ABW Literacy rate, adult total (% of people ages 1... NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 96.822639 NaN NaN NaN NaN
1 Andorra AND Literacy rate, adult total (% of people ages 1... NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 rows × 57 columns


In [54]:
url='http://api.worldbank.org/v2/en/indicator/se.prm.enrr?downloadformat=csv'
filename='se.prm.enrr_Indicator_en_csv_v2.csv'
r = requests.get(url)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
ger1=pd.read_csv(z.open(filename),skiprows=[0,1]).drop('Unnamed: 58',axis=1).drop('Indicator Code',axis=1)
ger1.head(2)


Out[54]:
Country Name Country Code Indicator Name 1961 1962 1963 1964 1965 1966 1967 ... 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
0 Aruba ABW School enrollment, primary (% gross) NaN NaN NaN NaN NaN NaN NaN ... 111.37672 114.23859 115.22441 113.07883 113.77574 113.72866 105.2194 104.06276 NaN NaN
1 Andorra AND School enrollment, primary (% gross) NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 rows × 57 columns


In [55]:
url='http://api.worldbank.org/v2/en/indicator/se.sec.enrr?downloadformat=csv'
filename='se.sec.enrr_Indicator_en_csv_v2.csv'
r = requests.get(url)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
ger2=pd.read_csv(z.open(filename),skiprows=[0,1]).drop('Unnamed: 58',axis=1).drop('Indicator Code',axis=1)
ger2.head(2)


Out[55]:
Country Name Country Code Indicator Name 1961 1962 1963 1964 1965 1966 1967 ... 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
0 Aruba ABW School enrollment, secondary (% gross) NaN NaN NaN NaN NaN NaN NaN ... 95.92882 97.35637 102.54636 94.64913 96.72344 95.83605 97.01512 99.98673 NaN NaN
1 Andorra AND School enrollment, secondary (% gross) NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 rows × 57 columns


In [56]:
url='http://api.worldbank.org/v2/en/indicator/se.ter.enrr?downloadformat=csv'
filename='se.ter.enrr_Indicator_en_csv_v2.csv'
r = requests.get(url)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
ger3=pd.read_csv(z.open(filename),skiprows=[0,1]).drop('Unnamed: 58',axis=1).drop('Indicator Code',axis=1)
ger3.head(2)


Out[56]:
Country Name Country Code Indicator Name 1961 1962 1963 1964 1965 1966 1967 ... 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
0 Aruba ABW School enrollment, tertiary (% gross) NaN NaN NaN NaN NaN NaN NaN ... 31.68347 30.90319 33.92613 35.24049 35.36232 37.35172 38.73762 37.76113 NaN NaN
1 Andorra AND School enrollment, tertiary (% gross) NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

2 rows × 57 columns


In [ ]:


In [3]:
ids=pd.read_csv('http://bl.ocks.org/d/4090846/world-country-names.tsv',sep='\t').set_index(['name'],drop=True)
ids.head()


Out[3]:
id
name
Northern Cyprus -1
Kosovo -2
Somaliland -3
Afghanistan 4
Albania 8

In [ ]:


In [4]:
def country_name_converter(country):
    if country=="Venezuela, Bolivarian Republic of": return "Venezuela (Bolivarian Republic of)"
    elif country=="Tanzania, United Republic of": return "Tanzania (United Republic of)"
    elif country=="Moldova, Republic of": return "Moldova (Republic of)"
    elif country=="Micronesia, Federated States of": return "Micronesia (Federated States of)"
    elif country=="Macedonia, the former Yugoslav Republic of": return "The former Yugoslav Republic of Macedonia"
    elif country=="Korea, Republic of": return "Korea (Republic of)"
    elif country=="Korea, Democratic People's Republic of": return "Korea (Democratic People's Rep. of)"
    elif country=="Côte d'Ivoire": return "C\xc3\xb4te d'Ivoire"
    elif country=="Iran, Islamic Republic of": return "Iran (Islamic Republic of)"
    elif country=="Hong Kong": return "Hong Kong, China (SAR)"
    elif country=="Palestinian Territory, Occupied": return "Palestine, State of"
    elif country=="Congo, the Democratic Republic of the": return "Congo (Democratic Republic of the)"
    elif country=="Bolivia, Plurinational State of": return "Bolivia (Plurinational State of)"
    else: return country

In [6]:
import re
codes={}
for i in ids.index:
    try: 
        a=[i]
        a.append(round(float(re.sub(r'[^\d.]+', '',hdi.loc[country_name_converter(i)]\
                                    [u"Human Development Index (HDI) Value, 2013"])),3))
        a.append(round((float(re.sub(r'[^\d.]+', '',hdi.loc[country_name_converter(i)]\
                                     [u"Life expectancy at birth (years), 2013"]))-20)/(85-20),3))
        a.append(round((float(re.sub(r'[^\d.]+', '',hdi.loc[country_name_converter(i)]\
                                     [u"Mean years of schooling (years), 2012 a"]))/15+\
                  float(re.sub(r'[^\d.]+', '',hdi.loc[country_name_converter(i)]\
                               [u"Expected years of schooling (years), 2012 a"]))/18)/2,3))
        a.append(round((np.log(float(re.sub(r'[^\d.]+', '',hdi.loc[country_name_converter(i)]\
                        [u"Gross national income (GNI) per capita (2011 PPP $), 2013"])))-np.log(100))\
                        /(np.log(75000)-np.log(100)),3))
        a.append(round((a[2]*a[3]*a[4])**(1.0/3.0),3))
        codes[repr(ids.loc[i][0])]=a
    except: pass

In [8]:
import json
file('hdi2.json','w').write(json.dumps(codes))