Rural population growth (annual %)

Source: worldbank.org, 01.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Aruba Aruba -0.149 -53% 105
Afghanistan Afghanistan 2.38 +39.8% 8
Angola Angola 1.13 -2.45% 49
Albania Albania -3.37 -0.774% 200
Andorra Andorra 1.56 -10.3% 30
United Arab Emirates United Arab Emirates 1.79 -13.3% 22
Argentina Argentina -1.21 -2.84% 171
Armenia Armenia 1.78 -387% 23
American Samoa American Samoa -1.98 -2.09% 187
Antigua & Barbuda Antigua & Barbuda 0.48 -9.31% 75
Australia Australia 1.05 -28.2% 52
Austria Austria -0.206 -166% 109
Azerbaijan Azerbaijan -0.515 -38.3% 128
Burundi Burundi 2.14 -6.8% 12
Belgium Belgium -1.2 +13.4% 170
Benin Benin 1.31 -5.73% 39
Burkina Faso Burkina Faso 1.28 -2.83% 41
Bangladesh Bangladesh -0.0652 +29.8% 101
Bulgaria Bulgaria -1.49 -13.9% 176
Bahrain Bahrain -0.558 -126% 135
Bahamas Bahamas -0.392 +17.9% 117
Bosnia & Herzegovina Bosnia & Herzegovina -1.54 +4.61% 177
Belarus Belarus -2.55 -2.59% 190
Belize Belize 1.01 -39.3% 54
Bolivia Bolivia 0.118 -18.6% 93
Brazil Brazil -1.48 -0.994% 174
Barbados Barbados -0.133 -5.36% 103
Brunei Brunei -0.582 -6.63% 139
Bhutan Bhutan -0.524 +7.27% 131
Botswana Botswana -0.688 -2.02% 147
Central African Republic Central African Republic 2.48 +1,215% 7
Canada Canada 2.31 +0.412% 10
Switzerland Switzerland 1.14 +37.6% 48
Chile Chile -0.334 +14.7% 116
China China -2.91 -0.136% 196
Côte d’Ivoire Côte d’Ivoire 1.37 -6.38% 37
Cameroon Cameroon 1.18 -3.09% 46
Congo - Kinshasa Congo - Kinshasa 2.07 -1.8% 14
Congo - Brazzaville Congo - Brazzaville 0.927 -3.72% 57
Colombia Colombia -0.629 +7.07% 141
Comoros Comoros 1.48 -3.81% 34
Cape Verde Cape Verde -0.866 +0.866% 155
Costa Rica Costa Rica -2.71 -3.79% 193
Cuba Cuba -0.963 +6.68% 159
Curaçao Curaçao -0.0234 -101% 99
Cyprus Cyprus 0.696 -11.5% 64
Czechia Czechia -0.567 -152% 137
Germany Germany -1.05 +163% 162
Djibouti Djibouti 0.517 -11.7% 73
Dominica Dominica -1.56 -0.161% 178
Denmark Denmark -0.641 +75.6% 143
Dominican Republic Dominican Republic -2.85 -0.956% 194
Algeria Algeria -0.562 +15.4% 136
Ecuador Ecuador 0.185 -24.1% 88
Egypt Egypt 1.46 +0.021% 35
Eritrea Eritrea 0.72 +11.4% 62
Spain Spain -0.419 +152% 121
Estonia Estonia -0.571 -162% 138
Ethiopia Ethiopia 1.93 -1.77% 18
Finland Finland 0.252 -273% 84
Fiji Fiji -0.666 +2.03% 145
France France -1.14 +0.643% 167
Faroe Islands Faroe Islands 0.129 -77.7% 92
Micronesia (Federated States of) Micronesia (Federated States of) 0.24 -3.51% 85
Gabon Gabon -0.991 -3.38% 160
United Kingdom United Kingdom -0.522 +92.5% 130
Georgia Georgia -2.24 +122% 189
Ghana Ghana 0.352 -10.1% 80
Guinea Guinea 1.7 -5.3% 28
Gambia Gambia 0.551 -3.49% 71
Guinea-Bissau Guinea-Bissau 1.42 -3.39% 36
Equatorial Guinea Equatorial Guinea 0.724 +1.75% 61
Greece Greece -1.78 -7.2% 183
Grenada Grenada -0.224 +40.1% 111
Greenland Greenland -1.79 +29.1% 184
Guatemala Guatemala 0.59 -5.28% 69
Guam Guam -0.786 +5.81% 152
Guyana Guyana 0.36 -5.47% 79
Honduras Honduras 0.15 -20.4% 90
Croatia Croatia -0.726 -3.31% 150
Haiti Haiti -0.889 -0.675% 156
Hungary Hungary -1.48 +15.8% 175
Indonesia Indonesia -0.723 +5.51% 149
Isle of Man Isle of Man -0.494 +19.7% 126
India India 0.0971 -14.1% 94
Ireland Ireland 0.529 -47.6% 72
Iran Iran -0.905 +19.9% 157
Iraq Iraq 1.23 -11.9% 43
Iceland Iceland 1.94 -7.05% 17
Israel Israel -0.0307 -102% 100
Italy Italy -1.16 +0.169% 169
Jamaica Jamaica -0.927 +10.1% 158
Jordan Jordan -1.37 +76.2% 173
Japan Japan -1.59 -0.0852% 179
Kazakhstan Kazakhstan 0.784 -22.6% 58
Kenya Kenya 1.2 -3.72% 44
Kyrgyzstan Kyrgyzstan 1.15 -5.68% 47
Cambodia Cambodia 0.599 -10.9% 68
Kiribati Kiribati -0.148 +73.1% 104
St. Kitts & Nevis St. Kitts & Nevis 0 -100% 98
South Korea South Korea -0.152 +93.5% 106
Laos Laos 0.285 -15.4% 82
Lebanon Lebanon -1.07 -1.98% 163
Liberia Liberia 1.05 -6.71% 51
Libya Libya -0.624 +21.7% 140
St. Lucia St. Lucia 0.0904 -30.8% 95
Liechtenstein Liechtenstein 0.761 -5.51% 59
Sri Lanka Sri Lanka -0.805 -8.57% 154
Lesotho Lesotho 0.421 -1.4% 77
Lithuania Lithuania -0.204 -130% 107
Luxembourg Luxembourg -0.722 +66.2% 148
Latvia Latvia -1.26 +143% 172
Morocco Morocco -0.535 +13.4% 133
Moldova Moldova -3.23 +0.989% 199
Madagascar Madagascar 1.29 -3.1% 40
Maldives Maldives -0.412 +6.34% 120
Mexico Mexico -0.671 +3.72% 146
Marshall Islands Marshall Islands -4.97 +3.45% 204
North Macedonia North Macedonia -2.93 +167% 197
Mali Mali 1.55 -2.47% 32
Malta Malta 2.54 -5.6% 6
Myanmar (Burma) Myanmar (Burma) 0.146 -26.4% 91
Montenegro Montenegro -1.03 -4.36% 161
Mongolia Mongolia 0.681 -20.6% 65
Northern Mariana Islands Northern Mariana Islands -3.12 -2.95% 198
Mozambique Mozambique 1.98 -2.64% 16
Mauritania Mauritania 1.07 -6.56% 50
Mauritius Mauritius -0.252 +17.8% 112
Malawi Malawi 2.19 -0.835% 11
Malaysia Malaysia -1.08 -1.16% 164
Namibia Namibia 0.202 -57% 86
New Caledonia New Caledonia -0.478 -0.834% 124
Niger Niger 3.07 -1.16% 4
Nigeria Nigeria 0.436 -2.21% 76
Nicaragua Nicaragua 0.582 -9.74% 70
Netherlands Netherlands -3.45 +7.19% 201
Norway Norway -1.09 +19.8% 166
Nepal Nepal -0.741 +14.6% 151
New Zealand New Zealand 0.949 -44% 56
Oman Oman -0.795 -174% 153
Pakistan Pakistan 0.984 -6.43% 55
Panama Panama 0.0254 -74.5% 97
Peru Peru 0.0589 -34.2% 96
Philippines Philippines 0.191 -9.92% 87
Palau Palau -2.66 -0.912% 192
Papua New Guinea Papua New Guinea 1.6 -2.87% 29
Poland Poland -0.644 +11.7% 144
Puerto Rico Puerto Rico -0.488 -44.9% 125
North Korea North Korea -0.514 +17.3% 127
Portugal Portugal -0.464 +82.9% 122
Paraguay Paraguay 0.307 -8.49% 81
Palestinian Territories Palestinian Territories 1.04 -6.15% 53
French Polynesia French Polynesia -0.106 +116% 102
Qatar Qatar 2.08 -138% 13
Romania Romania -0.408 +18.2% 119
Russia Russia -1.09 -2.32% 165
Rwanda Rwanda 1.91 -3.98% 19
Saudi Arabia Saudi Arabia 3.15 -0.899% 3
Sudan Sudan 0.162 -77.5% 89
Senegal Senegal 1.32 -6.53% 38
Solomon Islands Solomon Islands 1.76 -1.47% 25
Sierra Leone Sierra Leone 1.26 -7.2% 42
El Salvador El Salvador -2.03 -0.85% 188
San Marino San Marino -4.18 -5.1% 203
Somalia Somalia 2.33 +19.8% 9
Serbia Serbia -1.15 -2.63% 168
South Sudan South Sudan 3.46 -5.53% 2
São Tomé & Príncipe São Tomé & Príncipe -0.632 -10.3% 142
Suriname Suriname 0.514 -15.1% 74
Slovakia Slovakia -0.402 +15.3% 118
Slovenia Slovenia -0.524 +42.3% 132
Sweden Sweden -1.82 +7.96% 185
Eswatini Eswatini 0.699 +5.55% 63
Seychelles Seychelles 0.279 -125% 83
Syria Syria 2.97 -13.5% 5
Turks & Caicos Islands Turks & Caicos Islands -2.55 -3.15% 191
Chad Chad 4.52 +8.23% 1
Togo Togo 1.2 -8.5% 45
Thailand Thailand -1.59 +0.685% 180
Tajikistan Tajikistan 1.51 -8.15% 33
Turkmenistan Turkmenistan 0.611 -17.3% 66
Timor-Leste Timor-Leste 0.601 +14.5% 67
Tonga Tonga -0.469 -0.324% 123
Trinidad & Tobago Trinidad & Tobago -0.204 +133% 108
Tunisia Tunisia -0.521 +16.5% 129
Turkey Turkey -1.7 +11.1% 182
Tuvalu Tuvalu -3.81 -1.63% 202
Tanzania Tanzania 1.71 -2.39% 27
Uganda Uganda 1.91 -3.17% 20
Ukraine Ukraine -0.297 -96.7% 113
Uruguay Uruguay -1.98 -2.43% 186
United States United States -0.331 -25% 115
Uzbekistan Uzbekistan 1.78 -5.69% 24
St. Vincent & Grenadines St. Vincent & Grenadines -1.64 +0.184% 181
Venezuela Venezuela -0.212 +2.52% 110
British Virgin Islands British Virgin Islands 0.392 -56.3% 78
U.S. Virgin Islands U.S. Virgin Islands -2.87 +1.09% 195
Vietnam Vietnam -0.557 +11.1% 134
Vanuatu Vanuatu 2.04 -3.18% 15
Samoa Samoa 0.73 -6.4% 60
Yemen Yemen 1.9 -2.27% 21
South Africa South Africa -0.299 +40.7% 114
Zambia Zambia 1.73 -0.179% 26
Zimbabwe Zimbabwe 1.55 +3.81% 31

