Population ages 45-49, male (% of male population)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba 6.34 -1.82% 87
Afghanistan Afghanistan 3.27 +0.718% 207
Angola Angola 3.44 +0.785% 203
Albania Albania 5.08 -0.572% 149
Andorra Andorra 8.76 -2.32% 6
United Arab Emirates United Arab Emirates 7.54 +1.88% 26
Argentina Argentina 6.63 +2.31% 64
Armenia Armenia 6.06 +3.18% 108
American Samoa American Samoa 6.46 -0.174% 79
Antigua & Barbuda Antigua & Barbuda 6.6 -0.0802% 67
Australia Australia 6.09 -0.854% 107
Austria Austria 6.44 -0.586% 83
Azerbaijan Azerbaijan 6.13 +3.24% 104
Burundi Burundi 3.45 +4.75% 202
Belgium Belgium 6.47 -0.114% 78
Benin Benin 3.61 +0.942% 196
Burkina Faso Burkina Faso 3.57 +3.02% 200
Bangladesh Bangladesh 5.28 +2.23% 141
Bulgaria Bulgaria 8.36 -0.558% 12
Bahrain Bahrain 8.34 +2.99% 14
Bahamas Bahamas 6.65 -1.24% 61
Bosnia & Herzegovina Bosnia & Herzegovina 8.15 +2.21% 15
Belarus Belarus 7.33 +1.83% 38
Belize Belize 5.38 +1.25% 134
Bermuda Bermuda 7.55 -1.5% 24
Bolivia Bolivia 5.2 +1.23% 144
Brazil Brazil 6.97 +1.86% 50
Barbados Barbados 6.54 -1.39% 72
Brunei Brunei 7.47 +2.55% 32
Bhutan Bhutan 6.32 +5.45% 88
Botswana Botswana 4.22 +2.02% 176
Central African Republic Central African Republic 1.83 -2.36% 216
Canada Canada 6.24 +0.506% 96
Switzerland Switzerland 6.82 -0.182% 54
Chile Chile 6.81 +0.421% 55
China China 6.64 -4.16% 63
Côte d’Ivoire Côte d’Ivoire 4.44 +1.79% 168
Cameroon Cameroon 3.76 +1.38% 191
Congo - Kinshasa Congo - Kinshasa 3.06 -0.592% 211
Congo - Brazzaville Congo - Brazzaville 4.48 +0.727% 165
Colombia Colombia 6.23 +1.26% 97
Comoros Comoros 4.68 +1.97% 159
Cape Verde Cape Verde 5.6 +4.4% 128
Costa Rica Costa Rica 6.38 +2.43% 86
Cuba Cuba 6.45 -6.87% 81
Curaçao Curaçao 5.81 -2.01% 119
Cayman Islands Cayman Islands 9.22 -0.952% 3
Cyprus Cyprus 7.19 +3.77% 44
Czechia Czechia 8.9 -0.578% 5
Germany Germany 6.02 +1.13% 111
Djibouti Djibouti 5.58 +0.626% 130
Dominica Dominica 5.93 -1.02% 116
Denmark Denmark 6.28 -2.01% 91
Dominican Republic Dominican Republic 5.73 +0.643% 122
Algeria Algeria 6.4 +2.6% 85
Ecuador Ecuador 5.85 +1.49% 118
Egypt Egypt 5.36 +1.57% 137
Eritrea Eritrea 3.58 +0.034% 198
Spain Spain 8.66 -0.52% 10
Estonia Estonia 7.4 +0.5% 34
Ethiopia Ethiopia 3.57 +1.43% 199
Finland Finland 6.48 +2.11% 77
Fiji Fiji 5.96 +3.89% 114
France France 6.28 -1.68% 92
Faroe Islands Faroe Islands 6.21 -2.02% 98
Micronesia (Federated States of) Micronesia (Federated States of) 4.25 -0.575% 174
Gabon Gabon 5.08 +2.13% 148
United Kingdom United Kingdom 6.06 -1.3% 109
Georgia Georgia 6.31 +0.614% 89
Ghana Ghana 4.66 +2.67% 160
Gibraltar Gibraltar 6.84 -0.901% 52
Guinea Guinea 3.01 +0.786% 213
Gambia Gambia 3.28 +0.684% 206
Guinea-Bissau Guinea-Bissau 4.01 +1.02% 181
Equatorial Guinea Equatorial Guinea 5.22 +1.1% 143
Greece Greece 7.81 +1.1% 18
Grenada Grenada 5.57 +0.277% 131
Greenland Greenland 5.33 +2.74% 140
Guatemala Guatemala 4.33 +3.46% 172
Guam Guam 5.38 -2.75% 135
Guyana Guyana 5.2 -1.42% 145
Hong Kong SAR China Hong Kong SAR China 6.74 -0.704% 59
Honduras Honduras 5.16 +3.18% 146
Croatia Croatia 7.3 +1.23% 40
Haiti Haiti 4.98 +1.77% 152
Hungary Hungary 9.21 -0.263% 4
Indonesia Indonesia 6.75 +0.823% 58
Isle of Man Isle of Man 6.17 -2.09% 101
India India 5.93 +1.31% 115
Ireland Ireland 7.5 +1.17% 29
Iran Iran 7 +3.59% 49
Iraq Iraq 4.47 +0.49% 166
Iceland Iceland 6.29 +0.11% 90
Israel Israel 5.69 -0.635% 125
Italy Italy 7.42 -3.05% 33
Jamaica Jamaica 6.62 +1.39% 65
Jordan Jordan 5.42 +0.6% 132
Japan Japan 7.39 -4% 35
Kazakhstan Kazakhstan 5.75 +0.211% 121
Kenya Kenya 4.18 +1.55% 178
Kyrgyzstan Kyrgyzstan 5.07 +0.63% 150
Cambodia Cambodia 4.79 +6.82% 156
Kiribati Kiribati 4.2 +2.81% 177
St. Kitts & Nevis St. Kitts & Nevis 7.09 -0.63% 45
South Korea South Korea 7.61 -1.86% 22
Kuwait Kuwait 10.1 +2.74% 1
Laos Laos 5.05 +1.96% 151
Lebanon Lebanon 5.22 -0.0861% 142
Liberia Liberia 3.97 +1.94% 183
Libya Libya 7.26 +1.41% 41
St. Lucia St. Lucia 6.97 +0.578% 51
Liechtenstein Liechtenstein 6.64 -2.9% 62
Sri Lanka Sri Lanka 6.52 +3.06% 74
Lesotho Lesotho 3.81 +5.52% 189
Lithuania Lithuania 6.78 -1.01% 56
Luxembourg Luxembourg 7.23 +0.0495% 42
Latvia Latvia 7.01 -0.892% 48
Macao SAR China Macao SAR China 6.18 -8.84% 100
Saint Martin (French part) Saint Martin (French part) 5.65 -0.699% 126
Morocco Morocco 6.12 +1.2% 105
Monaco Monaco 4.13 -1.44% 179
Moldova Moldova 6.53 +1.06% 73
Madagascar Madagascar 3.97 +0.795% 184
Maldives Maldives 6.56 +8.19% 71
Mexico Mexico 5.72 -0.128% 123
Marshall Islands Marshall Islands 5.59 +1.76% 129
North Macedonia North Macedonia 7.06 +1.17% 46
Mali Mali 3.37 +1.78% 204
Malta Malta 7.54 +2.83% 25
Myanmar (Burma) Myanmar (Burma) 6.44 +0.822% 82
Montenegro Montenegro 6.73 +1.55% 60
Mongolia Mongolia 6.02 +0.629% 112
Northern Mariana Islands Northern Mariana Islands 7.49 -2.73% 30
Mozambique Mozambique 2.9 +0.469% 214
Mauritania Mauritania 3.36 +0.149% 205
Mauritius Mauritius 7.53 +4.12% 27
Malawi Malawi 3.62 +4.26% 195
Malaysia Malaysia 6.28 +3.54% 94
Namibia Namibia 4.49 +0.991% 164
New Caledonia New Caledonia 6.49 -2.25% 76
Niger Niger 3.08 +0.704% 210
Nigeria Nigeria 3.93 +1.65% 185
Nicaragua Nicaragua 5.35 +1.34% 138
Netherlands Netherlands 5.79 -1.29% 120
Norway Norway 6.45 -1.68% 80
Nepal Nepal 4.85 +0.794% 153
Nauru Nauru 4.33 +6.29% 171
New Zealand New Zealand 5.86 -1.29% 117
Oman Oman 6.58 +3.36% 69
Pakistan Pakistan 4.07 +1.2% 180
Panama Panama 6.05 -0.245% 110
Peru Peru 6.13 +0.181% 103
Philippines Philippines 5.37 +2.11% 136
Palau Palau 8.45 -0.729% 11
Papua New Guinea Papua New Guinea 4.84 +0.687% 154
Poland Poland 8.1 +2.77% 16
Puerto Rico Puerto Rico 6.5 -0.273% 75
North Korea North Korea 6.28 -4.27% 93
Portugal Portugal 7.74 -1.34% 19
Paraguay Paraguay 5.1 +1.63% 147
Palestinian Territories Palestinian Territories 3.78 +1.94% 190
French Polynesia French Polynesia 6.78 -0.644% 57
Qatar Qatar 8.67 +3.97% 9
Romania Romania 8.35 +0.551% 13
Russia Russia 7.39 +1.93% 36
Rwanda Rwanda 3.72 +7.25% 192
Saudi Arabia Saudi Arabia 7.05 +3.71% 47
Sudan Sudan 3.18 +0.919% 209
Senegal Senegal 3.86 +1.8% 188
Singapore Singapore 6.4 +0.522% 84
Solomon Islands Solomon Islands 4.78 +0.128% 157
Sierra Leone Sierra Leone 3.99 +1.43% 182
El Salvador El Salvador 4.8 +1.34% 155
San Marino San Marino 7.7 -4.09% 20
Somalia Somalia 3.03 +1.24% 212
Serbia Serbia 7.48 +1.29% 31
South Sudan South Sudan 4.65 +0.323% 161
São Tomé & Príncipe São Tomé & Príncipe 4.6 +1.67% 162
Suriname Suriname 5.63 -1.85% 127
Slovakia Slovakia 8.68 +1.36% 7
Slovenia Slovenia 8 +1.51% 17
Sweden Sweden 6.14 -1.42% 102
Eswatini Eswatini 4.4 +4.65% 169
Sint Maarten Sint Maarten 7.61 -2.67% 23
Seychelles Seychelles 7.62 +3.01% 21
Syria Syria 4.75 +0.541% 158
Turks & Caicos Islands Turks & Caicos Islands 9.43 +0.746% 2
Chad Chad 3.22 -0.305% 208
Togo Togo 4.3 +0.889% 173
Thailand Thailand 7.34 -0.273% 37
Tajikistan Tajikistan 4.24 +1.14% 175
Turkmenistan Turkmenistan 5.34 -0.612% 139
Timor-Leste Timor-Leste 3.68 -5.67% 194
Tonga Tonga 4.37 -0.709% 170
Trinidad & Tobago Trinidad & Tobago 7.33 +2.8% 39
Tunisia Tunisia 6.56 +1.05% 70
Turkey Turkey 7.21 +3.09% 43
Tuvalu Tuvalu 4.58 -1.31% 163
Tanzania Tanzania 3.58 +0.024% 197
Uganda Uganda 2.89 +0.568% 215
Ukraine Ukraine 7.52 +2.4% 28
Uruguay Uruguay 6.83 -0.0452% 53
United States United States 6.2 +1.26% 99
Uzbekistan Uzbekistan 5.41 +0.185% 133
St. Vincent & Grenadines St. Vincent & Grenadines 6.61 +0.42% 66
Venezuela Venezuela 6 +0.441% 113
British Virgin Islands British Virgin Islands 8.68 +2.17% 8
U.S. Virgin Islands U.S. Virgin Islands 6.1 -0.954% 106
Vietnam Vietnam 6.6 +1.22% 68
Vanuatu Vanuatu 3.93 -8.03% 186
Samoa Samoa 4.47 -2.73% 167
Kosovo Kosovo 6.25 +0.48% 95
Yemen Yemen 3.7 +2.49% 193
South Africa South Africa 5.69 +3.44% 124
Zambia Zambia 3.92 +2.35% 187
Zimbabwe Zimbabwe 3.55 +7.7% 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.4549.MA.5Y'

# 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.4549.MA.5Y'

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