Forest area (sq. km)

Source: worldbank.org, 01.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Aruba Aruba 4.2 0% 201
Afghanistan Afghanistan 12,084 0% 118
Angola Angola 654,973 -0.84% 11
Albania Albania 7,889 0% 131
Andorra Andorra 160 0% 180
United Arab Emirates United Arab Emirates 3,173 0% 149
Argentina Argentina 283,552 -0.381% 20
Armenia Armenia 3,281 -0.064% 148
American Samoa American Samoa 171 -0.175% 179
Antigua & Barbuda Antigua & Barbuda 79.9 -0.772% 187
Australia Australia 1,340,051 0% 6
Austria Austria 38,955 +0.0722% 79
Azerbaijan Azerbaijan 11,548 +1.01% 120
Burundi Burundi 2,796 0% 151
Belgium Belgium 6,893 0% 133
Benin Benin 30,352 -1.62% 91
Burkina Faso Burkina Faso 61,164 -0.811% 68
Bangladesh Bangladesh 18,834 0% 113
Bulgaria Bulgaria 39,190 +0.333% 77
Bahrain Bahrain 7.4 +2.78% 199
Bahamas Bahamas 5,099 0% 139
Bosnia & Herzegovina Bosnia & Herzegovina 21,879 0% 103
Belarus Belarus 87,966 +0.165% 57
Belize Belize 12,547 -0.882% 116
Bermuda Bermuda 10 0% 197
Bolivia Bolivia 504,164 -0.404% 14
Brazil Brazil 4,941,960 -0.241% 2
Barbados Barbados 63 0% 189
Brunei Brunei 3,800 0% 145
Bhutan Bhutan 27,290 +0.0726% 93
Botswana Botswana 150,181 -0.782% 44
Central African Republic Central African Republic 222,430 -0.135% 27
Canada Canada 3,468,541 -0.0107% 3
Switzerland Switzerland 12,760 +0.27% 115
Chile Chile 184,565 +0.67% 34
China China 2,237,373 +0.847% 5
Côte d’Ivoire Côte d’Ivoire 26,109 -4.14% 96
Cameroon Cameroon 202,285 -0.276% 30
Congo - Kinshasa Congo - Kinshasa 1,239,525 -0.881% 7
Congo - Brazzaville Congo - Brazzaville 219,160 -0.0684% 28
Colombia Colombia 587,433 -0.338% 13
Comoros Comoros 320 -1.35% 172
Cape Verde Cape Verde 463 +0.652% 166
Costa Rica Costa Rica 30,676 +0.537% 90
Cuba Cuba 32,420 0% 87
Curaçao Curaçao 0.7 0% 205
Cayman Islands Cayman Islands 126 -0.158% 182
Cyprus Cyprus 1,725 -0.0116% 156
Czechia Czechia 26,807 +0.0676% 95
Germany Germany 114,190 0% 51
Djibouti Djibouti 59.6 +1.55% 191
Dominica Dominica 479 0% 165
Denmark Denmark 6,303 +0.149% 134
Dominican Republic Dominican Republic 21,603 +0.376% 104
Algeria Algeria 19,681 +0.499% 109
Ecuador Ecuador 123,693 -0.517% 49
Egypt Egypt 450 0% 167
Eritrea Eritrea 10,489 -0.3% 123
Spain Spain 185,808 +0.0231% 33
Estonia Estonia 24,384 0% 99
Ethiopia Ethiopia 169,225 -0.43% 40
Finland Finland 224,090 0% 26
Fiji Fiji 11,534 +0.583% 121
France France 174,198 +0.481% 37
Faroe Islands Faroe Islands 0.8 0% 204
Micronesia (Federated States of) Micronesia (Federated States of) 645 +0.0465% 162
Gabon Gabon 235,068 -0.0505% 24
United Kingdom United Kingdom 32,069 +0.257% 89
Georgia Georgia 28,224 0% 92
Ghana Ghana 80,002 +0.0904% 58
Guinea Guinea 61,090 -0.651% 69
Gambia Gambia 2,312 -2.42% 153
Guinea-Bissau Guinea-Bissau 19,631 -0.428% 110
Equatorial Guinea Equatorial Guinea 24,317 -0.343% 100
Greece Greece 39,018 0% 78
Grenada Grenada 177 0% 178
Greenland Greenland 2.2 0% 203
Guatemala Guatemala 35,046 -0.33% 84
Guam Guam 280 0% 174
Guyana Guyana 183,969 -0.05% 35
Honduras Honduras 63,174 -0.331% 66
Croatia Croatia 19,441 +0.129% 111
Haiti Haiti 3,411 -0.904% 147
Hungary Hungary 20,501 -0.0711% 108
Indonesia Indonesia 909,221 -0.662% 8
Isle of Man Isle of Man 34.6 0% 193
India India 726,928 +0.368% 9
Ireland Ireland 7,900 +0.509% 130
Iran Iran 107,758 +0.0946% 52
Iraq Iraq 8,250 0% 129
Iceland Iceland 527 +1.27% 163
Italy Italy 96,738 +0.559% 55
Jamaica Jamaica 6,047 +0.647% 135
Jordan Jordan 975 0% 160
Japan Japan 249,350 0% 23
Kazakhstan Kazakhstan 35,132 +0.839% 83
Kenya Kenya 36,111 0% 82
Kyrgyzstan Kyrgyzstan 13,519 +1.37% 114
Cambodia Cambodia 77,570 -1.97% 60
Kiribati Kiribati 11.8 0% 196
St. Kitts & Nevis St. Kitts & Nevis 110 0% 183
South Korea South Korea 62,670 -0.159% 67
Kuwait Kuwait 62.5 0% 190
Laos Laos 165,265 -0.208% 41
Lebanon Lebanon 1,445 +0.417% 159
Liberia Liberia 75,569 -0.399% 61
Libya Libya 2,170 0% 155
St. Lucia St. Lucia 208 0% 176
Liechtenstein Liechtenstein 67 0% 188
Sri Lanka Sri Lanka 21,067 -0.15% 106
Lesotho Lesotho 345 0% 170
Lithuania Lithuania 22,039 +0.0555% 102
Luxembourg Luxembourg 887 0% 161
Latvia Latvia 34,185 +0.113% 85
Saint Martin (French part) Saint Martin (French part) 12.4 0% 195
Morocco Morocco 57,634 +0.181% 73
Monaco Monaco 0 206
Moldova Moldova 3,865 0% 144
Madagascar Madagascar 124,034 -0.106% 48
Maldives Maldives 8.2 0% 198
Mexico Mexico 654,365 -0.195% 12
Marshall Islands Marshall Islands 94 0% 185
North Macedonia North Macedonia 10,015 0% 124
Mali Mali 132,960 0% 47
Malta Malta 4.6 0% 200
Myanmar (Burma) Myanmar (Burma) 279,645 -1.03% 22
Montenegro Montenegro 8,270 0% 128
Mongolia Mongolia 141,706 -0.00783% 46
Northern Mariana Islands Northern Mariana Islands 244 0% 175
Mozambique Mozambique 362,673 -0.631% 18
Mauritania Mauritania 3,019 -1.78% 150
Mauritius Mauritius 389 +0.103% 169
Malawi Malawi 21,577 -1.91% 105
Malaysia Malaysia 190,137 -0.263% 32
Namibia Namibia 64,969 -1.08% 65
New Caledonia New Caledonia 8,378 -0.0119% 127
Niger Niger 10,549 -1.16% 122
Nigeria Nigeria 213,004 -0.761% 29
Nicaragua Nicaragua 32,075 -3.02% 88
Netherlands Netherlands 3,714 +0.252% 146
Norway Norway 121,956 +0.064% 50
Nepal Nepal 59,620 0% 71
Nauru Nauru 0 206
New Zealand New Zealand 99,319 +0.236% 53
Oman Oman 24.1 -0.912% 194
Pakistan Pakistan 36,432 -1.12% 81
Panama Panama 41,910 -0.272% 74
Peru Peru 719,847 -0.24% 10
Philippines Philippines 72,584 +0.483% 62
Palau Palau 416 +0.193% 168
Papua New Guinea Papua New Guinea 357,887 -0.0936% 19
Poland Poland 95,070 +0.126% 56
Puerto Rico Puerto Rico 4,973 +0.0986% 141
North Korea North Korea 59,876 -0.353% 70
Portugal Portugal 33,120 0% 86
Paraguay Paraguay 155,436 -1.77% 42
French Polynesia French Polynesia 1,495 0% 158
Qatar Qatar 0 206
Romania Romania 69,291 0% 64
Russia Russia 8,153,116 0% 1
Rwanda Rwanda 2,780 +0.361% 152
Saudi Arabia Saudi Arabia 9,770 0% 125
Sudan Sudan 180,152 -0.947% 36
Senegal Senegal 79,882 -0.498% 59
Singapore Singapore 152 -1.17% 181
Solomon Islands Solomon Islands 25,215 -0.0289% 97
Sierra Leone Sierra Leone 24,954 -0.784% 98
El Salvador El Salvador 5,749 -0.777% 136
San Marino San Marino 10 0% 197
Somalia Somalia 58,265 -1.3% 72
Serbia Serbia 27,233 +0.0141% 94
South Sudan South Sudan 71,570 0% 63
São Tomé & Príncipe São Tomé & Príncipe 507 -1.21% 164
Suriname Suriname 151,718 -0.0806% 43
Slovakia Slovakia 19,259 0% 112
Slovenia Slovenia 12,338 -0.164% 117
Sweden Sweden 279,800 0% 21
Eswatini Eswatini 5,000 +0.243% 140
Sint Maarten Sint Maarten 3.7 0% 202
Seychelles Seychelles 337 0% 171
Syria Syria 5,221 0% 138
Turks & Caicos Islands Turks & Caicos Islands 105 0% 184
Chad Chad 40,914 -2.62% 76
Togo Togo 12,034 -0.245% 119
Thailand Thailand 198,010 -0.181% 31
Tajikistan Tajikistan 4,258 +0.235% 143
Turkmenistan Turkmenistan 41,270 0% 75
Timor-Leste Timor-Leste 9,183 -0.152% 126
Tonga Tonga 89.5 0% 186
Trinidad & Tobago Trinidad & Tobago 2,274 -0.184% 154
Tunisia Tunisia 7,058 +0.217% 132
Turkey Turkey 225,324 +0.697% 25
Tuvalu Tuvalu 10 0% 197
Tanzania Tanzania 448,070 -1.04% 16
Uganda Uganda 22,554 -1.8% 101
Ukraine Ukraine 97,020 +0.0619% 54
Uruguay Uruguay 20,730 +1.02% 107
United States United States 3,097,950 0% 4
Uzbekistan Uzbekistan 37,413 +0.695% 80
St. Vincent & Grenadines St. Vincent & Grenadines 285 0% 173
Venezuela Venezuela 461,268 -0.101% 15
British Virgin Islands British Virgin Islands 36.2 0% 192
U.S. Virgin Islands U.S. Virgin Islands 202 +0.748% 177
Vietnam Vietnam 147,949 +0.516% 45
Vanuatu Vanuatu 4,423 0% 142
Samoa Samoa 1,607 -0.298% 157
Yemen Yemen 5,490 0% 137
South Africa South Africa 169,773 -0.214% 39
Zambia Zambia 444,376 -0.422% 17
Zimbabwe Zimbabwe 173,524 -0.265% 38

                    
# 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 = 'AG.LND.FRST.K2'

# 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 <- 'AG.LND.FRST.K2'

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