Terrestrial and marine protected areas (% of total territorial area)

Source: worldbank.org, 01.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba 0.1 0% 146
Afghanistan Afghanistan 3.6 0% 124
Angola Angola 7.7 0% 104
Albania Albania 18 +26.8% 60
Andorra Andorra 27.3 +1.49% 34
United Arab Emirates United Arab Emirates 16.1 +1.26% 68
Argentina Argentina 9.7 +1.04% 95
Armenia Armenia 38.9 +57.5% 13
American Samoa American Samoa 8.7 0% 99
Antigua & Barbuda Antigua & Barbuda 0.8 +100% 140
Australia Australia 33.5 +4.36% 20
Austria Austria 29.6 +0.339% 29
Azerbaijan Azerbaijan 12 +118% 84
Burundi Burundi 7.6 0% 105
Belgium Belgium 18.5 +3.93% 57
Benin Benin 23.5 0% 44
Burkina Faso Burkina Faso 16.5 +0.61% 67
Bangladesh Bangladesh 5.6 -5.08% 111
Bulgaria Bulgaria 35.6 +7.55% 19
Bahrain Bahrain 20.6 +0.488% 52
Bahamas Bahamas 8.3 -3.49% 102
Bosnia & Herzegovina Bosnia & Herzegovina 9.5 +132% 96
Belarus Belarus 9.4 -31.9% 97
Belize Belize 26.8 +27% 36
Bermuda Bermuda 0 147
Bolivia Bolivia 30.9 0% 26
Brazil Brazil 29.4 -0.339% 30
Barbados Barbados 0.1 146
Brunei Brunei 7.5 -16.7% 106
Bhutan Bhutan 51.6 +3.82% 5
Botswana Botswana 29.1 0% 31
Central African Republic Central African Republic 14.8 -18.2% 75
Canada Canada 11.6 +0.87% 87
Switzerland Switzerland 12.5 +3.31% 82
Chile Chile 37.9 0% 16
China China 14.7 0% 76
Côte d’Ivoire Côte d’Ivoire 14.9 0% 74
Cameroon Cameroon 11 0% 91
Congo - Kinshasa Congo - Kinshasa 14.9 +7.97% 74
Congo - Brazzaville Congo - Brazzaville 33.3 0% 21
Colombia Colombia 26.4 +58.1% 37
Comoros Comoros 0.7 0% 141
Cape Verde Cape Verde 0.2 145
Costa Rica Costa Rica 28.2 -2.08% 33
Cuba Cuba 6.9 +2.99% 107
Curaçao Curaçao 0.3 0% 144
Cayman Islands Cayman Islands 0.1 0% 146
Cyprus Cyprus 11.1 -0.893% 90
Czechia Czechia 21.9 -1.35% 49
Germany Germany 40.1 +3.62% 11
Djibouti Djibouti 1.2 0% 137
Dominica Dominica 0.6 0% 142
Denmark Denmark 17.7 -1.12% 62
Dominican Republic Dominican Republic 15.3 -18.2% 72
Algeria Algeria 4.4 0% 119
Ecuador Ecuador 20.1 +0.5% 53
Egypt Egypt 11.5 -0.862% 88
Eritrea Eritrea 0 147
Spain Spain 17.9 0% 61
Estonia Estonia 20.8 +2.97% 51
Ethiopia Ethiopia 17 0% 65
Finland Finland 13.3 +1.53% 79
Fiji Fiji 1 0% 138
France France 36.8 +0.546% 18
Faroe Islands Faroe Islands 0 147
Micronesia (Federated States of) Micronesia (Federated States of) 0 147
Gabon Gabon 24.5 -2.39% 39
United Kingdom United Kingdom 42.1 +5.51% 7
Georgia Georgia 17.4 +105% 63
Ghana Ghana 7.7 0% 104
Gibraltar Gibraltar 0.5 143
Guinea Guinea 26.2 +0.383% 38
Gambia Gambia 2.9 0% 127
Guinea-Bissau Guinea-Bissau 13.2 -1.49% 80
Equatorial Guinea Equatorial Guinea 1.8 0% 132
Greece Greece 11.2 +1.82% 89
Grenada Grenada 0.2 0% 145
Greenland Greenland 22.6 +0.893% 47
Guatemala Guatemala 10.2 +0.99% 92
Guam Guam 0 147
Guyana Guyana 5.1 -1.92% 114
Hong Kong SAR China Hong Kong SAR China 42 +0.239% 8
Honduras Honduras 11.2 +1.82% 89
Croatia Croatia 24.1 +0.837% 42
Haiti Haiti 3 +7.14% 126
Hungary Hungary 22.6 0% 47
Indonesia Indonesia 5.2 -1.89% 113
Isle of Man Isle of Man 4.6 -20.7% 117
India India 4.5 +2.27% 118
Ireland Ireland 4.1 +2.5% 122
Iran Iran 7.7 0% 104
Iraq Iraq 1.5 0% 134
Iceland Iceland 2.9 0% 127
Israel Israel 12.2 +16.2% 83
Italy Italy 14.6 +0.69% 77
Jamaica Jamaica 1.6 0% 133
Jordan Jordan 5.4 +20% 112
Japan Japan 15.1 -0.658% 73
Kazakhstan Kazakhstan 11.9 +1.71% 85
Kenya Kenya 11.8 +14.6% 86
Kyrgyzstan Kyrgyzstan 6.8 +1.49% 108
Cambodia Cambodia 31.8 0% 25
Kiribati Kiribati 11.9 +0.847% 85
St. Kitts & Nevis St. Kitts & Nevis 4.8 +6.67% 115
South Korea South Korea 5.8 -1.69% 109
Kuwait Kuwait 11.5 +0.877% 88
Laos Laos 18.8 -1.05% 56
Lebanon Lebanon 2.9 +263% 127
Liberia Liberia 1.2 0% 137
Libya Libya 0.2 0% 145
St. Lucia St. Lucia 1 +11.1% 138
Liechtenstein Liechtenstein 44.8 +5.16% 6
Sri Lanka Sri Lanka 3.4 0% 125
Lesotho Lesotho 23.4 +9.86% 45
Lithuania Lithuania 18.3 +2.81% 58
Luxembourg Luxembourg 38.7 -30.6% 14
Latvia Latvia 17.9 +2.29% 61
Saint Martin (French part) Saint Martin (French part) 92.3 +0.326% 4
Morocco Morocco 1.4 -12.5% 135
Monaco Monaco 99.5 +0.302% 1
Moldova Moldova 11.5 +0.877% 88
Madagascar Madagascar 5.1 +64.5% 114
Maldives Maldives 0.1 0% 146
Mexico Mexico 19.9 +4.74% 54
Marshall Islands Marshall Islands 0.3 0% 144
North Macedonia North Macedonia 28.2 +83.1% 33
Mali Mali 7.5 0% 106
Malta Malta 8 +5.26% 103
Myanmar (Burma) Myanmar (Burma) 4 +2.56% 123
Montenegro Montenegro 16.1 +75% 68
Mongolia Mongolia 19.8 0% 55
Northern Mariana Islands Northern Mariana Islands 32.4 +0.621% 23
Mozambique Mozambique 18 0% 60
Mauritania Mauritania 1 -9.09% 138
Mauritius Mauritius 0 147
Malawi Malawi 23.1 +0.873% 46
Malaysia Malaysia 8.4 -4.55% 101
Namibia Namibia 24.4 -0.408% 40
New Caledonia New Caledonia 99.4 +3.76% 2
Niger Niger 18.2 0% 59
Nigeria Nigeria 11.6 0% 87
Nicaragua Nicaragua 10.1 +1% 93
Netherlands Netherlands 29.8 +17.8% 28
Norway Norway 5.4 -3.57% 112
Nepal Nepal 23.6 0% 43
Nauru Nauru 0 147
New Zealand New Zealand 30.6 0% 27
Oman Oman 18.3 +976% 58
Pakistan Pakistan 15.3 +56.1% 72
Panama Panama 27.2 -1.81% 35
Peru Peru 16.8 0% 66
Philippines Philippines 3.6 -2.7% 124
Palau Palau 98 -2% 3
Papua New Guinea Papua New Guinea 0.7 0% 141
Poland Poland 38.2 +0.526% 15
Puerto Rico Puerto Rico 2.1 0% 130
North Korea North Korea 1.3 0% 136
Portugal Portugal 17.1 -0.581% 64
Paraguay Paraguay 14.9 +4.2% 74
Palestinian Territories Palestinian Territories 10 0% 94
French Polynesia French Polynesia 0 147
Qatar Qatar 5.8 0% 109
Romania Romania 24.3 -0.41% 41
Russia Russia 8.6 0% 100
Rwanda Rwanda 9.1 0% 98
Saudi Arabia Saudi Arabia 17 +19.7% 65
Sudan Sudan 2.8 0% 128
Senegal Senegal 15.6 +0.645% 70
Singapore Singapore 2.1 -16% 130
Solomon Islands Solomon Islands 0.2 0% 145
Sierra Leone Sierra Leone 5.1 0% 114
El Salvador El Salvador 2.1 0% 130
Somalia Somalia 0 147
Serbia Serbia 13.4 +65.4% 78
South Sudan South Sudan 15.4 -0.645% 71
São Tomé & Príncipe São Tomé & Príncipe 0.2 0% 145
Suriname Suriname 8.6 +1.18% 100
Slovakia Slovakia 37.5 -0.266% 17
Slovenia Slovenia 40.2 +0.249% 10
Sweden Sweden 15.6 +0.645% 70
Eswatini Eswatini 4.2 -2.33% 121
Sint Maarten Sint Maarten 4.8 -41.5% 115
Seychelles Seychelles 32.6 -0.61% 22
Syria Syria 0.7 0% 141
Turks & Caicos Islands Turks & Caicos Islands 0.5 +25% 143
Chad Chad 21 0% 50
Togo Togo 22.3 +0.905% 48
Thailand Thailand 13.4 0% 78
Tajikistan Tajikistan 22.6 +1.35% 47
Turkmenistan Turkmenistan 4.3 +34.4% 120
Timor-Leste Timor-Leste 4.7 -9.62% 116
Tonga Tonga 0.1 0% 146
Trinidad & Tobago Trinidad & Tobago 2 0% 131
Tunisia Tunisia 5.2 0% 113
Turkey Turkey 5.7 0% 110
Tuvalu Tuvalu 0 147
Tanzania Tanzania 32.3 -0.309% 24
Uganda Uganda 16.1 0% 68
Ukraine Ukraine 17.7 +43.9% 62
Uruguay Uruguay 2.4 0% 129
United States United States 15.8 -0.629% 69
Uzbekistan Uzbekistan 9.5 0% 96
St. Vincent & Grenadines St. Vincent & Grenadines 0.5 0% 143
Venezuela Venezuela 39 0% 12
British Virgin Islands British Virgin Islands 0 147
U.S. Virgin Islands U.S. Virgin Islands 0.9 -10% 139
Vietnam Vietnam 2.9 0% 127
Vanuatu Vanuatu 0.1 0% 146
Samoa Samoa 0.3 0% 144
Yemen Yemen 0.7 +16.7% 141
South Africa South Africa 12.8 +0.787% 81
Zambia Zambia 41.3 0% 9
Zimbabwe Zimbabwe 28.3 0% 32

                    
# 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 = 'ER.PTD.TOTL.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 <- 'ER.PTD.TOTL.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))