The indicator of rural population growth (annual %) is a crucial metric that provides insight into demographic trends in rural areas across the globe. It reflects the annual percentage increase or decrease in population in these regions, allowing us to understand not only population dynamics but also the socio-economic conditions that influence them. Evaluating this metric helps reveal underlying issues such as rural-urban migration, agricultural development, and the effectiveness of rural policies aimed at improving living conditions.

The importance of monitoring rural population growth cannot be understated. As populations shift from rural areas to cities, countries face significant challenges, including urban overcrowding, strained infrastructure, and the risk of losing agricultural productivity. Rural areas often serve as the backbone of food production, and a decline in rural populations can lead to a decrease in agricultural output, exacerbating food insecurity. Furthermore, understanding these trends aids policymakers and development agencies in fostering sustainable rural development, by addressing issues such as job creation, health care access, and education.

The growth or decline of rural populations is interlinked with several other indicators, including overall population growth, urbanization rates, agricultural productivity, employment rates, and economic development indices. For instance, a high rate of urbanization often correlates with declining rural populations, as people migrate to cities in search of better employment opportunities. Similarly, areas experiencing agricultural growth may retain or attract populations to rural regions, creating a positive feedback loop between economic development and population stability.

Several factors affect rural population growth. Economic opportunities play a decisive role; in regions where agriculture or industries flourish, populations tend to stabilize or grow. Conversely, in areas where there are limited job prospects and underdeveloped infrastructure, residents may leave for urban centers. Additionally, social factors, such as the availability of healthcare and education, directly impact rural living conditions. If these services are inadequate, families may decide to migrate to urban areas where they can access better resources for their children.

