2023 World Bank Indicators

These are a variety of development indicators collected by the World Bank. Data availability varies by country and in many cases are composites of the most recent years available up to 2023. The headings indicate the name of the variable in the data.

The World Bank. 2024. "Indicators." Accessed 9 July 2024. https://data.worldbank.org/indicator.

Geography

Country borders are from the Natural Earth large scale (1:10m) polygons for world countries (Admin 0 - Details)

Country Name

The country name as listed in the Natural Earth data (NAME)

Country Code

The ISO 3166 three letter country codes

Demographic Indicators

Population

Population, total

https://data.worldbank.org/indicator/SP.POP.TOTL?view=chart

Working Age Population Percent

Population ages 15-64 (% of total population)

https://data.worldbank.org/indicator/SP.POP.1564.TO.ZS?view=chart

Urban Population Percent

Urban population (% of total population)

https://data.worldbank.org/indicator/SP.URB.TOTL.IN.ZS?view=chart

Rural Population Percent

Rural population (% of total population)

https://data.worldbank.org/indicator/SP.RUR.TOTL.ZS?view=chart

Life Expectancy Years

Life expectancy at birth, total (years)

https://data.worldbank.org/indicator/SP.DYN.LE00.IN?view=chart

Refugees by Origin

Refugee population by country or territory of origin

https://data.worldbank.org/indicator/SM.POP.REFG.OR?view=chart

Refugees by Destination

Refugee population by country or territory of asylum (2022 with latest data earlier for some countries)

https://data.worldbank.org/indicator/SM.POP.REFG?view=chart

Environmental Indicators

Land Area Sq km

Land area (square km)

https://data.worldbank.org/indicator/AG.LND.TOTL.K2?view=chart

Forest Area Percent

Forest area (% of land area)

https://data.worldbank.org/indicator/AG.LND.FRST.ZS?view=chart

Agricultural Land Percent

Agricultural land (% of land area)

https://data.worldbank.org/indicator/AG.LND.AGRI.ZS?view=chart

Arable Land Percent

Arable land (cropland % of land area)

https://data.worldbank.org/indicator/AG.LND.ARBL.ZS?view=chart

Low Elevation Percent

Population living in areas where elevation is below 5 meters (% of total population) (2015)

https://data.worldbank.org/indicator/EN.POP.EL5M.ZS?view=chart

Water Percent

Annual freshwater withdrawals, total (% of internal resources)

https://data.worldbank.org/indicator/ER.H2O.FWTL.ZS?view=chart

Irrigation Percent

Agricultural irrigated land (% of total agricultural land) (2021 with latest data earlier for some countries)

https://data.worldbank.org/indicator/AG.LND.IRIG.AG.ZS?view=chart

Fertilizer Intensity

Fertilizer consumption (kilograms per hectare of arable land) (2021 with latest data earlier for some countries)

https://data.worldbank.org/indicator/AG.CON.FERT.ZS?view=chart

Economic Indicators

GDP per Capita PPP

GDP per capita, PPP (current international dollars for 2020 with latest data earlier for some countries)

https://data.worldbank.org/indicator/NY.GDP.PCAP.PP.CD?view=chart

Gini Index

Gini index of inequality: 0 for perfect inequality and 100 for perfectly even distribution of wealth (2021 with latest data earlier for some countries)

https://data.worldbank.org/indicator/SI.POV.GINI?view=chart

Agriculture Percent GDP

Agriculture, forestry, and fishing, value added (% of GDP) (2022 with latest data earlier for some countries)

https://data.worldbank.org/indicator/NV.AGR.TOTL.ZS?view=chart

Industry Percent GDP

Industry (including construction), value added (% of GDP) (2022 with latest data earlier for some countries)

https://data.worldbank.org/indicator/NV.IND.TOTL.ZS?view=chart

Military Percent GDP

Military expenditure (% of GDP) (2022 with latest data earlier for some countries)

https://data.worldbank.org/indicator/MS.MIL.XPND.GD.ZS?view=chart

