School enrollment, secondary (% net)

Source: worldbank.org, 01.09.2025

Year: 2018

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 50.1 +3.5% 50
Albania Albania 86.6 -0.0742% 17
Antigua & Barbuda Antigua & Barbuda 88.8 +1.2% 14
Azerbaijan Azerbaijan 88.5 15
Burundi Burundi 27.5 -2.76% 62
Burkina Faso Burkina Faso 31 +6.38% 58
Bangladesh Bangladesh 66.5 +4.41% 39
Bahrain Bahrain 90.2 -2.34% 10
Bahamas Bahamas 62.5 -4.05% 45
Belarus Belarus 95.6 -0.764% 6
Belize Belize 71.1 +1.14% 34
Bolivia Bolivia 76.6 +0.478% 31
Barbados Barbados 93.6 -2.41% 7
Brunei Brunei 82.6 -1.67% 24
Bhutan Bhutan 70.2 +4.67% 37
Côte d’Ivoire Côte d’Ivoire 40.2 +5.8% 54
Colombia Colombia 77.5 +1.19% 30
Comoros Comoros 50.4 +17.2% 49
Cape Verde Cape Verde 70.4 -1.41% 36
Costa Rica Costa Rica 82.4 +0.709% 25
Cuba Cuba 84.2 +0.000748% 22
Dominican Republic Dominican Republic 70.6 +0.475% 35
Ecuador Ecuador 84.7 -0.783% 19
Egypt Egypt 82.8 +1.37% 23
Eritrea Eritrea 41.6 +2.17% 53
Georgia Georgia 95.9 +1.84% 5
Ghana Ghana 58.3 +5.09% 48
Guatemala Guatemala 43.8 +0.414% 51
Hong Kong SAR China Hong Kong SAR China 96.1 +2.57% 4
Indonesia Indonesia 78.7 +3.91% 28
Jamaica Jamaica 74 +1.05% 32
Jordan Jordan 62.6 +1.12% 44
Kazakhstan Kazakhstan 99.8 +0.00151% 1
Kyrgyzstan Kyrgyzstan 84.4 +1.47% 20
Laos Laos 60 -0.196% 47
St. Lucia St. Lucia 81.3 +0.611% 26
Sri Lanka Sri Lanka 91 +2.24% 9
Macao SAR China Macao SAR China 86.4 +2.42% 18
Morocco Morocco 64.5 +1.62% 41
Moldova Moldova 78 +0.13% 29
Madagascar Madagascar 29.8 +2.5% 61
Mali Mali 29.9 +1.98% 60
Myanmar (Burma) Myanmar (Burma) 64.1 +7.44% 42
Montenegro Montenegro 89.1 -0.292% 13
Mauritania Mauritania 31 +9.9% 59
Mauritius Mauritius 84.3 -0.281% 21
Malawi Malawi 34.2 +3.89% 57
Malaysia Malaysia 72.2 -2.94% 33
Oman Oman 96.2 +2.25% 3
Pakistan Pakistan 37.4 +5.59% 55
Peru Peru 89.3 +4.35% 12
Palestinian Territories Palestinian Territories 87.2 +0.0294% 16
Rwanda Rwanda 35.9 +27.5% 56
Saudi Arabia Saudi Arabia 96.4 +6.41% 2
Sierra Leone Sierra Leone 41.8 +8.96% 52
El Salvador El Salvador 61.8 +2.74% 46
San Marino San Marino 66.5 +48.6% 40
Serbia Serbia 92.1 -0.423% 8
Seychelles Seychelles 80.1 +0.526% 27
Timor-Leste Timor-Leste 62.7 +3.5% 43
Tuvalu Tuvalu 66.7 +14.1% 38
Tanzania Tanzania 26.5 +8.13% 63
St. Vincent & Grenadines St. Vincent & Grenadines 89.5 -1.11% 11

The indicator 'School enrollment, secondary (% net)' reflects the percentage of secondary school-age children who are enrolled in school. It is a crucial metric that provides insights into the accessibility and inclusiveness of education systems across different regions. Understanding this indicator is vital as it not only informs policymakers but also relates to multiple facets of societal development such as economic growth, health outcomes, and social stability.