Furthermore, environmental factors such as climate change can significantly disrupt rural populations. Extreme weather events, droughts, and changing agricultural conditions can lead to decreased agricultural output, prompting individuals to seek better living conditions elsewhere. Additionally, governmental policies, such as land reforms or investment in rural infrastructure, can either support or hinder population growth in these areas.

To address the challenges associated with declining rural populations, strategic interventions are required. Initiatives to enhance economic opportunities in rural areas, such as investing in infrastructure improvements, providing access to markets, and promoting agribusiness development, are crucial. It is essential to implement programs that enhance education and healthcare services to improve the quality of life in rural regions, making them more attractive to residents. Furthermore, fostering community engagement and encouraging the participation of local populations in decision-making processes can ensure that development policies are responsive to their needs.

While various strategies can be created to address rural population growth, it is essential to acknowledge potential flaws in existing systems. In many regions, development assistance may be inadequately tailored to local contexts, resulting in a mismatch between initiatives and the actual needs of rural communities. Mismanagement and corruption can also hinder effective implementation of programs, diverting valuable resources away from their intended purpose. Additionally, climate change remains an unpredictable and challenging factor that may undermine planned strategies, requiring adaptive policies and resilience-building efforts at all levels of governance.

The data for 2023 shows a median value of rural population growth at -0.05%. This figure indicates a continuing trend of decline across many regions, with various socio-economic influences at play. For instance, the top five areas showing positive growth include Chad (4.17%), South Sudan (3.67%), Syria (3.43%), Niger (3.1%), and Malta (2.62%). These countries often have unique circumstances, such as ongoing conflicts, which may drive displacement into rural regions amidst instability. These nations' challenges highlight the complex interplay between conflict, migration, and rural demographic trends.

Conversely, the bottom five areas with significant negative growth—Ukraine (-9.01%), Qatar (-5.47%), Marshall Islands (-4.81%), Bulgaria (-4.45%), and San Marino (-4.4%)—illustrate the impact of various factors, including war, economic issues, and migration patterns. In Ukraine, for example, ongoing conflict has resulted in substantial rural depopulation as individuals flee for safety and better opportunities elsewhere. Qatar, with its developed economy, shows a pattern where urbanization outpaces rural retention due to job availability in urban centers. Similarly, countries like Bulgaria and San Marino face challenges related to aging populations, leading to an outflow of younger individuals seeking employment abroad.

Overall, the global trajectory of rural population growth remains complex and multifaceted. The relationship between rural development, social services, economic opportunities, and demographic shifts must be carefully analyzed to develop effective solutions aimed at sustaining rural communities. As trends illustrate both challenges and opportunities, targeted efforts and comprehensive strategies can help facilitate growth and retention of populations in rural areas, ultimately contributing to balanced and sustainable development.

                    
# 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.RUR.TOTL.ZG'

# 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.RUR.TOTL.ZG'

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