Political Stability and Absence of Violence/Terrorism

Source: worldbank.org, 07.12.2025

Year: 2023

Flag Country Value Value change, % Rank
Aruba Aruba 1.43 -3.41% 5
Afghanistan Afghanistan -2.48 -2.39% 196
Angola Angola -0.342 -45.8% 131
Albania Albania 0.183 +72.5% 91
Andorra Andorra 1.58 -0.159% 3
United Arab Emirates United Arab Emirates 0.678 -8.96% 54
Argentina Argentina -0.128 +29.3% 111
Armenia Armenia -0.829 +12% 163
American Samoa American Samoa 1.11 -0.797% 14
Antigua & Barbuda Antigua & Barbuda 0.923 -1.57% 34
Australia Australia 0.917 -6.78% 35
Austria Austria 0.728 +12.2% 51
Azerbaijan Azerbaijan -0.731 -20.8% 161
Burundi Burundi -1.17 -1.68% 172
Belgium Belgium 0.404 -30.6% 78
Benin Benin -0.347 +0.978% 132
Burkina Faso Burkina Faso -2.04 +12.1% 187
Bangladesh Bangladesh -0.909 -13.2% 166
Bulgaria Bulgaria 0.342 +9.07% 84
Bahrain Bahrain -0.374 +3.05% 137
Bahamas Bahamas 1.01 +14.4% 25
Bosnia & Herzegovina Bosnia & Herzegovina -0.353 -26.9% 133
Belarus Belarus -0.729 -9.07% 160
Belize Belize 0.585 +3.78% 64
Bermuda Bermuda 1.02 -0.355% 23
Bolivia Bolivia -0.313 +63.2% 125
Brazil Brazil -0.409 +3.43% 139
Barbados Barbados 1.19 +3.71% 12
Brunei Brunei 1.37 +9.94% 7
Bhutan Bhutan 0.983 -2.63% 28
Botswana Botswana 1.04 -3.31% 22
Central African Republic Central African Republic -2.2 -0.0882% 192
Canada Canada 0.822 +5.35% 42
Switzerland Switzerland 1.07 -7.61% 19
Chile Chile 0.136 +3.09% 94
China China -0.513 +13.7% 146
Côte d’Ivoire Côte d’Ivoire -0.632 +7.58% 153
Cameroon Cameroon -1.4 +1.51% 175
Congo - Kinshasa Congo - Kinshasa -2.04 +3.04% 188
Congo - Brazzaville Congo - Brazzaville 0.0192 -50.9% 100
Colombia Colombia -0.717 +13.9% 159
Comoros Comoros -0.226 -0.0418% 117
Cape Verde Cape Verde 0.903 -2.57% 36
Costa Rica Costa Rica 0.984 +2.88% 27
Cuba Cuba 0.384 -21.8% 81
Cayman Islands Cayman Islands 1.63 -2.12% 1
Cyprus Cyprus 0.41 -3.35% 76
Czechia Czechia 0.967 +18.8% 30
Germany Germany 0.587 -6.6% 62
Djibouti Djibouti -0.517 +1.84% 147
Dominica Dominica 1.29 -1.74% 9
Denmark Denmark 0.851 -2.08% 41
Dominican Republic Dominican Republic 0.239 -4.12% 88
Algeria Algeria -0.578 -11.2% 150
Ecuador Ecuador -0.338 -8.91% 130
Egypt Egypt -0.867 -11.4% 164
Eritrea Eritrea -0.793 -17.2% 162
Spain Spain 0.287 -9.9% 85
Estonia Estonia 0.661 -9.25% 56
Ethiopia Ethiopia -1.97 -4.88% 186
Finland Finland 0.714 -20.2% 52
Fiji Fiji 0.744 -0.556% 48
France France 0.344 -12.6% 83
Micronesia (Federated States of) Micronesia (Federated States of) 1.08 -10.6% 18
Gabon Gabon -0.336 -656% 128
United Kingdom United Kingdom 0.515 -3.42% 71
Georgia Georgia -0.336 -23.1% 129
Ghana Ghana -0.0216 -88.9% 103
Guinea Guinea -0.878 +4.67% 165
Gambia Gambia -0.012 -127% 102
Guinea-Bissau Guinea-Bissau -0.328 -15.1% 127
Equatorial Guinea Equatorial Guinea -0.235 -0.388% 118
Greece Greece 0.24 +125% 87
Grenada Grenada 1.02 -1.51% 24
Greenland Greenland 1.5 -4.74% 4
Guatemala Guatemala -0.244 -7.03% 121
Guam Guam 0.893 +9.47% 38
Guyana Guyana -0.0552 -366% 107
Hong Kong SAR China Hong Kong SAR China 0.673 +17.1% 55
Honduras Honduras -0.459 -19.2% 140
Croatia Croatia 0.598 -11.1% 59
Haiti Haiti -1.43 +1.08% 177
Hungary Hungary 0.732 +7.84% 50
Indonesia Indonesia -0.404 -27% 138
India India -0.635 +3.26% 154
Ireland Ireland 0.902 +1.95% 37
Iran Iran -1.69 +4.21% 182
Iraq Iraq -2.41 +0.157% 194
Iceland Iceland 1.21 -2.82% 10
Israel Israel -1.46 +19.2% 178
Italy Italy 0.583 +25.1% 65
Jamaica Jamaica 0.385 +5.65% 80
Jordan Jordan -0.203 -13.5% 114
Japan Japan 0.951 -7.89% 32
Kazakhstan Kazakhstan -0.273 -41.6% 122
Kenya Kenya -0.938 -1% 168
Kyrgyzstan Kyrgyzstan -0.481 +2.04% 143
Cambodia Cambodia 0.0445 -145% 98
Kiribati Kiribati 1.1 -0.359% 15
St. Kitts & Nevis St. Kitts & Nevis 0.923 -1.57% 34
South Korea South Korea 0.61 +5.15% 58
Kuwait Kuwait 0.408 +39.8% 77
Laos Laos 0.814 +3.17% 44
Lebanon Lebanon -1.52 +6.78% 179
Liberia Liberia -0.116 -56.5% 109
Libya Libya -2.17 -1.17% 190
St. Lucia St. Lucia 1.02 -1.51% 24
Liechtenstein Liechtenstein 1.61 -1.83% 2
Sri Lanka Sri Lanka -0.509 -36.8% 145
Lesotho Lesotho -0.306 +4.45% 124
Lithuania Lithuania 0.742 +13.6% 49
Luxembourg Luxembourg 1.05 -0.976% 21
Latvia Latvia 0.591 +21.5% 61
Macao SAR China Macao SAR China 1.07 -4.6% 20
Morocco Morocco -0.368 +1.56% 136
Monaco Monaco 1.18 -0.173% 13
Moldova Moldova -0.684 +3.74% 156
Madagascar Madagascar -0.691 +43.7% 157
Maldives Maldives 0.53 -17.8% 70
Mexico Mexico -0.631 -8.49% 151
Marshall Islands Marshall Islands 1.18 +16.6% 13
North Macedonia North Macedonia 0.17 -5.82% 92
Mali Mali -2.73 +6.58% 198
Malta Malta 0.858 -5.81% 40
Myanmar (Burma) Myanmar (Burma) -2.13 -3.21% 189
Montenegro Montenegro 0.0693 -149% 97
Mongolia Mongolia 0.593 +11.8% 60
Mozambique Mozambique -1.27 +0.244% 174
Mauritania Mauritania -0.503 -2.62% 144
Mauritius Mauritius 0.775 -6.58% 45
Malawi Malawi -0.236 +49.1% 119
Malaysia Malaysia 0.169 +3.31% 93
Namibia Namibia 0.545 -2.7% 68
Niger Niger -1.67 +14% 181
Nigeria Nigeria -1.77 -0.588% 183
Nicaragua Nicaragua -0.126 -65% 110
Netherlands Netherlands 0.658 -9.43% 57
Norway Norway 0.893 +3.67% 39
Nepal Nepal -0.226 -5.44% 116
Nauru Nauru 0.977 +11.2% 29
New Zealand New Zealand 1.36 +2.83% 8
Oman Oman 0.587 +10.2% 63
Pakistan Pakistan -1.93 +5.05% 185
Panama Panama 0.213 -26.3% 89
Peru Peru -0.522 +7.12% 148
Philippines Philippines -0.566 -13.6% 149
Palau Palau 1.08 -0.297% 18
Papua New Guinea Papua New Guinea -0.479 -27.4% 142
Poland Poland 0.56 +10.8% 67
Puerto Rico Puerto Rico 0.51 -5.97% 72
North Korea North Korea -0.366 -15% 135
Portugal Portugal 0.713 -10.5% 53
Paraguay Paraguay 0.082 +131% 96
Palestinian Territories Palestinian Territories -1.87 +9.59% 184
Qatar Qatar 0.993 +3.45% 26
Romania Romania 0.374 -13.3% 82
Russia Russia -1.13 +12.8% 171
Rwanda Rwanda 0.108 +30.6% 95
Saudi Arabia Saudi Arabia -0.213 -40.1% 115
Sudan Sudan -2.47 +18.8% 195
Senegal Senegal -0.139 -12.1% 112
Singapore Singapore 1.42 -1.12% 6
Solomon Islands Solomon Islands 0.446 +7.72% 73
Sierra Leone Sierra Leone -0.239 +153% 120
El Salvador El Salvador 0.00233 -101% 101
San Marino San Marino 1.18 -0.173% 13
Somalia Somalia -2.38 -2.14% 193
Serbia Serbia -0.0391 -77.5% 105
South Sudan South Sudan -2.19 -1.22% 191
São Tomé & Príncipe São Tomé & Príncipe 0.441 -4.27% 74
Suriname Suriname 0.413 +3.26% 75
Slovakia Slovakia 0.573 +28.7% 66
Slovenia Slovenia 0.819 +15.4% 43
Sweden Sweden 0.758 -16.7% 47
Eswatini Eswatini -0.358 +69.9% 134
Seychelles Seychelles 0.764 +0.128% 46
Syria Syria -2.75 -0.947% 199
Chad Chad -1.56 +6.06% 180
Togo Togo -0.954 +21.1% 169
Thailand Thailand -0.28 -28.7% 123
Tajikistan Tajikistan -0.473 -36.2% 141
Turkmenistan Turkmenistan -0.111 +1.06% 108
Timor-Leste Timor-Leste 0.26 +1.54% 86
Tonga Tonga 1.09 -0.488% 17
Trinidad & Tobago Trinidad & Tobago 0.401 +15.2% 79
Tunisia Tunisia -0.631 +6.12% 152
Turkey Turkey -1.01 -2.05% 170
Tuvalu Tuvalu 1.19 +0.505% 11
Tanzania Tanzania -0.0528 -79.7% 106
Uganda Uganda -0.696 -2.18% 158
Ukraine Ukraine -1.43 -26.7% 176
Uruguay Uruguay 0.965 -11.1% 31
United States United States 0.0294 +238% 99
Uzbekistan Uzbekistan -0.155 -23.2% 113
St. Vincent & Grenadines St. Vincent & Grenadines 1.02 -1.51% 24
Venezuela Venezuela -1.19 -4.94% 173
U.S. Virgin Islands U.S. Virgin Islands 0.535 +0.932% 69
Vietnam Vietnam -0.0364 -21.1% 104
Vanuatu Vanuatu 0.932 -3.08% 33
Samoa Samoa 1.1 +0.149% 16
Kosovo Kosovo -0.323 +62.2% 126
Yemen Yemen -2.56 +4.07% 197
South Africa South Africa -0.666 -2.31% 155
Zambia Zambia 0.202 +25% 90
Zimbabwe Zimbabwe -0.934 +4.41% 167

