Average academic performance of 15-year-olds
What you should know about this indicator
- The Programme for International Student Assessment (PISA) is an international survey that assesses the skills and knowledge of 15-year-old students. It provides a snapshot of how well education systems around the world are preparing young people for adult life.
- PISA is run every three years and tests students in reading, mathematics, and science. It doesn't just assess what students know — it focuses on how well they can use this knowledge to solve problems they might encounter in the real world. For example, can they interpret a bus timetable, reason through a scientific scenario, or compare prices to make a budget?
- Each student sits a two-hour computer-based test. Results are summarised as average scores for each country, and are designed to be comparable over time.
- The scores are standardized to make comparisons easier: across OECD countries, the average score was set to 500 in the first year each subject was assessed (reading in 2000, mathematics in 2003, science in 2006). Most countries score somewhere between 300 and 600, although scores outside this range are possible.
- Higher scores indicate better performance — but comparing countries should be done carefully. Many factors affect student performance, including income, teacher quality, classroom time, and parental education. Cultural differences can also play a role in how students approach the test.
- PISA gives policymakers, researchers, and educators a way to evaluate their education systems and learn from others. But as with all such comparisons, it's important to consider the wider context behind the numbers.
Related research and writing
Sources and processing
This data is based on the following sources
How we process data at Our World in Data
All data and visualizations on Our World in Data rely on data sourced from one or several original data providers. Preparing this original data involves several processing steps. Depending on the data, this can include standardizing country names and world region definitions, converting units, calculating derived indicators such as per capita measures, as well as adding or adapting metadata such as the name or the description given to an indicator.
At the link below you can find a detailed description of the structure of our data pipeline, including links to all the code used to prepare data across Our World in Data.
Reuse this work
Citations
How to cite this page
To cite this page overall, including any descriptions, FAQs or explanations of the data authored by Our World in Data, please use the following citation:
“Data Page: Average performance of 15-year-old students in mathematics”, part of the following publication: Hannah Ritchie, Veronika Samborska, Esteban Ortiz-Ospina, and Max Roser (2023) - “Global Education”. Data adapted from OECD. Retrieved from https://archive.ourworldindata.org/20260304-094028/grapher/academic-performance.html [online resource] (archived on March 4, 2026).How to cite this data
In-line citationIf you have limited space (e.g. in data visualizations), you can use this abbreviated in-line citation:
OECD (2023) – with minor processing by Our World in DataFull citation
OECD (2023) – with minor processing by Our World in Data. “Average performance of 15-year-old students in mathematics” [dataset]. OECD, “PISA Database” [original data]. Retrieved April 9, 2026 from https://archive.ourworldindata.org/20260304-094028/grapher/academic-performance.html (archived on March 4, 2026).Download
Quick download
Download the data shown in this chart as a ZIP file containing a CSV file, metadata in JSON format, and a README. The CSV file can be opened in Excel, Google Sheets, and other data analysis tools.
Data API
Use these URLs to programmatically access this chart's data and configure your requests with the options below. Our documentation provides more information on how to use the API, and you can find a few code examples below.
Data URL (CSV format)
https://ourworldindata.org/grapher/academic-performance.csv?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematicsMetadata URL (JSON format)
https://ourworldindata.org/grapher/academic-performance.metadata.json?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematicsExcel / Google Sheets
=IMPORTDATA("https://ourworldindata.org/grapher/academic-performance.csv?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematics")Python with Pandas
import pandas as pd
import requests
# Fetch the data.
df = pd.read_csv("https://ourworldindata.org/grapher/academic-performance.csv?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematics", storage_options = {'User-Agent': 'Our World In Data data fetch/1.0'})
# Fetch the metadata
metadata = requests.get("https://ourworldindata.org/grapher/academic-performance.metadata.json?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematics").json()R
library(jsonlite)
# Fetch the data
df <- read.csv("https://ourworldindata.org/grapher/academic-performance.csv?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematics")
# Fetch the metadata
metadata <- fromJSON("https://ourworldindata.org/grapher/academic-performance.metadata.json?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematics")Stata
import delimited "https://ourworldindata.org/grapher/academic-performance.csv?v=1&csvType=full&useColumnShortNames=false&sex=both&subject=mathematics", encoding("utf-8") clear