Population ages 15-64, male

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba 33,851 -0.0325% 191
Afghanistan Afghanistan 11,747,409 +3.58% 42
Angola Angola 9,828,449 +3.47% 47
Albania Albania 888,892 -1.68% 140
Andorra Andorra 30,511 +1.01% 194
United Arab Emirates United Arab Emirates 5,958,422 +3.73% 66
Argentina Argentina 15,213,302 +0.973% 32
Armenia Armenia 953,369 +2.42% 138
American Samoa American Samoa 15,483 -1.62% 205
Antigua & Barbuda Antigua & Barbuda 31,650 +0.479% 192
Australia Australia 8,754,760 +1.9% 53
Austria Austria 3,015,860 -0.0183% 96
Azerbaijan Azerbaijan 3,469,031 +0.66% 88
Burundi Burundi 3,665,654 +3.9% 85
Belgium Belgium 3,792,721 +0.608% 81
Benin Benin 4,003,935 +3% 79
Burkina Faso Burkina Faso 6,479,017 +3.38% 60
Bangladesh Bangladesh 54,745,179 +1.51% 8
Bulgaria Bulgaria 2,075,821 -0.226% 112
Bahrain Bahrain 801,861 +0.722% 143
Bahamas Bahamas 135,299 +0.644% 176
Bosnia & Herzegovina Bosnia & Herzegovina 1,023,460 -1.12% 135
Belarus Belarus 2,942,197 -0.671% 99
Belize Belize 143,648 +1.81% 174
Bermuda Bermuda 21,111 -0.803% 199
Bolivia Bolivia 4,026,206 +1.78% 76
Brazil Brazil 72,733,607 +0.211% 6
Barbados Barbados 90,846 -0.124% 180
Brunei Brunei 180,796 +0.586% 173
Bhutan Bhutan 311,779 +1.18% 161
Botswana Botswana 803,604 +1.66% 142
Central African Republic Central African Republic 1,192,370 +4.18% 130
Canada Canada 13,530,836 +2.63% 36
Switzerland Switzerland 2,973,754 +1.12% 98
Chile Chile 6,838,700 +0.533% 59
China China 504,404,744 +0.295% 2
Côte d’Ivoire Côte d’Ivoire 9,236,759 +3.07% 48
Cameroon Cameroon 8,069,058 +3.18% 56
Congo - Kinshasa Congo - Kinshasa 27,481,736 +3.38% 18
Congo - Brazzaville Congo - Brazzaville 1,787,827 +3.09% 118
Colombia Colombia 18,332,418 +1.02% 28
Comoros Comoros 254,967 +2.45% 165
Cape Verde Cape Verde 183,966 +1.33% 172
Costa Rica Costa Rica 1,759,336 +0.572% 122
Cuba Cuba 3,741,631 -0.555% 82
Curaçao Curaçao 52,512 +0.168% 185
Cayman Islands Cayman Islands 28,198 +1.51% 195
Cyprus Cyprus 480,192 +0.531% 154
Czechia Czechia 3,547,987 +0.158% 86
Germany Germany 26,681,667 -1.07% 19
Djibouti Djibouti 381,513 +1.81% 159
Dominica Dominica 23,084 -0.74% 198
Denmark Denmark 1,913,770 +0.393% 115
Dominican Republic Dominican Republic 3,741,319 +0.942% 83
Algeria Algeria 15,141,961 +1.54% 33
Ecuador Ecuador 6,097,383 +1.34% 64
Egypt Egypt 37,182,588 +2.24% 13
Eritrea Eritrea 1,001,491 +2.86% 136
Spain Spain 16,205,254 +0.76% 31
Estonia Estonia 438,051 +0.185% 157
Ethiopia Ethiopia 37,982,002 +3.07% 12
Finland Finland 1,767,776 +0.969% 121
Fiji Fiji 307,097 +0.67% 162
France France 20,848,045 +0.208% 23
Faroe Islands Faroe Islands 17,964 +0.729% 201
Micronesia (Federated States of) Micronesia (Federated States of) 34,847 +0.577% 189
Gabon Gabon 774,988 +2.27% 145
United Kingdom United Kingdom 21,831,777 +1.08% 21
Georgia Georgia 1,116,234 -1.07% 131
Ghana Ghana 10,380,735 +2.35% 46
Gibraltar Gibraltar 12,783 +2.26% 209
Guinea Guinea 4,025,471 +3.2% 77
Gambia Gambia 775,482 +3.07% 144
Guinea-Bissau Guinea-Bissau 628,591 +3.1% 149
Equatorial Guinea Equatorial Guinea 608,849 +2.45% 150
Greece Greece 3,248,583 -0.168% 93
Grenada Grenada 40,644 +0.0887% 187
Greenland Greenland 20,456 -1.26% 200
Guatemala Guatemala 5,778,473 +2.34% 69
Guam Guam 52,753 -0.0455% 184
Guyana Guyana 257,947 +0.446% 164
Hong Kong SAR China Hong Kong SAR China 2,185,976 -1.53% 111
Honduras Honduras 3,540,846 +2.13% 87
Croatia Croatia 1,220,612 -0.0115% 129
Haiti Haiti 3,737,976 +1.59% 84
Hungary Hungary 3,111,677 -0.332% 94
Indonesia Indonesia 97,681,606 +0.991% 4
Isle of Man Isle of Man 26,382 -0.208% 197
India India 512,863,092 +1.21% 1
Ireland Ireland 1,750,600 +1.59% 123
Iran Iran 32,309,726 +1.15% 16
Iraq Iraq 13,836,845 +3.1% 34
Iceland Iceland 139,551 +2.88% 175
Israel Israel 3,003,520 +1.47% 97
Italy Italy 18,818,864 -0.168% 24
Jamaica Jamaica 1,032,781 +0.17% 134
Jordan Jordan 3,897,388 +1.38% 80
Japan Japan 36,968,304 -0.46% 14
Kazakhstan Kazakhstan 6,289,569 +1.12% 62
Kenya Kenya 16,865,309 +2.9% 29
Kyrgyzstan Kyrgyzstan 2,202,954 +1.98% 110
Cambodia Cambodia 5,536,427 +1.55% 70
Kiribati Kiribati 39,386 +1.75% 188
St. Kitts & Nevis St. Kitts & Nevis 15,836 -0.384% 204
South Korea South Korea 18,656,549 -0.599% 25
Kuwait Kuwait 2,494,053 +2.61% 105
Laos Laos 2,541,510 +1.72% 103
Lebanon Lebanon 1,785,513 +1.11% 120
Liberia Liberia 1,593,375 +3.05% 125
Libya Libya 2,544,191 +1.66% 102
St. Lucia St. Lucia 65,333 +0.267% 182
Liechtenstein Liechtenstein 13,063 +0.323% 208
Sri Lanka Sri Lanka 7,042,782 -0.52% 57
Lesotho Lesotho 701,364 +1.83% 148
Lithuania Lithuania 944,387 +0.514% 139
Luxembourg Luxembourg 238,246 +1.19% 167
Latvia Latvia 577,206 -0.848% 152
Macao SAR China Macao SAR China 220,352 +0.0749% 168
Saint Martin (French part) Saint Martin (French part) 7,262 -7.7% 213
Morocco Morocco 12,736,383 +1.12% 39
Monaco Monaco 9,628 -1.05% 212
Moldova Moldova 720,809 -3.29% 146
Madagascar Madagascar 9,169,729 +2.91% 49
Maldives Maldives 259,049 +0.262% 163
Mexico Mexico 42,322,260 +1.14% 10
Marshall Islands Marshall Islands 11,705 -3.29% 210
North Macedonia North Macedonia 578,757 -2.33% 151
Mali Mali 6,373,886 +3.64% 61
Malta Malta 205,731 +3.54% 170
Myanmar (Burma) Myanmar (Burma) 18,630,689 +0.673% 26
Montenegro Montenegro 196,461 -0.126% 171
Mongolia Mongolia 1,103,464 +1.59% 133
Northern Mariana Islands Northern Mariana Islands 16,019 -2.39% 203
Mozambique Mozambique 8,753,923 +3.74% 54
Mauritania Mauritania 1,341,766 +3.71% 128
Mauritius Mauritius 459,290 -0.646% 156
Malawi Malawi 5,928,983 +3.8% 67
Malaysia Malaysia 13,297,791 +1.45% 38
Namibia Namibia 880,448 +2.64% 141
New Caledonia New Caledonia 97,066 +0.817% 178
Niger Niger 6,995,772 +4.02% 58
Nigeria Nigeria 65,903,851 +3.01% 7
Nicaragua Nicaragua 2,233,635 +1.89% 109
Netherlands Netherlands 5,837,007 +0.373% 68
Norway Norway 1,851,283 +1.04% 116
Nepal Nepal 8,974,970 -0.449% 52
Nauru Nauru 3,633 +1.23% 215
New Zealand New Zealand 1,725,745 +1.67% 124
Oman Oman 2,553,403 +5.49% 101
Pakistan Pakistan 75,339,594 +1.78% 5
Panama Panama 1,490,798 +1.43% 127
Peru Peru 11,382,814 +1.35% 45
Philippines Philippines 38,663,457 +1.59% 11
Palau Palau 6,907 -0.619% 214
Papua New Guinea Papua New Guinea 3,414,049 +2.07% 89
Poland Poland 11,955,838 -0.757% 41
Puerto Rico Puerto Rico 978,447 +0.014% 137
North Korea North Korea 9,146,388 -0.152% 50
Portugal Portugal 3,272,830 +0.71% 92
Paraguay Paraguay 2,260,394 +1.29% 108
Palestinian Territories Palestinian Territories 1,509,444 +2.75% 126
French Polynesia French Polynesia 99,127 +0.251% 177
Qatar Qatar 1,787,660 +7.19% 119
Romania Romania 6,189,768 +0.0255% 63
Russia Russia 45,510,642 -0.6% 9
Rwanda Rwanda 4,050,258 +2.76% 75
Saudi Arabia Saudi Arabia 16,507,103 +4.64% 30
Sudan Sudan 13,811,943 +0.973% 35
Senegal Senegal 5,416,238 +3.15% 71
Singapore Singapore 2,378,186 +1.39% 106
Solomon Islands Solomon Islands 247,925 +3.08% 166
Sierra Leone Sierra Leone 2,527,808 +2.89% 104
El Salvador El Salvador 2,002,060 +1.02% 114
San Marino San Marino 11,060 -0.171% 211
Somalia Somalia 4,809,443 +3.66% 73
Serbia Serbia 2,029,685 -0.982% 113
South Sudan South Sudan 3,375,504 +5.64% 90
São Tomé & Príncipe São Tomé & Príncipe 68,153 +2.63% 181
Suriname Suriname 213,580 +0.87% 169
Slovakia Slovakia 1,801,962 -0.557% 117
Slovenia Slovenia 704,159 -0.0504% 147
Sweden Sweden 3,372,276 +0.425% 91
Eswatini Eswatini 380,714 +1.39% 160
Sint Maarten Sint Maarten 14,575 +1.43% 206
Seychelles Seychelles 49,743 +1.17% 186
Syria Syria 8,140,998 +6.52% 55
Turks & Caicos Islands Turks & Caicos Islands 17,256 +0.232% 202
Chad Chad 5,248,833 +6.41% 72
Togo Togo 2,746,755 +2.87% 100
Thailand Thailand 24,672,536 -0.49% 20
Tajikistan Tajikistan 3,081,748 +2.07% 95
Turkmenistan Turkmenistan 2,352,224 +1.75% 107
Timor-Leste Timor-Leste 432,054 +2.2% 158
Tonga Tonga 27,195 -0.745% 196
Trinidad & Tobago Trinidad & Tobago 479,486 -0.258% 155
Tunisia Tunisia 4,020,368 +0.697% 78
Turkey Turkey 29,466,327 +0.377% 17
Tuvalu Tuvalu 3,013 -2.52% 216
Tanzania Tanzania 18,424,194 +3.34% 27
Uganda Uganda 13,387,297 +3.52% 37
Ukraine Ukraine 12,441,434 +0.368% 40
Uruguay Uruguay 1,112,128 +0.263% 132
United States United States 112,707,283 +0.651% 3
Uzbekistan Uzbekistan 11,597,798 +1.37% 43
St. Vincent & Grenadines St. Vincent & Grenadines 34,612 -0.78% 190
Venezuela Venezuela 9,132,129 +0.831% 51
British Virgin Islands British Virgin Islands 14,076 +1.97% 207
U.S. Virgin Islands U.S. Virgin Islands 30,724 -1.33% 193
Vietnam Vietnam 33,787,583 +0.64% 15
Vanuatu Vanuatu 93,815 +2.79% 179
Samoa Samoa 60,683 +0.801% 183
Kosovo Kosovo 519,563 -8.99% 153
Yemen Yemen 11,561,962 +3.2% 44
South Africa South Africa 21,174,842 +1.39% 22
Zambia Zambia 5,966,142 +3.71% 65
Zimbabwe Zimbabwe 4,267,279 +2.96% 74

                    
# 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.MA.IN'

# 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.MA.IN'

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