PM2.5 air pollution, mean annual exposure (micrograms per cubic meter)

Source: worldbank.org, 01.09.2025

Year: 2020

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 46.1 -21% 20
Angola Angola 25.1 +2.22% 68
Albania Albania 15.7 +0.0146% 125
Andorra Andorra 9.08 +0.77% 175
United Arab Emirates United Arab Emirates 36.3 -13.5% 33
Argentina Argentina 14.9 +3.53% 129
Armenia Armenia 30.6 -6.37% 48
American Samoa American Samoa 6.72 -0.199% 190
Antigua & Barbuda Antigua & Barbuda 19.7 +3.36% 105
Australia Australia 8.25 -11.6% 183
Austria Austria 10.9 -4.63% 160
Azerbaijan Azerbaijan 21.7 -1.35% 89
Burundi Burundi 29.7 +3.06% 52
Belgium Belgium 11.2 +0.015% 159
Benin Benin 51 +9.63% 15
Burkina Faso Burkina Faso 58.5 +15.3% 6
Bangladesh Bangladesh 42.4 -15.9% 26
Bulgaria Bulgaria 17.1 -2.23% 119
Bahrain Bahrain 58.5 -2.45% 5
Bahamas Bahamas 18.9 +2.01% 109
Bosnia & Herzegovina Bosnia & Herzegovina 26.6 -0.426% 61
Belarus Belarus 14.6 -6.46% 134
Belize Belize 28.7 +9.58% 54
Bermuda Bermuda 7.34 +1.79% 187
Bolivia Bolivia 22.9 -6.56% 86
Brazil Brazil 12.2 -1.37% 150
Barbados Barbados 23.7 +1.74% 82
Brunei Brunei 7.6 -4.39% 186
Bhutan Bhutan 23.9 -20.3% 78
Botswana Botswana 18.9 -1.55% 110
Central African Republic Central African Republic 34.4 -1.38% 38
Canada Canada 6.57 +5.44% 191
Switzerland Switzerland 9.06 -4.12% 177
Chile Chile 23.3 +2.39% 85
China China 34.8 -7.29% 37
Côte d’Ivoire Côte d’Ivoire 49.5 +11.7% 17
Cameroon Cameroon 39.8 -2.27% 29
Congo - Kinshasa Congo - Kinshasa 26.6 +1.18% 60
Congo - Brazzaville Congo - Brazzaville 28.6 -0.608% 55
Colombia Colombia 14.2 -2.29% 138
Comoros Comoros 11.9 +14.6% 153
Cape Verde Cape Verde 42.3 +7.55% 28
Costa Rica Costa Rica 14.3 +6.96% 136
Cuba Cuba 21.2 +4.39% 94
Cyprus Cyprus 13.5 -9.98% 144
Czechia Czechia 14.1 -0.861% 140
Germany Germany 10.3 -3.29% 165
Djibouti Djibouti 35.9 -9.56% 34
Dominica Dominica 20.7 +3.11% 96
Denmark Denmark 9.07 -5.64% 176
Dominican Republic Dominican Republic 19.8 +1.69% 104
Algeria Algeria 25.6 +4.77% 66
Ecuador Ecuador 16.7 -6.26% 122
Egypt Egypt 54.9 -19% 10
Eritrea Eritrea 32.4 -10.8% 41
Spain Spain 9.58 +2.43% 171
Estonia Estonia 6.15 -10.2% 194
Ethiopia Ethiopia 27.3 -4.82% 58
Finland Finland 4.9 -8.99% 200
Fiji Fiji 12.4 -3.82% 149
France France 9.6 -2.29% 169
Micronesia (Federated States of) Micronesia (Federated States of) 12.1 -1.8% 151
Gabon Gabon 30 +8.83% 49
United Kingdom United Kingdom 9.91 -0.33% 167
Georgia Georgia 17 -3.26% 120
Ghana Ghana 54.2 +9.24% 11
Guinea Guinea 43.8 +2.07% 23
Gambia Gambia 58.4 +6.36% 7
Guinea-Bissau Guinea-Bissau 50.2 +3.53% 16
Equatorial Guinea Equatorial Guinea 35.4 +12.1% 35
Greece Greece 14.4 -3.57% 135
Grenada Grenada 24.7 +1.62% 71
Greenland Greenland 6.56 +1.03% 192
Guatemala Guatemala 21.6 +7.05% 90
Guam Guam 9.58 -3.16% 172
Guyana Guyana 25.5 -2.42% 67
Honduras Honduras 20.3 +12% 97
Croatia Croatia 16.1 +1.29% 124
Haiti Haiti 21.4 +1.97% 92
Hungary Hungary 14.1 -3.45% 139
Indonesia Indonesia 17.9 -7.96% 115
India India 48.4 -19.2% 19
Ireland Ireland 8.17 +3.52% 184
Iran Iran 32.3 -5.08% 43
Iraq Iraq 38.2 +1.18% 31
Iceland Iceland 5.11 -6.86% 199
Israel Israel 18.6 -4.9% 112
Italy Italy 14.7 -1.58% 133
Jamaica Jamaica 17.4 +2.01% 116
Jordan Jordan 28.8 -7.95% 53
Japan Japan 12.8 -0.794% 145
Kazakhstan Kazakhstan 20 -3.98% 101
Kenya Kenya 24.4 +24.6% 73
Kyrgyzstan Kyrgyzstan 24.4 -8.89% 74
Cambodia Cambodia 24.1 +5.09% 77
Kiribati Kiribati 11.3 -2.52% 158
St. Kitts & Nevis St. Kitts & Nevis 8.59 +9.18% 180
South Korea South Korea 25.9 -0.274% 64
Kuwait Kuwait 53.7 +1.77% 12
Laos Laos 22.3 -0.496% 88
Lebanon Lebanon 19.2 -6.63% 108
Liberia Liberia 42.4 +14% 27
Libya Libya 33 -9.63% 40
St. Lucia St. Lucia 23.8 +2.98% 80
Sri Lanka Sri Lanka 20 +0.933% 103
Lesotho Lesotho 23.4 +10.7% 84
Lithuania Lithuania 9.22 -10% 173
Luxembourg Luxembourg 8.67 +2.55% 178
Latvia Latvia 11.6 -7.08% 155
Morocco Morocco 21.3 +1.87% 93
Monaco Monaco 9.58 -0.808% 170
Moldova Moldova 14.8 -6.43% 132
Madagascar Madagascar 12.8 -0.321% 146
Maldives Maldives 12 -2.45% 152
Mexico Mexico 15 +1.95% 128
Marshall Islands Marshall Islands 10.7 -0.717% 162
North Macedonia North Macedonia 26.1 +0.927% 63
Mali Mali 56.8 -1.06% 8
Malta Malta 11.7 -6.9% 154
Myanmar (Burma) Myanmar (Burma) 32.3 +0.469% 42
Montenegro Montenegro 18 -1.86% 113
Mongolia Mongolia 29.7 -4.6% 51
Northern Mariana Islands Northern Mariana Islands 9.71 -1.29% 168
Mozambique Mozambique 20.1 +2.48% 99
Mauritania Mauritania 70.8 -1.91% 3
Mauritius Mauritius 9.15 -1.33% 174
Malawi Malawi 23.7 +6.09% 83
Malaysia Malaysia 16.2 -9.12% 123
Namibia Namibia 20 +3.13% 102
Niger Niger 85.1 +17.5% 1
Nigeria Nigeria 56.5 +9.3% 9
Nicaragua Nicaragua 16.8 +12.2% 121
Netherlands Netherlands 10.9 -4.18% 161
Norway Norway 6.06 -5.1% 196
Nepal Nepal 45.7 -20.2% 22
Nauru Nauru 6.06 +0.635% 195
New Zealand New Zealand 6.49 -12.6% 193
Oman Oman 39.6 -11.8% 30
Pakistan Pakistan 43 -18.7% 25
Panama Panama 11.5 -3.49% 156
Peru Peru 27 -7.13% 59
Philippines Philippines 20.3 -5.75% 98
Palau Palau 7.33 -5.4% 188
Papua New Guinea Papua New Guinea 17.3 +2.5% 118
Poland Poland 18 -4.33% 114
Puerto Rico Puerto Rico 7.19 +7.93% 189
North Korea North Korea 29.9 -3.84% 50
Portugal Portugal 8.45 +5.89% 182
Paraguay Paraguay 10.1 -0.327% 166
Palestinian Territories Palestinian Territories 26.4 -11.2% 62
Qatar Qatar 75.7 -6.6% 2
Romania Romania 14.9 -1.05% 131
Russia Russia 11.3 -3.47% 157
Rwanda Rwanda 31.3 +4.27% 45
Saudi Arabia Saudi Arabia 53.1 -9.34% 13
Sudan Sudan 45.8 -11.7% 21
Senegal Senegal 63.7 +5.63% 4
Singapore Singapore 13.9 -18.8% 143
Solomon Islands Solomon Islands 14 -2.42% 142
Sierra Leone Sierra Leone 43.2 +12% 24
El Salvador El Salvador 20 +9.64% 100
San Marino San Marino 10.7 +1.88% 163
Somalia Somalia 24.5 +7.4% 72
Serbia Serbia 22.5 -0.569% 87
South Sudan South Sudan 30.7 -7.86% 47
São Tomé & Príncipe São Tomé & Príncipe 27.3 +26.2% 56
Suriname Suriname 27.3 -8.95% 57
Slovakia Slovakia 15.4 -2.81% 126
Slovenia Slovenia 14.3 +2.75% 137
Sweden Sweden 5.64 -7.12% 198
Eswatini Eswatini 18.8 -11.3% 111
Seychelles Seychelles 8.5 -9.9% 181
Syria Syria 24.7 -6.67% 70
Chad Chad 49.1 -5.26% 18
Togo Togo 51.7 +8.48% 14
Thailand Thailand 31 +2.06% 46
Tajikistan Tajikistan 37.1 -8.03% 32
Turkmenistan Turkmenistan 19.6 -3.23% 106
Timor-Leste Timor-Leste 17.4 -1.23% 117
Tonga Tonga 12.5 -2.19% 148
Trinidad & Tobago Trinidad & Tobago 25.6 +2.37% 65
Tunisia Tunisia 24.2 +1.73% 76
Turkey Turkey 21.6 -8.79% 91
Tuvalu Tuvalu 5.92 -1.53% 197
Tanzania Tanzania 25.1 +20.7% 69
Uganda Uganda 33.8 +7.38% 39
Ukraine Ukraine 14.9 -4.36% 130
Uruguay Uruguay 10.6 +2.65% 164
United States United States 7.81 +8.9% 185
Uzbekistan Uzbekistan 32 -6.37% 44
St. Vincent & Grenadines St. Vincent & Grenadines 23.9 +2.22% 79
Venezuela Venezuela 15.3 +2.73% 127
U.S. Virgin Islands U.S. Virgin Islands 8.63 +8.95% 179
Vietnam Vietnam 20.8 -0.147% 95
Vanuatu Vanuatu 14.1 -1.77% 141
Samoa Samoa 12.6 -2.49% 147
Yemen Yemen 34.8 -16.4% 36
South Africa South Africa 23.8 +2.43% 81
Zambia Zambia 24.3 +4.76% 75
Zimbabwe Zimbabwe 19.5 +5.21% 107
PM2.5 Air Pollution