Political stability and the absence of violence/terrorism are fundamental indicators of a nation's governance and overall societal health. The estimate reflects how effectively a government can manage conflict, maintain order, and ensure the safety of its citizens. In 2023, the median value for this indicator stands at 0.07, suggesting that while many nations experience a semblance of political stability, significant variance exists globally.

The importance of political stability cannot be overstated. It influences economic development, investment opportunities, and the quality of life for the populace. When citizens feel secure in their political environment, they are more likely to engage in economic activities, contribute to societal development, and foster a positive community atmosphere. Conversely, countries grappling with political instability often experience violence and terrorism, disrupting governance and leading to dire humanitarian consequences.

This indicator is closely related to other critical metrics such as governance effectiveness, rule of law, and corruption levels. Countries that experience high levels of violence or terrorism typically correlate with poor governance and weak institutions. For instance, nations like Syria and Afghanistan, with stark negative values of -2.75 and -2.48 respectively, are emblematic of how intertwined unstable political climates can lead to conflict. These countries not only lack effective government oversight, which is vital for maintaining social order, but also suffer from rampant corruption that undermines any chance for civic trust or engagement.

Several factors affect political stability and the absence of violence. These include socio-economic conditions, ethnic tensions, historical grievances, governance quality, and the presence of strong institutions. Economic disparity often breeds discontent. Regions with high unemployment rates or debilitating poverty, such as Yemen, often find themselves embroiled in violence as citizens react against perceived injustices. Ethnic tensions can be particularly inflammatory; when different groups feel marginalized or oppressed, it can lead to unrest and even civil war. Strong institutions help buffer these tensions by mediating conflicts and ensuring equitable resource distribution.

