Population ages 15-64, total

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba 71,138 -0.276% 189
Afghanistan Afghanistan 23,333,093 +3.47% 42
Angola Angola 20,002,446 +3.44% 47
Albania Albania 1,798,066 -1.76% 141
Andorra Andorra 59,134 +1.11% 195
United Arab Emirates United Arab Emirates 8,932,401 +3.95% 74
Argentina Argentina 30,150,350 +0.918% 31
Armenia Armenia 2,034,270 +2.06% 138
American Samoa American Samoa 30,373 -1.57% 205
Antigua & Barbuda Antigua & Barbuda 66,030 +0.305% 192
Australia Australia 17,527,551 +1.82% 54
Austria Austria 5,981,212 -0.0524% 98
Azerbaijan Azerbaijan 7,104,510 +0.464% 86
Burundi Burundi 7,412,918 +3.89% 85
Belgium Belgium 7,535,358 +0.571% 81
Benin Benin 8,002,133 +2.96% 79
Burkina Faso Burkina Faso 13,080,453 +3.33% 60
Bangladesh Bangladesh 113,705,228 +1.52% 8
Bulgaria Bulgaria 4,091,863 -0.245% 112
Bahrain Bahrain 1,230,105 +0.814% 149
Bahamas Bahamas 282,148 +0.659% 175
Bosnia & Herzegovina Bosnia & Herzegovina 2,048,283 -1.27% 135
Belarus Belarus 6,031,557 -0.826% 96
Belize Belize 285,268 +1.8% 174
Bermuda Bermuda 41,787 -0.955% 199
Bolivia Bolivia 8,015,521 +1.8% 78
Brazil Brazil 146,884,644 +0.197% 6
Barbados Barbados 187,017 -0.272% 180
Brunei Brunei 334,579 +0.603% 173
Bhutan Bhutan 574,618 +1.25% 162
Botswana Botswana 1,609,356 +1.78% 142
Central African Republic Central African Republic 2,603,806 +3.69% 128
Canada Canada 26,874,373 +2.62% 36
Switzerland Switzerland 5,874,889 +1.1% 99
Chile Chile 13,617,680 +0.504% 59
China China 976,798,955 +0.213% 2
Côte d’Ivoire Côte d’Ivoire 18,049,122 +3.13% 53
Cameroon Cameroon 16,240,266 +3.2% 56
Congo - Kinshasa Congo - Kinshasa 55,612,277 +3.39% 18
Congo - Brazzaville Congo - Brazzaville 3,582,468 +3.1% 118
Colombia Colombia 36,993,721 +0.969% 27
Comoros Comoros 506,166 +2.4% 164
Cape Verde Cape Verde 354,788 +1.3% 172
Costa Rica Costa Rica 3,538,385 +0.515% 120
Cuba Cuba 7,481,292 -0.588% 84
Curaçao Curaçao 106,465 -0.206% 184
Cayman Islands Cayman Islands 55,705 +1.47% 196
Cyprus Cyprus 941,447 +0.538% 155
Czechia Czechia 6,938,176 +0.13% 88
Germany Germany 52,523,588 -1.1% 19
Djibouti Djibouti 771,113 +1.82% 160
Dominica Dominica 45,794 -0.424% 198
Denmark Denmark 3,791,657 +0.354% 115
Dominican Republic Dominican Republic 7,489,835 +0.906% 82
Algeria Algeria 29,534,577 +1.58% 32
Ecuador Ecuador 12,187,069 +1.31% 65
Egypt Egypt 73,289,803 +2.23% 13
Eritrea Eritrea 2,038,633 +2.75% 137
Spain Spain 32,179,918 +0.713% 30
Estonia Estonia 865,244 +0.0407% 157
Ethiopia Ethiopia 76,211,823 +3.06% 12
Finland Finland 3,465,172 +0.926% 122
Fiji Fiji 616,896 +0.727% 161
France France 42,033,842 +0.143% 23
Faroe Islands Faroe Islands 34,088 +0.804% 201
Micronesia (Federated States of) Micronesia (Federated States of) 70,388 +0.572% 190
Gabon Gabon 1,508,973 +2.42% 145
United Kingdom United Kingdom 43,830,571 +1.01% 21
Georgia Georgia 2,335,229 -1.24% 131
Ghana Ghana 20,819,475 +2.37% 46
Gibraltar Gibraltar 25,461 +2.23% 209
Guinea Guinea 8,210,112 +3.03% 76
Gambia Gambia 1,564,189 +3% 143
Guinea-Bissau Guinea-Bissau 1,277,274 +2.95% 148
Equatorial Guinea Equatorial Guinea 1,117,089 +2.67% 152
Greece Greece 6,528,411 -0.303% 93
Grenada Grenada 80,075 +0.16% 188
Greenland Greenland 38,869 -1.05% 200
Guatemala Guatemala 11,701,574 +2.27% 67
Guam Guam 103,040 +0.033% 185
Guyana Guyana 532,764 +0.428% 163
Hong Kong SAR China Hong Kong SAR China 5,027,982 -1.39% 103
Honduras Honduras 7,032,493 +2.09% 87
Croatia Croatia 2,431,478 -0.0782% 129
Haiti Haiti 7,546,932 +1.63% 80
Hungary Hungary 6,177,773 -0.45% 95
Indonesia Indonesia 193,093,840 +0.961% 4
Isle of Man Isle of Man 52,704 -0.229% 197
India India 989,967,399 +1.2% 1
Ireland Ireland 3,526,890 +1.54% 121
Iran Iran 63,475,136 +1.17% 16
Iraq Iraq 27,627,172 +2.99% 34
Iceland Iceland 269,437 +2.86% 176
Israel Israel 5,988,435 +1.39% 97
Italy Italy 37,446,049 -0.254% 24
Jamaica Jamaica 2,075,097 +0.094% 134
Jordan Jordan 7,487,234 +1.55% 83
Japan Japan 72,876,601 -0.444% 14
Kazakhstan Kazakhstan 12,761,934 +0.999% 61
Kenya Kenya 33,971,376 +2.93% 29
Kyrgyzstan Kyrgyzstan 4,477,563 +1.88% 109
Cambodia Cambodia 11,296,444 +1.42% 69
Kiribati Kiribati 82,149 +1.69% 187
St. Kitts & Nevis St. Kitts & Nevis 33,064 -0.362% 203
South Korea South Korea 36,307,699 -0.684% 28
Kuwait Kuwait 3,913,252 +2.78% 113
Laos Laos 5,060,934 +1.73% 102
Lebanon Lebanon 3,696,945 +0.903% 116
Liberia Liberia 3,208,590 +2.97% 124
Libya Libya 4,987,238 +1.64% 104
St. Lucia St. Lucia 130,937 +0.276% 182
Liechtenstein Liechtenstein 26,133 +0.134% 208
Sri Lanka Sri Lanka 14,435,143 -0.601% 57
Lesotho Lesotho 1,440,421 +1.74% 146
Lithuania Lithuania 1,880,919 +0.375% 139
Luxembourg Luxembourg 465,906 +1.21% 167
Latvia Latvia 1,170,560 -0.996% 150
Macao SAR China Macao SAR China 493,413 +0.363% 165
Saint Martin (French part) Saint Martin (French part) 15,745 -7.2% 213
Morocco Morocco 25,220,566 +1.11% 39
Monaco Monaco 19,455 -1.04% 212
Moldova Moldova 1,529,130 -3.38% 144
Madagascar Madagascar 18,328,064 +2.91% 50
Maldives Maldives 399,901 +0.558% 169
Mexico Mexico 87,993,476 +1.08% 10
Marshall Islands Marshall Islands 22,861 -3.34% 210
North Macedonia North Macedonia 1,167,649 -2.37% 151
Mali Mali 12,600,039 +3.67% 62
Malta Malta 383,417 +3.46% 171
Myanmar (Burma) Myanmar (Burma) 37,275,361 +0.677% 26
Montenegro Montenegro 399,508 -0.201% 170
Mongolia Mongolia 2,208,951 +1.53% 133
Northern Mariana Islands Northern Mariana Islands 30,218 -2.54% 206
Mozambique Mozambique 18,274,202 +3.53% 51
Mauritania Mauritania 2,794,594 +3.52% 127
Mauritius Mauritius 902,605 -0.498% 156
Malawi Malawi 12,280,351 +3.74% 63
Malaysia Malaysia 25,059,539 +1.54% 40
Namibia Namibia 1,798,301 +2.63% 140
New Caledonia New Caledonia 196,852 +0.782% 177
Niger Niger 13,733,709 +4.03% 58
Nigeria Nigeria 130,155,065 +2.95% 7
Nicaragua Nicaragua 4,544,425 +1.81% 106
Netherlands Netherlands 11,602,374 +0.354% 68
Norway Norway 3,623,426 +1.06% 117
Nepal Nepal 19,293,162 +0.0711% 48
Nauru Nauru 7,093 +0.997% 215
New Zealand New Zealand 3,453,239 +1.56% 123
Oman Oman 3,836,566 +5.37% 114
Pakistan Pakistan 148,335,347 +1.99% 5
Panama Panama 2,969,081 +1.41% 126
Peru Peru 22,858,026 +1.33% 45
Philippines Philippines 77,198,220 +1.61% 11
Palau Palau 12,460 -0.455% 214
Papua New Guinea Papua New Guinea 6,669,106 +2.14% 91
Poland Poland 23,779,135 -0.806% 41
Puerto Rico Puerto Rico 2,038,982 -0.17% 136
North Korea North Korea 18,192,245 -0.186% 52
Portugal Portugal 6,706,494 +0.642% 90
Paraguay Paraguay 4,495,248 +1.28% 108
Palestinian Territories Palestinian Territories 3,073,799 +2.9% 125
French Polynesia French Polynesia 196,066 +0.293% 178
Qatar Qatar 2,379,235 +7.58% 130
Romania Romania 12,262,203 -0.0526% 64
Russia Russia 94,078,090 -0.712% 9
Rwanda Rwanda 8,370,477 +2.63% 75
Saudi Arabia Saudi Arabia 25,850,598 +4.95% 37
Sudan Sudan 28,365,906 +0.97% 33
Senegal Senegal 10,768,138 +3.09% 70
Singapore Singapore 4,506,976 +1.39% 107
Solomon Islands Solomon Islands 486,528 +3.06% 166
Sierra Leone Sierra Leone 5,070,151 +2.86% 101
El Salvador El Salvador 4,249,458 +0.838% 110
San Marino San Marino 22,198 -0.099% 211
Somalia Somalia 9,659,535 +3.66% 72
Serbia Serbia 4,150,130 -1.03% 111
South Sudan South Sudan 6,938,028 +5.56% 89
São Tomé & Príncipe São Tomé & Príncipe 137,250 +2.76% 181
Suriname Suriname 421,653 +0.926% 168
Slovakia Slovakia 3,562,375 -0.601% 119
Slovenia Slovenia 1,350,486 -0.0777% 147
Sweden Sweden 6,581,488 +0.4% 92
Eswatini Eswatini 775,344 +1.33% 159
Sint Maarten Sint Maarten 30,745 +1.31% 204
Seychelles Seychelles 86,780 +1.29% 186
Syria Syria 16,307,424 +6.37% 55
Turks & Caicos Islands Turks & Caicos Islands 33,820 +0.446% 202
Chad Chad 10,522,017 +6.4% 71
Togo Togo 5,448,495 +2.82% 100
Thailand Thailand 50,087,170 -0.481% 20
Tajikistan Tajikistan 6,342,581 +2.01% 94
Turkmenistan Turkmenistan 4,793,698 +1.62% 105
Timor-Leste Timor-Leste 855,284 +2.23% 158
Tonga Tonga 60,298 -0.218% 194
Trinidad & Tobago Trinidad & Tobago 955,936 -0.308% 154
Tunisia Tunisia 8,155,858 +0.678% 77
Turkey Turkey 58,380,949 +0.384% 17
Tuvalu Tuvalu 5,825 -2.92% 216
Tanzania Tanzania 37,309,677 +3.27% 25
Uganda Uganda 27,142,399 +3.47% 35
Ukraine Ukraine 25,422,766 +0.341% 38
Uruguay Uruguay 2,223,696 +0.2% 132
United States United States 220,210,617 +0.629% 3
Uzbekistan Uzbekistan 22,919,628 +1.34% 43
St. Vincent & Grenadines St. Vincent & Grenadines 67,229 -0.658% 191
Venezuela Venezuela 18,405,026 +0.807% 49
British Virgin Islands British Virgin Islands 29,952 +1.55% 207
U.S. Virgin Islands U.S. Virgin Islands 63,475 -1.2% 193
Vietnam Vietnam 68,397,760 +0.568% 15
Vanuatu Vanuatu 188,112 +2.7% 179
Samoa Samoa 121,338 +0.786% 183
Kosovo Kosovo 1,057,138 -9.03% 153
Yemen Yemen 22,868,019 +3.18% 44
South Africa South Africa 43,157,289 +1.3% 22
Zambia Zambia 12,063,392 +3.68% 66
Zimbabwe Zimbabwe 9,236,166 +2.66% 73

                    
# 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'

# 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'

# 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))