Air pollution remains one of the most critical environmental issues affecting global health and ecosystems. Among the various pollutants, particulate matter, especially PM2.5, is particularly concerning due to its small size, which allows it to penetrate deep into the lungs and even enter the bloodstream. PM2.5 refers to particulate matter that is 2.5 micrometers in diameter or smaller, originating from various sources including vehicle emissions, industrial discharges, and natural occurrences such as wildfires. The mean annual exposure to PM2.5, measured in micrograms per cubic meter, serves as an essential indicator of air quality and environmental health.

The importance of monitoring PM2.5 levels cannot be overstated. High exposure to PM2.5 is linked to various adverse health effects, including respiratory and cardiovascular diseases, and is a significant factor in premature mortality. In 2020, the global median exposure to PM2.5 was reported at 20.03 micrograms per cubic meter. This figure reflects the exposure levels that affect millions of individuals worldwide, impacting public health, economic productivity, and quality of life.

Understanding PM2.5 levels in conjunction with other indicators, such as general air quality indices and health statistics, helps policymakers and researchers to assess the effectiveness of environmental regulations. Moreover, PM2.5 exposure is closely related to other environmental health concerns like nitrogen dioxide (NO2) and sulfur dioxide (SO2) levels, which further complicate air pollution management. For instance, cities with heightened traffic often experience elevated levels of both PM2.5 and NO2, exacerbating respiratory conditions among residents.