Energy MM BTU per Capita

Energy use (kg of oil equivalent per capita) (2015 with latest data earlier for some countries)

Converted to MM BTU at a rate of 39,653 BTU per kg of oil

https://data.worldbank.org/indicator/EG.USE.PCAP.KG.OE?view=chart

Renewable Percent

Renewable energy consumption (% of total final energy consumption) (2015 with latest data earlier for some countries)

https://data.worldbank.org/indicator/EG.USE.COMM.FO.ZS?view=chart

CO2 Tonnes per Capita

CO2 emissions (metric tons per capita)

https://data.worldbank.org/indicator/EN.ATM.CO2E.PC?view=chart

Health Indicators

Attended Births %

Births attended by skilled health staff (% of total) (2020 with latest data earlier for some countries)

https://data.worldbank.org/indicator/SH.STA.BRTC.ZS?view=chart

Contraceptive %

Contraceptive prevalence, any methods (% of women ages 15-49) (2020 with latest data earlier for some countries)

https://data.worldbank.org/indicator/SP.DYN.CONU.ZS?view=chart

Diabetes %

Diabetes prevalence (% of population ages 20 to 79)

https://data.worldbank.org/indicator/SH.STA.DIAB.ZS?view=chart

HIV Prevalence %

Prevalence of HIV, total (% of population ages 15-49)

https://data.worldbank.org/indicator/SH.DYN.AIDS.ZS?view=chart

Immunized DPT %

Immunization, DPT (% of children ages 12-23 months)

https://data.worldbank.org/indicator/SH.IMM.IDPT

Immunized Measles %

Immunization, measles (% of children ages 12-23 months)

https://data.worldbank.org/indicator/SH.IMM.MEAS?view=chart

Mortality Communicable %

Cause of death, by communicable diseases and maternal, prenatal and nutrition conditions (% of total)

https://data.worldbank.org/indicator/SH.DTH.COMM.ZS

Mortality Infant per 1K

Mortality rate, infant (per 1,000 live births)

https://data.worldbank.org/indicator/SP.DYN.IMRT.IN

Mortality Injury %

Cause of death, by injury (% of total)

https://data.worldbank.org/indicator/SH.DTH.INJR.ZS?view=chart

Mortality Maternal per 100K

Maternal mortality ratio (modeled estimate, per 100,000 live births)

https://data.worldbank.org/indicator/SH.STA.MMRT?view=chart

Mortality Non-Communicable Deaths %

Cause of death, by non-communicable diseases (% of total)

https://data.worldbank.org/indicator/SH.DTH.NCOM.ZS?view=chart

Mortality Traffic per 100K

Mortality caused by road traffic injury (per 100,000 people) (2019 with latest data earlier for some countries)

https://data.worldbank.org/indicator/SH.STA.TRAF.P5?view=chart

Surgeons per 100K

Specialist surgical workforce (per 100,000 population) (2018 with latest data earlier for some countries)

https://data.worldbank.org/indicator/SH.MED.SAOP.P5

Teen Fertility per 1K

Adolescent fertility rate (births per 1,000 women ages 15-19)

https://data.worldbank.org/indicator/SP.ADO.TFRT

Tuberculosis per 100K

Incidence of tuberculosis (per 100,000 people)

https://data.worldbank.org/indicator/SH.TBS.INCD?view=chart

Undernourished Percent

Prevalence of undernourishment (% of population)

https://data.worldbank.org/indicator/SN.ITK.DEFC.ZS?view=chart

Appendix: Python Code Used to Compile the Data

import pandas

import geopandas

import matplotlib.pyplot as plt

countries = geopandas.read_file("https://michaelminn.net/tutorials/data/2024-natural-earth-countries.geojson")

countries = countries[["NAME", "ISO_A3", "geometry"]]

countries = countries.rename(columns={"NAME":"Country Name", "ISO_A3":"Country Code"})

