Secondary education, vocational pupils

Source: worldbank.org, 03.09.2025

Year: 2018

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 21,902 -7.84% 39
Albania Albania 20,605 -1.79% 41
Andorra Andorra 488 +11.2% 63
Armenia Armenia 19,676 -22.2% 42
Antigua & Barbuda Antigua & Barbuda 282 +7.63% 65
Azerbaijan Azerbaijan 152,777 +784% 17
Burundi Burundi 68,831 +2.56% 28
Burkina Faso Burkina Faso 28,566 -4.64% 35
Bangladesh Bangladesh 757,289 +23.6% 5
Bahrain Bahrain 6,543 +1.77% 51
Bosnia & Herzegovina Bosnia & Herzegovina 94,557 -1.72% 22
Belarus Belarus 82,592 -2.87% 25
Belize Belize 3,301 +2.13% 55
Bolivia Bolivia 788,570 -1.24% 4
Brunei Brunei 5,257 +17.6% 53
Bhutan Bhutan 1,583 +3.06% 58
China China 15,927,388 -0.409% 1
Côte d’Ivoire Côte d’Ivoire 116,644 +8.95% 19
Colombia Colombia 362,733 +1.06% 8
Comoros Comoros 0 -100% 70
Cape Verde Cape Verde 1,212 -18.1% 59
Costa Rica Costa Rica 108,578 -4.82% 20
Cuba Cuba 207,590 +1.85% 13
Djibouti Djibouti 5,019 +39.8% 54
Dominican Republic Dominican Republic 75,571 +55% 26
Ecuador Ecuador 269,817 -3.31% 11
Egypt Egypt 2,018,339 +3.65% 3
Eritrea Eritrea 2,822 +5.3% 56
Georgia Georgia 10,653 -9.94% 46
Ghana Ghana 71,952 +21.7% 27
Guatemala Guatemala 351,870 +2.2% 9
Hong Kong SAR China Hong Kong SAR China 7,495 -6.3% 48
Indonesia Indonesia 4,904,031 +4.72% 2
Jordan Jordan 23,181 -12.8% 38
Kazakhstan Kazakhstan 199,116 +2.6% 14
Kyrgyzstan Kyrgyzstan 54,632 +3.03% 31
Laos Laos 7,065 +1.95% 50
Lebanon Lebanon 62,551 -3.61% 29
St. Lucia St. Lucia 137 -8.67% 66
Sri Lanka Sri Lanka 105,865 +6.18% 21
Macao SAR China Macao SAR China 936 -5.65% 61
Morocco Morocco 246,199 +7.9% 12
Monaco Monaco 308 -7.78% 64
Moldova Moldova 30,801 -6.29% 33
Madagascar Madagascar 36,093 +8.17% 32
Mali Mali 127,718 -3.47% 18
Myanmar (Burma) Myanmar (Burma) 7,348 +19.6% 49
Montenegro Montenegro 19,056 +1.78% 43
Mongolia Mongolia 30,181 -10.1% 34
Mauritania Mauritania 1,122 -59.8% 60
Mauritius Mauritius 11,709 -20.3% 45
Malaysia Malaysia 285,095 -22.7% 10
Oman Oman 1,653 +1,278% 57
Pakistan Pakistan 446,376 +25.7% 7
Peru Peru 55,088 +13.5% 30
Palestinian Territories Palestinian Territories 5,387 +41.8% 52
Qatar Qatar 720 +6.67% 62
Rwanda Rwanda 88,574 +11.3% 24
Saudi Arabia Saudi Arabia 21,120 +5.14% 40
Senegal Senegal 25,162 -25.7% 37
El Salvador El Salvador 91,653 -2.95% 23
San Marino San Marino 108 -79.9% 67
Serbia Serbia 185,638 -0.931% 15
Suriname Suriname 25,412 +13.3% 36
Seychelles Seychelles 88 -63% 68
Thailand Thailand 656,118 +0.804% 6
Timor-Leste Timor-Leste 14,120 +14.3% 44
Tuvalu Tuvalu 19 -47.2% 69
Tanzania Tanzania 8,024 -0.57% 47
Ukraine Ukraine 177,070 -1.07% 16