To enhance political stability, several strategies can be deployed. Building strong governance frameworks that prioritize transparency, accountability, and public participation is critical. Implementing policies that encourage economic growth can mitigate the roots of discontent, while also improving the living conditions of citizens. Broadening civil rights and guaranteeing equal opportunities for all can foster a sense of shared belonging and reduce ethnic or factional grievances. Community dialogues and peace-building initiatives can also play a significant role in addressing local disputes before they escalate into violence or terrorism.

However, there are several flaws and challenges in assessing political stability and the absence of violence. One significant flaw is the reliance on quantitative measures that may not capture the qualitative aspects of governance, such as public perception or informal networks of power that often exist in politically unstable environments. Additionally, variations in context, like cultural norms and historical instances of trauma, complicate the universality of this indicator. For instance, the high values associated with regions like the Cayman Islands (1.63) and Liechtenstein (1.61) illustrate how small, homogenous societies can more effectively maintain order compared to larger, more diverse nations facing different historical battles. These figures highlight a critical nuance: political stability operates within a specific context, and what works in one region may not be applicable in another, particularly in areas experiencing chronic instability.

A further examination of the top-performing areas shows that the governments of the Cayman Islands, Liechtenstein, Andorra, Greenland, and Aruba have instituted effective policies fostering political stability. These nations often benefit from strong rule of law systems, economic prosperity, and social cohesion, allowing them to maintain high levels of political stability. Their success may also stem from their ability to create inclusive political systems that allow for diverse input from citizens, significantly enhancing trust in governance.

In stark contrast, the bottom-ranking areas of Syria, Mali, Yemen, Afghanistan, and Sudan highlight how deep-seated issues such as civil war, foreign occupation, and pervading terrorist activities undermining societal frameworks can lead to abysmally low stability ratings. These nations endure a vicious cycle of violence that stunts growth, limits governance effectiveness, and drives people into further despair.

Understanding the complexities of political stability and the absence of violence is crucial for policymakers, stakeholders, and citizens alike. Fostering environments where peace can thrive will ultimately lead to healthier societies, open up economic opportunities, and create lasting legacies of governance that endure through challenges. Data on this indicator should be scrutinized, not only as a numerical reflection of stability but as a means to engage with the underlying issues that affect communities worldwide.

In conclusion, while the median estimate of 0.07 indicates a mixed global picture of political stability, the differences between the top and bottom areas underscore the urgent need for tailored approaches to addressing the root causes of instability. By leveraging the unique strengths of societies and fostering inclusive governance, countries can work towards reducing violence and terrorism, ultimately promoting a stable political atmosphere conducive to prosperity and growth.

                    
# 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 = 'PV.EST'

# 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 <- 'PV.EST'

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