Population ages 15-64 (% of total population)

Source: worldbank.org, 01.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba 66.1 -0.522% 74
Afghanistan Afghanistan 54.7 +0.58% 203
Angola Angola 52.8 +0.343% 207
Albania Albania 66.2 -0.629% 71
Andorra Andorra 72.2 -0.228% 16
United Arab Emirates United Arab Emirates 82.1 +0.191% 2
Argentina Argentina 66 +0.57% 77
Armenia Armenia 67.1 -0.273% 60
American Samoa American Samoa 64.9 +0.013% 101
Antigua & Barbuda Antigua & Barbuda 70.4 -0.182% 23
Australia Australia 64.4 -0.244% 113
Austria Austria 65.2 -0.561% 90
Azerbaijan Azerbaijan 69.6 -0.0178% 30
Burundi Burundi 52.8 +1.24% 208
Belgium Belgium 63.4 -0.186% 130
Benin Benin 55.3 +0.46% 202
Burkina Faso Burkina Faso 55.5 +1.03% 200
Bangladesh Bangladesh 65.5 +0.297% 88
Bulgaria Bulgaria 63.5 -0.211% 128
Bahrain Bahrain 77.4 +0.0772% 4
Bahamas Bahamas 70.3 +0.196% 25
Bosnia & Herzegovina Bosnia & Herzegovina 64.7 -0.623% 107
Belarus Belarus 66 -0.342% 76
Belize Belize 68.4 +0.34% 42
Bermuda Bermuda 64.6 -0.86% 109
Bolivia Bolivia 64.6 +0.412% 111
Brazil Brazil 69.3 -0.208% 35
Barbados Barbados 66.2 -0.318% 73
Brunei Brunei 72.3 -0.218% 15
Bhutan Bhutan 72.6 +0.591% 14
Botswana Botswana 63.8 +0.134% 121
Central African Republic Central African Republic 48.8 +0.22% 216
Canada Canada 65.1 -0.38% 94
Switzerland Switzerland 65 -0.532% 97
Chile Chile 68.9 -0.0342% 39
China China 69.3 +0.337% 32
Côte d’Ivoire Côte d’Ivoire 56.5 +0.649% 193
Cameroon Cameroon 55.8 +0.538% 197
Congo - Kinshasa Congo - Kinshasa 50.9 +0.0946% 212
Congo - Brazzaville Congo - Brazzaville 56.6 +0.653% 192
Colombia Colombia 69.9 -0.11% 27
Comoros Comoros 58.4 +0.483% 176
Cape Verde Cape Verde 67.6 +0.813% 53
Costa Rica Costa Rica 69 +0.0368% 38
Cuba Cuba 68.1 -0.225% 50
Curaçao Curaçao 68.3 -0.27% 46
Cayman Islands Cayman Islands 74.8 -0.465% 7
Cyprus Cyprus 69.3 -0.447% 34
Czechia Czechia 63.8 -0.0363% 122
Germany Germany 62.9 -0.632% 138
Djibouti Djibouti 66 +0.441% 78
Dominica Dominica 69.2 +0.0355% 37
Denmark Denmark 63.4 -0.15% 131
Dominican Republic Dominican Republic 65.5 +0.0561% 87
Algeria Algeria 63.1 +0.167% 133
Ecuador Ecuador 67.2 +0.445% 58
Egypt Egypt 62.9 +0.469% 139
Eritrea Eritrea 57.7 +0.854% 184
Spain Spain 65.9 -0.234% 79
Estonia Estonia 63.1 -0.0833% 134
Ethiopia Ethiopia 57.7 +0.43% 183
Finland Finland 61.5 -0.0285% 153
Fiji Fiji 66.4 +0.223% 70
France France 61.3 -0.192% 155
Faroe Islands Faroe Islands 62.3 +0.289% 147
Micronesia (Federated States of) Micronesia (Federated States of) 62.2 +0.101% 149
Gabon Gabon 59.4 +0.231% 167
United Kingdom United Kingdom 63.3 -0.0593% 132
Georgia Georgia 63.6 -0.123% 126
Ghana Ghana 60.5 +0.472% 160
Gibraltar Gibraltar 64.7 +0.000928% 106
Guinea Guinea 55.6 +0.592% 199
Gambia Gambia 56.7 +0.679% 190
Guinea-Bissau Guinea-Bissau 58 +0.707% 181
Equatorial Guinea Equatorial Guinea 59 +0.228% 172
Greece Greece 62.8 -0.142% 142
Grenada Grenada 68.3 +0.0526% 45
Greenland Greenland 68.4 -0.999% 44
Guatemala Guatemala 63.6 +0.707% 125
Guam Guam 61.4 -0.724% 154
Guyana Guyana 64.1 -0.144% 116
Hong Kong SAR China Hong Kong SAR China 66.8 -1.23% 62
Honduras Honduras 65 +0.386% 100
Croatia Croatia 62.9 -0.249% 140
Haiti Haiti 64.1 +0.465% 115
Hungary Hungary 64.6 -0.139% 110
Indonesia Indonesia 68.1 +0.142% 51
Isle of Man Isle of Man 62.6 -0.223% 145
India India 68.2 +0.307% 49
Ireland Ireland 65.6 +0.17% 85
Iran Iran 69.3 +0.109% 33
Iraq Iraq 60 +0.827% 165
Iceland Iceland 66.6 -0.00586% 67
Israel Israel 60 +0.114% 164
Italy Italy 63.5 -0.242% 129
Jamaica Jamaica 73.1 +0.115% 10
Jordan Jordan 64.8 +0.554% 103
Japan Japan 58.8 -0.00982% 173
Kazakhstan Kazakhstan 62 -0.288% 151
Kenya Kenya 60.2 +0.936% 163
Kyrgyzstan Kyrgyzstan 62 +0.121% 150
Cambodia Cambodia 64 +0.18% 117
Kiribati Kiribati 61.1 +0.192% 156
St. Kitts & Nevis St. Kitts & Nevis 70.6 -0.541% 21
South Korea South Korea 70.2 -0.758% 26
Kuwait Kuwait 78.7 +0.296% 3
Laos Laos 65.1 +0.353% 92
Lebanon Lebanon 63.7 +0.339% 123
Liberia Liberia 57.2 +0.775% 188
Libya Libya 67.6 +0.607% 54
St. Lucia St. Lucia 72.8 +0.02% 11
Liechtenstein Liechtenstein 65 -0.732% 99
Sri Lanka Sri Lanka 65.9 -0.052% 80
Lesotho Lesotho 61.6 +0.612% 152
Lithuania Lithuania 65.1 -0.198% 93
Luxembourg Luxembourg 68.7 -0.474% 40
Latvia Latvia 62.9 -0.198% 141
Macao SAR China Macao SAR China 71.8 -0.835% 17
Saint Martin (French part) Saint Martin (French part) 60.3 -2.28% 162
Morocco Morocco 66.2 +0.135% 72
Monaco Monaco 50.4 -0.204% 215
Moldova Moldova 64 -0.611% 119
Madagascar Madagascar 57.3 +0.43% 186
Maldives Maldives 75.8 +0.214% 6
Mexico Mexico 67.2 +0.218% 57
Marshall Islands Marshall Islands 60.9 -0.0456% 158
North Macedonia North Macedonia 65.2 -0.425% 91
Mali Mali 51.5 +0.663% 211
Malta Malta 66.8 -0.434% 65
Myanmar (Burma) Myanmar (Burma) 68.4 -0.000118% 43
Montenegro Montenegro 64 -0.249% 118
Mongolia Mongolia 62.7 +0.272% 143
Northern Mariana Islands Northern Mariana Islands 68.2 -0.633% 48
Mozambique Mozambique 52.8 +0.55% 209
Mauritania Mauritania 54.1 +0.58% 206
Mauritius Mauritius 71.7 -0.377% 18
Malawi Malawi 56.7 +1.1% 189
Malaysia Malaysia 70.5 +0.306% 22
Namibia Namibia 59.3 +0.356% 170
New Caledonia New Caledonia 67.3 -0.172% 56
Niger Niger 50.8 +0.676% 214
Nigeria Nigeria 55.9 +0.825% 196
Nicaragua Nicaragua 65.7 +0.444% 82
Netherlands Netherlands 64.5 -0.3% 112
Norway Norway 65 +0.103% 98
Nepal Nepal 65.1 +0.218% 95
Nauru Nauru 59.4 +0.392% 169
New Zealand New Zealand 64.7 -0.218% 108
Oman Oman 72.6 +0.734% 13
Pakistan Pakistan 59 +0.457% 171
Panama Panama 65.8 +0.129% 81
Peru Peru 66.8 +0.228% 64
Philippines Philippines 66.6 +0.771% 66
Palau Palau 70.4 -0.275% 24
Papua New Guinea Papua New Guinea 63.1 +0.332% 135
Poland Poland 65.1 -0.446% 96
Puerto Rico Puerto Rico 63.7 -0.155% 124
North Korea North Korea 68.7 -0.49% 41
Portugal Portugal 62.7 -0.519% 144
Paraguay Paraguay 64.9 +0.0381% 102
Palestinian Territories Palestinian Territories 58.1 +0.498% 179
French Polynesia French Polynesia 69.6 +0.048% 31
Qatar Qatar 83.3 -0.0167% 1
Romania Romania 64.3 -0.104% 114
Russia Russia 65.5 -0.51% 86
Rwanda Rwanda 58.7 +0.456% 174
Saudi Arabia Saudi Arabia 73.2 +0.202% 9
Sudan Sudan 56.2 +0.157% 195
Senegal Senegal 58.2 +0.727% 178
Singapore Singapore 74.7 -0.612% 8
Solomon Islands Solomon Islands 59.4 +0.645% 168
Sierra Leone Sierra Leone 58.7 +0.699% 175
El Salvador El Salvador 67 +0.383% 61
San Marino San Marino 65.3 -0.441% 89
Somalia Somalia 50.8 +0.115% 213
Serbia Serbia 63 -0.487% 137
South Sudan South Sudan 58.1 +1.49% 180
São Tomé & Príncipe São Tomé & Príncipe 58.3 +0.724% 177
Suriname Suriname 66.5 +0.0442% 68
Slovakia Slovakia 65.7 -0.516% 83
Slovenia Slovenia 63.5 -0.353% 127
Sweden Sweden 62.3 +0.0863% 148
Eswatini Eswatini 62.4 +0.324% 146
Sint Maarten Sint Maarten 70.9 -0.0992% 20
Seychelles Seychelles 71.5 -0.0272% 19
Syria Syria 66.1 +1.72% 75
Turks & Caicos Islands Turks & Caicos Islands 72.7 -0.282% 12
Chad Chad 51.8 +1.26% 210
Togo Togo 57.3 +0.539% 187
Thailand Thailand 69.9 -0.434% 28
Tajikistan Tajikistan 59.9 +0.0722% 166
Turkmenistan Turkmenistan 64 -0.147% 120
Timor-Leste Timor-Leste 61.1 +1.04% 157
Tonga Tonga 57.9 +0.186% 182
Trinidad & Tobago Trinidad & Tobago 69.9 -0.367% 29
Tunisia Tunisia 66.4 +0.0491% 69
Turkey Turkey 68.3 +0.158% 47
Tuvalu Tuvalu 60.4 -1.21% 161
Tanzania Tanzania 54.4 +0.343% 204
Uganda Uganda 54.3 +0.662% 205
Ukraine Ukraine 67.1 +0.00311% 59
Uruguay Uruguay 65.7 +0.244% 84
United States United States 64.7 -0.349% 105
Uzbekistan Uzbekistan 63 -0.633% 136
St. Vincent & Grenadines St. Vincent & Grenadines 66.8 +0.0407% 63
Venezuela Venezuela 64.8 +0.436% 104
British Virgin Islands British Virgin Islands 75.9 +0.299% 5
U.S. Virgin Islands U.S. Virgin Islands 60.8 -0.692% 159
Vietnam Vietnam 67.7 -0.0652% 52
Vanuatu Vanuatu 57.4 +0.388% 185
Samoa Samoa 55.7 +0.159% 198
Kosovo Kosovo 69.2 +0.222% 36
Yemen Yemen 56.3 +0.146% 194
South Africa South Africa 67.4 +0.0381% 55
Zambia Zambia 56.6 +0.801% 191
Zimbabwe Zimbabwe 55.5 +0.847% 201

                    
# Install missing packages
import sys
import subprocess