School enrollment rates are integral indicators of education quality and overall educational attainment in a country. A high net enrollment rate typically signifies a robust educational infrastructure as well as the effective implementation of government policies aimed at promoting education. Conversely, low enrollment rates can indicate systemic barriers such as economic hardship, geographic inaccessibility, cultural norms rejecting education, or insufficient governmental support.

The importance of secondary school enrollment cannot be overemphasized. It often serves as a precursor to higher education, which in turn can lead to better employment opportunities and increased income levels for individuals. Additionally, educated individuals are more likely to contribute positively to their communities, fostering civic engagement and promoting sustainable economic growth. Regions with low secondary enrollment rates often experience a cascade of negative outcomes including higher poverty rates, decreased health outcomes, and greater social unrest.

This metric also relates closely to other indicators, such as literacy rates and educational attainment levels. For instance, higher secondary enrollment usually correlates with improved literacy, as students acquire essential skills and knowledge during this stage of education. Furthermore, it reflects the performance of primary education systems; if primary education is under-enrolled or of poor quality, it is likely to impact secondary enrollment negatively. Economic indicators such as GDP per capita can also be linked with secondary education; countries that invest in education typically experience stronger economic growth and improved social welfare standards.

Various factors influence secondary school enrollment. Economic factors play a significant role; households facing financial constraints may prioritize immediate economic contributions over educational pursuits. Geographic factors also hold importance, especially in rural areas, where access to schools can be challenging due to transportation issues or a lack of adequate infrastructure. Sociocultural elements, such as gender roles or societal attitudes towards education, significantly impact enrollment as well, particularly in regions where discrimination against certain demographics, such as girls, remains prevalent. Additionally, government policies and educational reforms define the systematic environment where children can pursue their education. Provisions such as free tuition, school feeding programs, and transportation subsidies can enhance enrollment figures significantly.

Addressing low secondary enrollment rates requires a multifaceted approach. Strategies should include enhancing the quality of primary education, ensuring availability of secondary schools, and implementing supportive financial policies that reduce the economic burden on families. Initiatives aimed at promoting gender equality in education are also crucial, employing community engagement tactics to dismantle cultural barriers that inhibit girls from pursuing secondary education. Countries can also look at successful models from areas with high enrollment rates, such as Kazakhstan, which recorded an impressive 99.84% net enrollment rate, demonstrating the value of effective education policies and community engagement.

While improving enrollment rates is essential, there are flaws to consider. A focus solely on enrollment numbers may overlook the quality of education and the educational experience itself. High enrollment does not automatically translate to effective learning outcomes. Therefore, it is important to ensure that as enrollment rates increase, the quality of education provided is not compromised. Additionally, tracking secondary enrollment rates can often lead to a simplistic approach to complex educational issues; contextual factors that affect learning, such as classroom sizes, teacher qualifications, and resource availability, should also be evaluated to fully understand the effectiveness of educational systems.

As for the latest available data from 2019, the median value of secondary school enrollment globally was noted at 61.87%. This figure provides a baseline understanding of where the world stands regarding educational accessibility at this level. While countries like Kazakhstan lead with a staggering 99.84% enrollment rate, others face notable challenges. For instance, Ghana's current enrollment stands at 57.24%, pointing to ongoing barriers in accessing education. Interestingly, the figures also demonstrate a trend of improvement over the charted years, indicating a global commitment towards enhancing educational access from 53.9% in 1998 to 61.87% in 2019. This increasing trend, while promising, highlights the uneven progress made across different regions.

The historical data also illustrates a consistent upwards movement from 1998 through 2019, indicating concerted efforts to make secondary education accessible. The steady growth from 53.90% in 1998 to 61.87% in 2019 clearly shows that while significant strides have been made, there is still much work to be done to ensure equitable access to quality secondary education for all.

Ultimately, the 'School enrollment, secondary (% net)' indicator serves as a critical lens through which the state of education can be assessed. It not only offers vital data for stakeholders to evaluate but encourages a collective approach towards fostering education as a basic human right. With strategic investments and comprehensive policies, nations can hope to see continued improvements in educational access and outcomes for future generations.

                    
# 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 = 'SE.SEC.NENR'

# 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 <- 'SE.SEC.NENR'

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