The indicator of secondary education vocational pupils is a crucial measure of a country's educational landscape, which reflects the capacity of educational systems to provide vocational training to students at the secondary level. This indicator not only provides insight into the number of students engaged in vocational education but also relates closely to labor market needs, economic development, and social mobility.

In 2019, the median value of vocational pupils enrolled in secondary education was 42,255, a statistic that underscores both achievements and areas for improvement in vocational training across different regions. Analyzing this figure requires understanding why vocational education is important. As the labor market continuously evolves under the pressures of globalization and technological advancements, secondary vocational education serves as a bridge between schooling and employment by equipping students with practical skills that are directly applicable in various industries.

The importance of vocational education has increased as economies have become more complex, with a growing demand for skilled labor. Countries that invest in both academic and vocational training create a more adaptable workforce capable of meeting emerging economic challenges. Furthermore, secondary vocational education can significantly improve youth unemployment rates, aiding in poverty alleviation and socio-economic development.

This indicator is inherently connected to various other educational metrics, including overall literacy rates, completion rates of secondary education, and quality of education. For instance, higher enrollment numbers in vocational education may correlate with overall educational attainment and lower levels of youth unemployment. Conversely, regions struggling with educational access or quality may see lower participation in vocational programs, thus perpetuating cycles of unemployment.

Factors impacting the enrollment of vocational pupils at the secondary level are multifaceted. They include economic conditions, government policy, cultural attitudes towards vocational education, and the perceived status of vocational careers. In some societies, there is a stigma attached to vocational training, often viewed as a lesser alternative to traditional academic pathways. Changing perceptions and promoting the value of vocational skills is essential for increasing enrollment numbers.

To enhance the enrollment of secondary vocational pupils, several strategies can be implemented. Governments can incentivize schools to develop robust vocational programs through funding and resources aimed at both curriculum development and partnerships with industries. Additionally, awareness campaigns that highlight the success of vocational trainees can mitigate cultural biases and encourage greater participation. Collaborative efforts with businesses can ensure the courses remain relevant to market needs, and internships or practical experiences can be integrated into vocational training to provide real-world applications of skills learned in classrooms.

Despite the importance of vocational education, there are notable flaws in the system. Funding disparities often result in unequal access to quality vocational programs. Moreover, inadequate infrastructure or poorly trained educators can hinder the effectiveness of vocational training, rendering it ineffective in meeting industry demands. These structural weaknesses necessitate a comprehensive approach to reforming vocational education to maximize its impact.

The global trend observed in the world values data reveals a steady increase in the total number of secondary vocational pupils enrolled over decades, from 22 million in 1970 to over 62 million by 2018. This increasing trend reflects a growing recognition of the importance of vocational education globally. However, as evidenced by the top and bottom five listed areas of enrollment in 2019, there is stark variation across different regions. Kazakhstan leads with a staggering 203,284 pupils, while Monaco sits at the starkly low end with only 295 pupils engaged in vocational education. Such discrepancies raise questions about educational policies and economic imperatives in different locales.

Countries like Ghana and Nepal with 76,770 and 42,255 pupils respectively, show a notable commitment to enhancing vocational training. However, the staggering figure of Kazakhstan suggests a strong emphasis on vocational education, likely indicating a robust connection with local labor market demands and economic phases. Conversely, Monaco's low numbers may reflect a very high focus on academic pathways or possibly a smaller population base affecting the overall enrollment numbers.

In summary, secondary education vocational pupils represent more than just enrollment figures—they signify national priorities in education, economic advancement, and social equity. Increasing enrollment in vocational education and improving its quality are essential strategies for nations worldwide. Addressing the systemic flaws present in vocational education will require collaborative efforts among government, industry, and educational institutions to ensure that all students are empowered to gain the skills necessary for successful future careers. By focusing on these initiatives, countries can fulfill the potential of secondary vocational education to meet the demands of a continually evolving workforce.

                    
# 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.ENRL.VO'

# 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.ENRL.VO'

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