Population ages 0-14 (% of total population)

Source: worldbank.org, 01.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba 16.8 -1.98% 158
Afghanistan Afghanistan 42.9 -0.784% 11
Angola Angola 44.4 -0.497% 9
Albania Albania 16.8 -1.18% 159
Andorra Andorra 11.9 -2.96% 211
United Arab Emirates United Arab Emirates 16.1 -1.4% 166
Argentina Argentina 21.6 -2.64% 114
Armenia Armenia 19.2 -1.58% 131
American Samoa American Samoa 27 -1.83% 87
Antigua & Barbuda Antigua & Barbuda 17.8 -2.29% 147
Australia Australia 17.8 -1.05% 146
Austria Austria 14.2 -0.522% 196
Azerbaijan Azerbaijan 21.8 -2.38% 112
Burundi Burundi 44.7 -1.47% 7
Belgium Belgium 16 -1.81% 170
Benin Benin 41.6 -0.678% 15
Burkina Faso Burkina Faso 41.8 -1.41% 14
Bangladesh Bangladesh 28 -1.31% 82
Bulgaria Bulgaria 14.5 -0.438% 192
Bahrain Bahrain 18.7 -1.45% 135
Bahamas Bahamas 17.9 -2.27% 144
Bosnia & Herzegovina Bosnia & Herzegovina 13 -1.38% 205
Belarus Belarus 16.3 -2.27% 163
Belize Belize 26.6 -1.53% 89
Bermuda Bermuda 13.6 -1.96% 202
Bolivia Bolivia 29.8 -1.18% 74
Brazil Brazil 19.7 -1.36% 128
Barbados Barbados 17.2 -1.4% 154
Brunei Brunei 20.8 -0.947% 120
Bhutan Bhutan 20.9 -2.57% 119
Botswana Botswana 32.1 -0.47% 62
Central African Republic Central African Republic 49 -0.332% 1
Canada Canada 15.1 -1.26% 180
Switzerland Switzerland 15 -0.401% 183
Chile Chile 17 -2.41% 157
China China 16 -3.51% 169
Côte d’Ivoire Côte d’Ivoire 40.9 -0.981% 22
Cameroon Cameroon 41.4 -0.762% 17
Congo - Kinshasa Congo - Kinshasa 46 -0.12% 6
Congo - Brazzaville Congo - Brazzaville 40.4 -1.07% 25
Colombia Colombia 20.3 -1.58% 124
Comoros Comoros 37.1 -0.749% 43
Cape Verde Cape Verde 25.5 -3.12% 95
Costa Rica Costa Rica 18.8 -2.75% 134
Cuba Cuba 15.3 -1.42% 178
Curaçao Curaçao 14.9 -2.06% 184
Cayman Islands Cayman Islands 16.2 -0.654% 165
Cyprus Cyprus 16.1 +0.114% 167
Czechia Czechia 15.4 -1.76% 177
Germany Germany 13.9 -0.0389% 199
Djibouti Djibouti 29.2 -1.37% 76
Dominica Dominica 17.9 -1.31% 145
Denmark Denmark 15.7 -1.07% 174
Dominican Republic Dominican Republic 26.6 -1.25% 88
Algeria Algeria 30.3 -1.01% 71
Ecuador Ecuador 24.5 -2.19% 103
Egypt Egypt 32 -1.36% 63
Eritrea Eritrea 38.1 -1.4% 36
Spain Spain 12.9 -2.54% 207
Estonia Estonia 15.6 -2.07% 175
Ethiopia Ethiopia 39.1 -0.777% 30
Finland Finland 14.6 -2.02% 190
Fiji Fiji 27.1 -1.07% 86
France France 16.5 -1.67% 161
Faroe Islands Faroe Islands 20 -0.947% 125
Micronesia (Federated States of) Micronesia (Federated States of) 31.8 -0.875% 64
Gabon Gabon 36.5 -0.485% 49
United Kingdom United Kingdom 17.2 -1.29% 155
Georgia Georgia 20.8 -1.15% 122
Ghana Ghana 35.8 -0.997% 51
Gibraltar Gibraltar 17.6 -0.818% 150
Guinea Guinea 40.9 -0.829% 20
Gambia Gambia 40.2 -1.19% 26
Guinea-Bissau Guinea-Bissau 38.8 -1.16% 32
Equatorial Guinea Equatorial Guinea 37.3 -0.531% 42
Greece Greece 13.2 -2.7% 204
Grenada Grenada 19.4 -2.04% 130
Greenland Greenland 20.8 +0.00229% 121
Guatemala Guatemala 31.6 -1.74% 65
Guam Guam 26 -0.142% 91
Guyana Guyana 29.2 -0.555% 78
Hong Kong SAR China Hong Kong SAR China 10.5 -1.79% 216
Honduras Honduras 30.6 -1.21% 70
Croatia Croatia 13.9 -1.52% 198
Haiti Haiti 31.2 -1.21% 67
Hungary Hungary 14.4 -0.58% 193
Indonesia Indonesia 24.6 -1.35% 101
Isle of Man Isle of Man 14.2 -2.06% 197
India India 24.6 -1.73% 100
Ireland Ireland 18.6 -2.43% 137
Iran Iran 22.4 -1.74% 109
Iraq Iraq 36.6 -1.38% 48
Iceland Iceland 17.8 -1.62% 148
Israel Israel 27.4 -0.744% 85
Italy Italy 11.9 -2.08% 210
Jamaica Jamaica 18.7 -2.26% 136
Jordan Jordan 30.7 -1.79% 69
Japan Japan 11.4 -1.83% 214
Kazakhstan Kazakhstan 29.4 -0.561% 75
Kenya Kenya 36.8 -1.63% 46
Kyrgyzstan Kyrgyzstan 32.3 -1.01% 60
Cambodia Cambodia 29.8 -1.05% 73
Kiribati Kiribati 34.7 -0.673% 53
St. Kitts & Nevis St. Kitts & Nevis 18.2 -0.793% 141
South Korea South Korea 10.6 -3.67% 215
Kuwait Kuwait 18.2 -2.06% 140
Laos Laos 30.2 -1.18% 72
Lebanon Lebanon 26.2 -1.98% 90
Liberia Liberia 39.5 -1.17% 27
Libya Libya 27.4 -1.96% 84
St. Lucia St. Lucia 17.5 -1.86% 151
Liechtenstein Liechtenstein 14.3 -0.586% 195
Sri Lanka Sri Lanka 22 -1.48% 110
Lesotho Lesotho 34.5 -1.16% 54
Lithuania Lithuania 14.7 -1.22% 189
Luxembourg Luxembourg 15.8 -0.27% 171
Latvia Latvia 15.4 -1.78% 176
Macao SAR China Macao SAR China 13.9 -1.31% 200
Saint Martin (French part) Saint Martin (French part) 21.3 +0.974% 116
Morocco Morocco 25.6 -1.55% 94
Monaco Monaco 13.5 +2.23% 203
Moldova Moldova 19.8 -1.02% 127
Madagascar Madagascar 39.3 -0.797% 29
Maldives Maldives 19.6 -2.28% 129
Mexico Mexico 24.5 -1.64% 102
Marshall Islands Marshall Islands 34.5 -0.665% 55
North Macedonia North Macedonia 16.8 -1.44% 160
Mali Mali 46.1 -0.684% 4
Malta Malta 13 -0.923% 206
Myanmar (Burma) Myanmar (Burma) 24.3 -0.878% 104
Montenegro Montenegro 18.1 -1.12% 142
Mongolia Mongolia 32.2 -1.36% 61
Northern Mariana Islands Northern Mariana Islands 22 -2.59% 111
Mozambique Mozambique 44.5 -0.616% 8
Mauritania Mauritania 42.7 -0.755% 12
Mauritius Mauritius 14.8 -2.07% 185
Malawi Malawi 40.7 -1.48% 23
Malaysia Malaysia 21.8 -2.25% 113
Namibia Namibia 37 -0.838% 44
New Caledonia New Caledonia 21.3 -1.02% 117
Niger Niger 46.6 -0.777% 2
Nigeria Nigeria 41 -1.15% 19
Nicaragua Nicaragua 28.8 -1.52% 79
Netherlands Netherlands 15 -0.96% 182
Norway Norway 16.2 -1.93% 164
Nepal Nepal 28.4 -0.991% 81
Nauru Nauru 37.8 -1.06% 40
New Zealand New Zealand 18.1 -1.39% 143
Oman Oman 24.7 -2.03% 99
Pakistan Pakistan 36.7 -0.953% 47
Panama Panama 24.9 -1.51% 97
Peru Peru 24 -1.59% 106
Philippines Philippines 27.9 -2.58% 83
Palau Palau 18.2 -1.6% 139
Papua New Guinea Papua New Guinea 33.5 -0.961% 57
Poland Poland 14.8 -1.93% 186
Puerto Rico Puerto Rico 11.6 -3.13% 213
North Korea North Korea 18.9 -0.177% 133
Portugal Portugal 12.8 -0.715% 208
Paraguay Paraguay 28.6 -0.671% 80
Palestinian Territories Palestinian Territories 38 -0.842% 38
French Polynesia French Polynesia 19.1 -3.2% 132
Qatar Qatar 15.1 -0.593% 181
Romania Romania 15.7 -1.01% 173
Russia Russia 17.3 -1.35% 153
Rwanda Rwanda 37.4 -0.982% 41
Saudi Arabia Saudi Arabia 23.8 -1.16% 107
Sudan Sudan 40.5 -0.438% 24
Senegal Senegal 38.2 -1.16% 35
Singapore Singapore 11.7 -0.86% 212
Solomon Islands Solomon Islands 37 -1.05% 45
Sierra Leone Sierra Leone 38.1 -1.15% 37
El Salvador El Salvador 24.8 -1.6% 98
San Marino San Marino 12.3 -3.45% 209
Somalia Somalia 46.6 -0.183% 3
Serbia Serbia 14.3 -0.274% 194
South Sudan South Sudan 38.9 -2.34% 31
São Tomé & Príncipe São Tomé & Príncipe 37.8 -1.18% 39
Suriname Suriname 25.6 -1.18% 93
Slovakia Slovakia 15.8 -0.918% 172
Slovenia Slovenia 14.7 -1.44% 188
Sweden Sweden 17 -1.53% 156
Eswatini Eswatini 33.4 -0.941% 58
Sint Maarten Sint Maarten 15.1 -2.73% 179
Seychelles Seychelles 20 -0.937% 126
Syria Syria 29.2 -3.86% 77
Turks & Caicos Islands Turks & Caicos Islands 16.1 -0.909% 168
Chad Chad 46.1 -1.44% 5
Togo Togo 39.5 -0.894% 28
Thailand Thailand 14.7 -2.25% 187
Tajikistan Tajikistan 36.3 -0.671% 50
Turkmenistan Turkmenistan 31.5 -0.517% 66
Timor-Leste Timor-Leste 33.7 -1.67% 56
Tonga Tonga 35.4 -0.619% 52
Trinidad & Tobago Trinidad & Tobago 17.8 -1.48% 149
Tunisia Tunisia 24 -1.62% 105
Turkey Turkey 21.4 -1.79% 115
Tuvalu Tuvalu 32.9 +1.06% 59
Tanzania Tanzania 42.5 -0.44% 13
Uganda Uganda 43.5 -0.899% 10
Ukraine Ukraine 13.9 -2.85% 201
Uruguay Uruguay 18.3 -2.1% 138
United States United States 17.3 -1.53% 152
Uzbekistan Uzbekistan 31.1 +0.753% 68
St. Vincent & Grenadines St. Vincent & Grenadines 21.3 -1.64% 118
Venezuela Venezuela 25.5 -2.4% 96
British Virgin Islands British Virgin Islands 14.5 -4.28% 191
U.S. Virgin Islands U.S. Virgin Islands 16.5 -0.136% 162
Vietnam Vietnam 23.2 -1.62% 108
Vanuatu Vanuatu 38.3 -0.775% 34
Samoa Samoa 38.5 -0.681% 33
Kosovo Kosovo 20.7 -2.74% 123
Yemen Yemen 41.1 -0.237% 18
South Africa South Africa 25.9 -0.771% 92
Zambia Zambia 41.5 -1.19% 16
Zimbabwe Zimbabwe 40.9 -1.09% 21

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