def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Required packages
for package in ['wbdata', 'country_converter']:
try:
__import__(package)
except ImportError:
install(package)

# Import libraries
import wbdata
import country_converter as coco
from datetime import datetime

# Define World Bank indicator code
dataset_code = 'SP.POP.1564.TO.ZS'

# Download data from World Bank API
data = wbdata.get_dataframe({dataset_code: 'value'},
date=(datetime(1960, 1, 1), datetime.today()),
parse_dates=True,
keep_levels=True).reset_index()

# Extract year
data['year'] = data['date'].dt.year

# Convert country names to ISO codes using country_converter
cc = coco.CountryConverter()
data['iso2c'] = cc.convert(names=data['country'], to='ISO2', not_found=None)
data['iso3c'] = cc.convert(names=data['country'], to='ISO3', not_found=None)

# Filter out rows where ISO codes could not be matched — likely not real countries
data = data[data['iso2c'].notna() & data['iso3c'].notna()]

# Sort for calculation
data = data.sort_values(['iso3c', 'year'])

# Calculate YoY absolute and percent change
data['value_change'] = data.groupby('iso3c')['value'].diff()
data['value_change_percent'] = data.groupby('iso3c')['value'].pct_change() * 100

# Calculate ranks (higher GDP per capita = better rank)
data['rank'] = data.groupby('year')['value'].rank(ascending=False, method='dense')