Several factors influence PM2.5 levels and their variations across different regions. Industrial activities, urban density, and energy production methods are significant contributors. Countries with heavy reliance on coal for energy, such as Niger and Qatar, often report higher PM2.5 levels due to emissions from power plants and manufacturing. The top five areas with the highest PM2.5 exposures in 2020 illustrate this trend: Niger at 85.12 micrograms per cubic meter, Qatar at 75.66, Mauritania at 70.82, Senegal at 63.74, and Bahrain at 58.5. The high values in these nations are indicative of their reliance on fossil fuel-based industrial processes, inadequate regulatory measures, and the inherent challenges of monitoring and enforcing air quality standards in developing regions.

On the contrary, some countries show remarkably low PM2.5 levels, such as Finland with 4.9 micrograms per cubic meter, Iceland at 5.11, and Sweden at 5.64. These nations have taken proactive measures to implement stricter emissions regulations, promote clean energy technologies, and reduce the burning of fossil fuels. Their approaches demonstrate that effective policies can significantly enhance air quality and protect public health.

Strategies to improve PM2.5 levels typically involve adopting cleaner technologies, increasing energy efficiency, and enhancing public transportation systems. Transitioning from coal and other fossil fuels to renewable energy sources, such as wind and solar, is critical to reducing PM2.5 emissions. Additionally, promoting electric vehicles and improving fuel standards can play an essential role in decreasing pollutant levels, especially in densely populated urban centers.