indicators = {
"Population":			"SP.POP.TOTL",
"Working Age Population Percent": "SP.POP.1564.TO.ZS",
"Urban Population Percent":	"SP.URB.TOTL.IN.ZS",
"Rural Population Percent":	"SP.RUR.TOTL.ZS",
"Life Expectancy Years":	"SP.DYN.LE00.IN",
"Refugees by Origin":		"SM.POP.REFG.OR",
"Refugees by Destination":	"SM.POP.REFG",
"Land Area Sq km":		"AG.LND.TOTL.K2",
"Forest Area Percent":		"AG.LND.FRST.ZS",
"Agricultural Land Percent":	"AG.LND.AGRI.ZS",
"Arable Land Percent":		"AG.LND.ARBL.ZS",
"CO2 Tonnes per Capita":	"EN.ATM.CO2E.PC",
"Low Elevation Percent":	"EN.POP.EL5M.ZS",
"Water Percent":		"ER.H2O.FWTL.ZS",
"Irrigation Percent":		"AG.LND.IRIG.AG.ZS",
"Fertilizer Intensity":		"AG.CON.FERT.ZS",
"GDP per Capita PPP":		"NY.GDP.PCAP.PP.CD",
"Gini Index":			"SI.POV.GINI",
"Agriculture Percent GDP":	"NV.AGR.TOTL.ZS",
"Industry Percent GDP":		"NV.IND.TOTL.ZS",
"Military Percent GDP":		"MS.MIL.XPND.GD.ZS",
"Energy MM BTU per Capita":	"EG.USE.PCAP.KG.OE",
"Renewable Percent":		"EG.USE.COMM.FO.ZS",
"Attended Births Percent":	"SH.STA.BRTC.ZS",
"Contraceptive Percent":	"SP.DYN.CONU.ZS",
"Diabetes Percent":		"SH.STA.DIAB.ZS",
"HIV Prevalence Percent":	"SH.DYN.AIDS.ZS",
"Immunized DPT Percent":	"SH.IMM.IDPT",
"Immunized Measles Percent":	"SH.IMM.MEAS",
"Mortality Communicable Percent": "SH.DTH.COMM.ZS",
"Mortality Infant per 1K":	"SP.DYN.IMRT.IN",
"Mortality Injury Percent":	"SH.DTH.INJR.ZS",
"Mortality Maternal per 100K":	"SH.STA.MMRT",
"Mortality Non-Communicable Deaths Percent":"SH.DTH.NCOM.ZS",
"Mortality Traffic per 100K":	"SH.STA.TRAF.P5",
"Surgeons per 100K":		"SH.MED.SAOP.P5",
"Teen Fertility per 1K":	"SP.ADO.TFRT",
"Tuberculosis per 100K":	"SH.TBS.INCD",
"Undernourished Percent": 	"SN.ITK.DEFC.ZS"}

# The API will fail sporadically with an error 400
# You can manually re-run this section to start
# with the first column that remains to be filled.

for varname, indicator in indicators.items():
	print(varname, indicator)
	if varname in countries.columns:
		continue
	url = "https://api.worldbank.org/v2/country/all/indicator/" + indicator + "?mrnev=1&per_page=300"
	data = pandas.read_xml(url)
	data = data[["countryiso3code", "value"]]
	data = data.rename(columns = {"countryiso3code":"Country Code", "value":varname})
	countries = countries.merge(data, how="left")

countries = countries.sort_values("Country Name")

# kg oil to MM BTU

countries["Energy MM BTU per Capita"] = countries["Energy MM BTU per Capita"] * 39653 / 1000000

countries.describe().transpose()

countries.to_file("2023-world-bank-indicators.geojson")

csv = countries.drop(["geometry"], axis=1)

csv.to_csv("2023-world-bank-indicators.csv")

projected = countries.to_crs("ESRI:54030")

axis = projected.plot("Energy MM BTU per Capita", scheme="quantiles", cmap="coolwarm_r", 
	legend=True, legend_kwds={"bbox_to_anchor":(0.2, 0.4)})

axis.set_axis_off()

plt.show()