# Calculate rank change from previous year
data['rank_change'] = data.groupby('iso3c')['rank'].diff()

# Select desired columns
final_df = data[['country', 'iso2c', 'iso3c', 'year', 'value',
'value_change', 'value_change_percent', 'rank', 'rank_change']].copy()

# Optional: Add labels as metadata (could be useful for export or UI)
column_labels = {
'country': 'Country name',
'iso2c': 'ISO 2-letter country code',
'iso3c': 'ISO 3-letter country code',
'year': 'Year',
'value': 'GDP per capita (current US$)',
'value_change': 'Year-over-Year change in value',
'value_change_percent': 'Year-over-Year percent change in value',
'rank': 'Country rank by GDP per capita (higher = richer)',
'rank_change': 'Change in rank from previous year'
}

# Display first few rows
print(final_df.head(10))

# Optional: Save to CSV
#final_df.to_csv("gdp_per_capita_cleaned.csv", index=False)
                    
                
                    
# Check and install required packages
required_packages <- c("WDI", "countrycode", "dplyr")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

# Load the necessary libraries
library(WDI)
library(dplyr)
library(countrycode)

# Define the dataset code (World Bank indicator code)
dataset_code <- 'SP.POP.1564.TO.ZS'

# Download data using WDI package
dat <- WDI(indicator = dataset_code)