Community awareness and participation are also crucial in combatting air pollution. Public campaigns to reduce emissions from vehicles and the implementation of green spaces in urban planning can lead to a substantial reduction in PM2.5 levels. For example, cities that have prioritized the development of parks, trees, and vegetation not only improve aesthetics but also facilitate higher air quality through natural filtration processes.

However, challenges remain. Many developing nations often lack the financial resources and infrastructure to implement comprehensive air quality management strategies. Furthermore, there can be a lack of political will to enforce existing regulations or change energy production methods due to economic pressures or reliance on traditional industries. The disparity between countries that successfully maintain low PM2.5 levels and those struggling with elevated concentrations underscores the need for international cooperation in addressing air pollution rather than treating it solely as a national issue.

An analysis of historical data reveals a gradual decline in global PM2.5 levels over the past three decades, indicating progress in air quality management efforts. The world values show a decrease from 39.66 micrograms per cubic meter in 1990 to 31.32 micrograms in 2020, demonstrating a collective movement toward cleaner air. However, this progress must be accelerated, especially given the increasing urbanization and energy demands from a growing global population.

In conclusion, PM2.5 air pollution is a critical health and environmental indicator that requires urgent attention. The significant variation in exposure levels across different geographic areas highlights the necessity for tailored approaches to air quality management. Through concerted efforts in policy implementation, technological advancement, and public engagement, the global community can continue to make strides toward cleaner air and healthier societies for all.

                    
# 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 = 'EN.ATM.PM25.MC.M3'

# 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 <- 'EN.ATM.PM25.MC.M3'

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