What will we cover in this tutorial?
Introduction to the Pandas-Datareader, which is an invaluable way to get data from many sources, including the World Bank.
In this tutorial we will cover how to get the data from GDP per capita yearly data from countries and plot them.
Step 1: Get to know World Bank as a data source
The World Bank was founded in 1944 to make loans to low-income countries, with the purpose to decrease poverty in the world (see wikipedia.org for further history).
What you might not know, World Bank has an amazing sets of data that you can either browse on their webpage or get access to directly in Python using the Pandas-Datareader.
We will take a look at how to extract the NY.GDP.PCAP.KD indicator.
The what?
I know. The GDP per capita (constant 2010 US$), as it states on the webpage.

On that page you can get the GDP per capita for each country in the world back to 1960.
That is what we are going to do.
Step 2: Get the data
Reading the Pandas-datareaders World Bank documentation you fall over the following function.
pandas_datareader.wb.download
(country=None, indicator=None, start=2003, end=2005, freq=None, errors=’warn’, **kwargs)
Where you can set the country (or countries) and indicator your want:
- country (string or list of strings.) –
all
downloads data for all countries 2 or 3 character ISO country codes select individual countries (e.g.“US“,“CA“) or (e.g.“USA“,“CAN“). The codes can be mixed.The two ISO lists of countries, provided by wikipedia, are hardcoded into pandas as of 11/10/2014. - indicator (string or list of strings) – taken from the
id
field inWDIsearch()
Luckily we already have our indicator from Step 1 (NY.GDP.PCAP.KD). Then we just need to find some countries of interest.
Let’s take United States, France, Great Britain, Denmark and Norway.
from pandas_datareader import wb
dat = wb.download(indicator='NY.GDP.PCAP.KD', country=['US', 'FR', 'GB', 'DK', 'NO'], start=1960, end=2019)
print(dat)
Resulting in the following output.
NY.GDP.PCAP.KD
country year
Denmark 2019 65147.427182
2018 63915.468361
2017 62733.019808
2016 61877.976481
2015 60402.129248
... ...
United States 1964 19824.587845
1963 18999.888387
1962 18462.935998
1961 17671.150187
1960 17562.592084
[300 rows x 1 columns]
Step 3: Visualize the data on a graph
We need to restructure the data in order to make a nice graph.
This can be done with unstack.
from pandas_datareader import wb
import matplotlib.pyplot as plt
dat = wb.download(indicator='NY.GDP.PCAP.KD', country=['US', 'FR', 'GB', 'DK', 'NO'], start=1960, end=2019)
print(dat.unstack())
Which result in this output.
NY.GDP.PCAP.KD ...
year 1960 1961 ... 2018 2019
country ...
Denmark 20537.549556 21695.609308 ... 63915.468361 65147.427182
France 12743.925100 13203.320855 ... 43720.026351 44317.392315
Norway 23167.441740 24426.011426 ... 92119.522964 92556.321645
United Kingdom 13934.029831 14198.673562 ... 43324.049759 43688.437455
United States 17562.592084 17671.150187 ... 54795.450086 55809.007792
If we transpose this and remove the double index frames that will come, then it should be good to make a plot with.
from pandas_datareader import wb
import matplotlib.pyplot as plt
dat = wb.download(indicator='NY.GDP.PCAP.KD', country=['US', 'FR', 'GB', 'DK', 'NO'], start=1960, end=2019)
print(dat.unstack().T.reset_index(0))
dat.unstack().T.reset_index(0).plot()
plt.title('GDP per capita')
plt.show()
Giving this output, where you can see what the Transpose (T) does.
country level_0 Denmark ... United Kingdom United States
year ...
1960 NY.GDP.PCAP.KD 20537.549556 ... 13934.029831 17562.592084
1961 NY.GDP.PCAP.KD 21695.609308 ... 14198.673562 17671.150187
1962 NY.GDP.PCAP.KD 22747.292463 ... 14233.959944 18462.935998
1963 NY.GDP.PCAP.KD 22712.577808 ... 14816.480305 18999.888387
1964 NY.GDP.PCAP.KD 24620.461432 ... 15535.026991 19824.587845
1965 NY.GDP.PCAP.KD 25542.173921 ... 15766.195724 20831.299767
1966 NY.GDP.PCAP.KD 26032.378816 ... 15926.169851 21930.591173
1967 NY.GDP.PCAP.KD 27256.322071 ... 16282.026160 22235.415708
Giving the following output.

Continue the exploration in the following tutorial.
Learn Python

Learn Python A BEGINNERS GUIDE TO PYTHON
- 70 pages to get you started on your journey to master Python.
- How to install your setup with Anaconda.
- Written description and introduction to all concepts.
- Jupyter Notebooks prepared for 17 projects.
Python 101: A CRASH COURSE
- How to get started with this 8 hours Python 101: A CRASH COURSE.
- Best practices for learning Python.
- How to download the material to follow along and create projects.
- A chapter for each lesson with a description, code snippets for easy reference, and links to a lesson video.
Expert Data Science Blueprint

Expert Data Science Blueprint
- Master the Data Science Workflow for actionable data insights.
- How to download the material to follow along and create projects.
- A chapter to each lesson with a Description, Learning Objective, and link to the lesson video.
Machine Learning

Machine Learning – The Simple Path to Mastery
- How to get started with Machine Learning.
- How to download the material to follow along and make the projects.
- One chapter for each lesson with a Description, Learning Objectives, and link to the lesson video.