# Filter only countries using 'is_country' from countrycode
# This uses iso2c to identify whether the entry is a recognized country
dat <- dat %>%
  filter(countrycode(iso2c, origin = 'iso2c', destination = 'country.name', warn = FALSE) %in%
           countrycode::codelist$country.name.en)

# Ensure dataset is ordered by country and year
dat <- dat %>%
  arrange(iso3c, year)

# Rename the dataset_code column to "value" for easier manipulation
dat <- dat %>%
  rename(value = !!dataset_code)

# Calculate year-over-year (YoY) change and percentage change
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(
    value_change = value - lag(value),                              # Absolute change from previous year
    value_change_percent = 100 * (value - lag(value)) / lag(value) # Percent change from previous year
  ) %>%
  ungroup()

# Calculate rank by year (higher value => higher rank)
dat <- dat %>%
  group_by(year) %>%
  mutate(rank = dense_rank(desc(value))) %>% # Rank countries by descending value
  ungroup()

# Calculate rank change (positive = moved up, negative = moved down)
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(rank_change = rank - lag(rank)) %>% # Change in rank compared to previous year
  ungroup()

# Select and reorder final columns
final_data <- dat %>%
  select(
    country,
    iso2c,
    iso3c,
    year,
    value,
    value_change,
    value_change_percent,
    rank,
    rank_change
  )

# Add labels (variable descriptions)
attr(final_data$country, "label") <- "Country name"
attr(final_data$iso2c, "label") <- "ISO 2-letter country code"
attr(final_data$iso3c, "label") <- "ISO 3-letter country code"
attr(final_data$year, "label") <- "Year"
attr(final_data$value, "label") <- "GDP per capita (current US$)"
attr(final_data$value_change, "label") <- "Year-over-Year change in value"
attr(final_data$value_change_percent, "label") <- "Year-over-Year percent change in value"
attr(final_data$rank, "label") <- "Country rank by GDP per capita (higher = richer)"
attr(final_data$rank_change, "label") <- "Change in rank from previous year"

# Print the first few rows of the final dataset
print(head(final_data, 10))