This page offers a free download of the cleaned, harmonized school-level datasets we built from the Department of Education’s (DepEd) public files. They hold nine years of enrollment (SY 2017-18 to SY 2025-26) and the SY 2023-24 school inputs. They also hold the National Achievement Test (NAT), Early Language, Literacy, and Numeracy Assessment (ELLNA), and Comprehensive Rapid Literacy Assessment (CRLA) results. The files come in CSV and Parquet with a codebook, checksums, and terms of use that say how you may use them. Version 1.0 is 66.6 MB in total, and there is no sign-up. If you have read our data reports and wanted the files behind them, this page is for you.
The raw DepEd files are public, but they are not ready to analyze. Labels change between years, blanks mean three different things, and one year is encoded in two character sets. The modules also have to be joined on a school ID that a few hundred schools change. The data quality audit lists every issue in the raw files. These files are what you get after every documented rule is applied, so you can start from the same tables the reports use instead of repeating a week of cleaning.
What you get. Five cleaned datasets (343 documented columns), two helper tables, a codebook, the harmonization rules, SHA-256 checksums and a README. The data files follow DepEd’s terms of use; our code and documentation need our permission to reuse (terms of use). The original DepEd files were never edited; every change is reproducible from the published pipeline.
The files in the release
Each dataset comes as a gzip-compressed CSV, which opens in any tool, and as Parquet, which is smaller, typed, and faster in Python and R. The nine-year enrollment panel is one Parquet file or one CSV per school year.
| Dataset | File | Format | Rows | Columns | Size |
|---|---|---|---|---|---|
| School master file, SY 2023-24 | school_master_2023.csv.gz | CSV (gzip) | 60,167 | 207 | 8.0 MB |
| School master file, SY 2023-24 | school_master_2023.parquet | Parquet | 60,167 | 207 | 6.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2017-18.csv.gz | CSV (gzip), SY 2017-18 | 61,563 | 69 | 2.7 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2018-19.csv.gz | CSV (gzip), SY 2018-19 | 61,916 | 69 | 3.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2019-20.csv.gz | CSV (gzip), SY 2019-20 | 61,923 | 69 | 3.7 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2020-21.csv.gz | CSV (gzip), SY 2020-21 | 60,957 | 69 | 3.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2021-22.csv.gz | CSV (gzip), SY 2021-22 | 60,429 | 69 | 3.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2022-23.csv.gz | CSV (gzip), SY 2022-23 | 60,137 | 69 | 3.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2023-24.csv.gz | CSV (gzip), SY 2023-24 | 60,167 | 69 | 3.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2024-25.csv.gz | CSV (gzip), SY 2024-25 | 60,129 | 69 | 3.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_2025-26.csv.gz | CSV (gzip), SY 2025-26 | 60,204 | 69 | 3.6 MB |
| Enrollment panel, SY 2017-18 to SY 2025-26 | enrollment_panel_long.parquet | Parquet | 547,425 | 69 | 17.2 MB |
| School spine, SY 2017-18 to SY 2025-26 | school_spine.csv.gz | CSV (gzip) | 66,967 | 24 | 882 KB |
| School spine, SY 2017-18 to SY 2025-26 | school_spine.parquet | Parquet | 66,967 | 24 | 1.4 MB |
| CRLA reading levels, SY 2025-26 | crla_2025_outcomes.csv.gz | CSV (gzip) | 6,121 | 33 | 228 KB |
| CRLA reading levels, SY 2025-26 | crla_2025_outcomes.parquet | Parquet | 6,121 | 33 | 273 KB |
| Shrunk NAT and ELLNA school means, SY 2023-24 | school_assessment_shrunk.csv.gz | CSV (gzip) | 6,840 | 10 | 261 KB |
| Shrunk NAT and ELLNA school means, SY 2023-24 | school_assessment_shrunk.parquet | Parquet | 6,840 | 10 | 255 KB |
| Likely school-ID changes | likely_id_changes.csv | CSV | 146 | 7 | 13 KB |
| Assessment coverage by division | assessment_coverage_by_division.csv | CSV | 63 | 10 | 4 KB |
Documentation in the same folder:
| File | Size | What it is |
|---|---|---|
| codebook.csv | 44 KB | Every column of every dataset: type, block, non-blank rows and description |
| harmonisation_rules.csv | 1 KB | The label mappings applied to the source files |
| README.md | 6 KB | What is in the release and how to read it |
| LICENSE.txt | 2 KB | Terms of use and the suggested citation |
| CHECKSUMS.sha256 | SHA-256 of every file | |
| manifest.json | The file list with sizes and checksums, for scripts |
Every file is at https://data.nash.com.ph/deped-data/v1/. The folder name is the version, so the contents behind a URL never change. A future release will be a new folder, and this page will list what changed.
Quick start
Excel or Google Sheets. Download a .csv.gz file and unzip it. On Windows, use 7-Zip or tar -xzf in a terminal; on macOS, double-click the file. The school master has 60,167 rows and 207 columns, and each enrollment year has about 60,000 rows, so each fits in a sheet. Blank cells are missing values, not zeros. Keep school_id as text if your tool offers the choice, and do not let it drop leading digits.
Python. Parquet needs pyarrow; CSV needs nothing beyond pandas.
import pandas as pd
base = "https://data.nash.com.ph/deped-data/v1"master = pd.read_parquet(f"{base}/school_master_2023.parquet")panel = pd.read_parquet(f"{base}/enrollment_panel_long.parquet")
# Public elementary schools with a pupil-teacher ratio above 40, by regionhigh = master[master.is_public & master.offers_es & (master.ptr > 40)]print(high.groupby("region_const").size().sort_values(ascending=False))
# National enrollment by year (schools that reported nothing are excluded by design)print(panel.groupby("sy_label").enrol_total.sum())R.
library(arrow)library(dplyr)
base <- "https://data.nash.com.ph/deped-data/v1"master <- read_parquet(file.path(base, "school_master_2023.parquet"))panel <- read_parquet(file.path(base, "enrollment_panel_long.parquet"))
master |> filter(is_public, offers_es) |> group_by(region_const) |> summarise(median_ptr = median(ptr, na.rm = TRUE))Command line. Run curl -O https://data.nash.com.ph/deped-data/v1/school_master_2023.csv.gz, then run sha256sum -c CHECKSUMS.sha256 in the same folder to verify what you downloaded.
What the data covers
| Source dataset family | Source files | Rows | Coverage |
|---|---|---|---|
| Enrollment, SY 2017-18 to SY 2025-26 | Nine files, one per school year | 547,425 school-years, 66,967 school IDs | Every school in the Learner Information System, all sectors |
| Learner types, personnel, facilities, ICT and WASH, SY 2023-24 | Five files | 60,167 schools | All schools listed; the input modules are filled for 47,817 public schools only |
| NAT Grade 6, SY 2023-24 | One file | 6,636 schools | Selected schools in 44 divisions of five regions (CAR, I, III, VIII, IX) |
| ELLNA Grade 3, SY 2023-24 | One file | 5,752 schools | The same 44 divisions; public schools |
| CRLA Grades 1 to 3, SY 2025-26 | One file | 6,121 schools | The same 44 divisions; public schools |
The three assessment files are a selected set. They cover 44 of the 63 divisions in five regions (CAR, I, III, VIII, and IX) and about half of the public schools in those divisions. The schools were chosen by a rule DepEd has not published. Nothing in them describes learning outcomes elsewhere. The input modules are blank for private, SUC/LUC (state or local university or college), and overseas schools, because DepEd collects them for public schools only. These modules are personnel, facilities, water, sanitation, and hygiene (WASH), and information and communication technology (ICT). The enrollment files cover every school in the Learner Information System (LIS) each year, in all sectors.

How the data was cleaned
Every rule below is applied in code, never by hand, and is counted in the data quality report. The raw files were never edited.
- Encoding and headers. The SY 2025-26 enrollment file mixes UTF-8 and Windows-1252 text and uses a different header scheme. It is decoded, and every year is read into one set of column names.
- Labels harmonized. Whitespace is stripped, and SY 2025-26’s sector, management, and annex labels and its Yes/No flags are mapped to the coding the other eight years use. Division renames are mapped to the current name, and the CRLA file’s language spellings to the ELLNA technical-notes spelling. The full list is in
harmonisation_rules.csvand in the table below. - A constant-boundary region.
region_constplaces every school-year row in its SY 2025-26 region. The ARMM to BARMM change, the Cotabato City and Sulu transfers, and the new Negros Island Region therefore do not break a time series. The published label is kept beside it. - Blanks and zeros. A blank grade cell is 0 only when the school does not offer that level; a blank for a level it does offer is missing. SY 2025-26 writes blanks where earlier years wrote zeros. The 128 offered-but-blank levels in reporting schools are therefore read as 0, and the 46 schools that reported no enrollment at all are flagged as
enrol_missingwith blank totals. Nothing is imputed. - Public-only modules. Personnel, facilities, WASH, and ICT rows for non-public schools are blank and stay blank. The
*_has_datacolumns say whether a school has any data in a module. - Implausible values flagged, not altered. The files have no negative counts, no scores outside 0 to 100, and no CRLA totals that fail to add up. Schools reporting more teachers or computers than learners are flagged. The only capped value is the derived
comp_acad_w, which winsorizes academic computer counts at the 99th percentile because one school reports 15,699 tablets. The raw count is kept incomp_acad_total. - School IDs never re-linked. The 146 schools that appear to change ID are listed in
likely_id_changes.csv. The panel counts each as an exit plus an entry, because DepEd publishes no mapping. - Types made consistent. Counts are integers (blank when missing), flags are true/false, shares are proportions from 0 to 1, and the same column has the same type in CSV and Parquet.
Harmonization rules
| Field | Source label | Released label |
|---|---|---|
| sector | SUCsLUCs | SUC/LUC |
| school_management | DepED Managed | DepEd |
| school_management | DepEd Managed | DepEd |
| school_management | SUC Managed | SUC |
| school_management | DOST Managed | DOST |
| school_management | Other GA Managed | Other GA |
| school_management | SCHOOL ABROAD | PSO |
| school_management | Local International School | International School |
| annex_status | School with no Annexes | Standalone School |
| annex_status | Mother school | Mother School |
| annex_status | Annex or Extension school(s) | Annex/Extension School |
| annex_status | Mobile School(s)/Center(s) | Mobile School/Center |
| region | ARMM | BARMM |
| division | Compostela Valley | Davao De Oro |
| division | San Jose del Monte City | City of San Jose Del Monte |
| division | Munoz Science City | Science City of Muñoz |
| division | Taguig | Taguig City and Pateros |
| division | Special Geographic Division | Special Geographic Area Division |
| language (CRLA to ELLNA spelling) | Ilocano | Ilokano/Iloko |
| language (CRLA to ELLNA spelling) | Sinugbuanong Binisaya | Sinugbuanong Binisaya/Cebuano |
| language (CRLA to ELLNA spelling) | Pangasinan | Pangasinan/Pangasinense |
| language (CRLA to ELLNA spelling) | Bahasa Sug | Tausug |
| language (CRLA to ELLNA spelling) | Chavacano | Chavacano/Chabacano |
| offers_es / offers_jhs / offers_shs | Yes | True |
| offers_es / offers_jhs / offers_shs | No | False |
| offers_es / offers_jhs / offers_shs | True | True |
| offers_es / offers_jhs / offers_shs | False | False |
| region_const | ARMM; Cotabato City (Region XII); Sulu (BARMM) | BARMM; BARMM; Region IX |
| region_const | 21 Negros Island Region divisions under Region VI or VII | NIR |
File-by-file guide to the columns
Columns are grouped as in codebook.csv. “Non-blank rows” is the number of rows with a value, which shows where a column applies; for example, personnel columns are filled for public schools only.
School master file, SY 2023-24
This file has one row per school in DepEd’s SY 2023-24 files: 60,167 schools in all sectors. Each row holds geography, enrollment by grade and sex, learner types, teachers, classrooms and buildings, toilets, water, electricity and internet, and computers and ICT equipment. It also holds the NAT, ELLNA, and CRLA results where they exist, and the derived ratios the report uses. Input modules are blank for non-public schools. Join the other SY 2023-24 files on school_id; the learners, personnel, facilities, ICT, and WASH files all contain the same 60,167 IDs.
Identification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
school_id |
integer | 60,167 | DepEd six-digit school identifier, as published; unique within each file and the key for joining files. A minority of schools change ID between years (see likely_id_changes.csv). |
school_name |
text | 60,167 | Official school name as published for that school year. |
Geography
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
region |
text | 60,167 | Region label as published for that school year (ARMM becomes BARMM from SY 2019-20; NIR appears from SY 2024-25). |
region_const |
text | 60,167 | Region under SY 2025-26 boundaries, for constant-boundary comparisons across years: ARMM and Cotabato City to BARMM, the 21 Negros Island Region divisions to NIR, Sulu to Region IX. |
division |
text | 60,167 | Schools division as published, with renames mapped to the current name (for example Compostela Valley to Davao De Oro). Division names are not unique nationally; combine with region. |
province |
text | 60,167 | Province; ‘PSO’ for Philippine Schools Overseas. |
school_district |
text | 60,167 | School district; the overseas city for Philippine Schools Overseas. Blank in SY 2017-18, when the variable did not exist. |
legislative_district |
text | 60,167 | Legislative district. |
municipality |
text | 60,167 | Municipality or city. |
barangay |
text | 60,097 | Barangay. |
Classification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
sector |
text | 60,167 | Public, Private, SUC/LUC (state or local university or college) or PSO (Philippine School Overseas). SY 2025-26’s ‘SUCsLUCs’ is mapped to ‘SUC/LUC’. |
school_management |
text | 60,167 | Management type as published, harmonised to one label set: DepEd, Local Government, SUC, LUC, DOST, Other GA, Sectarian, Non-Sectarian, International School, PSO, Tahderiyyah (SY 2018-19 only). |
annex_status |
text | 60,167 | Standalone School, Mother School, Annex/Extension School or Mobile School/Center; blank before SY 2019-20. SY 2025-26’s labels are mapped to these. |
offers_es |
boolean | 60,167 | True when the school offers elementary (Kindergarten to Grade 6); SY 2025-26’s Yes/No mapped to True/False. |
offers_jhs |
boolean | 60,167 | True when the school offers junior high school (Grades 7 to 10). |
offers_shs |
boolean | 60,167 | True when the school offers senior high school (Grades 11 and 12). |
offers_monograde |
boolean | 49,152 | True when the school reports monograde elementary classes (learners file). |
offers_multigrade |
boolean | 49,152 | True when the school reports multigrade elementary classes (learners file). |
is_public |
text | 60,167 | True when sector is Public. |
is_annex |
text | 60,167 | True when annex_status is Annex/Extension School. |
Enrollment
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
enrol_total |
integer | 60,167 | Total enrollment, Kindergarten to Grade 12 including non-graded learners: the sum of every sex-by-grade cell in the source file. |
enrol_es |
integer | 60,167 | Elementary enrollment: Kindergarten, Grades 1 to 6 and elementary non-graded. |
enrol_jhs |
integer | 60,167 | Junior high school enrollment: Grades 7 to 10 and junior high non-graded. |
enrol_shs |
integer | 60,167 | Senior high school enrollment: Grades 11 and 12, all strands. |
enrol_k |
integer | 60,167 | Kindergarten enrollment, both sexes. |
enrol_g1 |
integer | 60,167 | Grade 1 enrollment, both sexes. |
enrol_g2 |
integer | 60,167 | Grade 2 enrollment, both sexes. |
enrol_g3 |
integer | 60,167 | Grade 3 enrollment, both sexes. |
enrol_g4 |
integer | 60,167 | Grade 4 enrollment, both sexes. |
enrol_g5 |
integer | 60,167 | Grade 5 enrollment, both sexes. |
enrol_g6 |
integer | 60,167 | Grade 6 enrollment, both sexes. |
enrol_g7 |
integer | 60,167 | Grade 7 enrollment, both sexes. |
enrol_g8 |
integer | 60,167 | Grade 8 enrollment, both sexes. |
enrol_g9 |
integer | 60,167 | Grade 9 enrollment, both sexes. |
enrol_g10 |
integer | 60,167 | Grade 10 enrollment, both sexes. |
enrol_g11 |
integer | 60,167 | Grade 11 enrollment, both sexes. |
enrol_g12 |
integer | 60,167 | Grade 12 enrollment, both sexes. |
enrol_male |
integer | 60,167 | Male learners, all grades. |
enrol_female |
integer | 60,167 | Female learners, all grades. |
Learner types
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
ip_total |
integer | 60,167 | Learners who are members of Indigenous Peoples, all grades. |
balikaral_total |
integer | 60,167 | Balik-Aral (returning) learners, all grades. |
alive_total |
integer | 58,810 | Learners in Arabic Language and Islamic Values Education (ALIVE), all grades. |
adm_total |
integer | 47,560 | Learners in alternative delivery modes: distance education, e-IMPACT, MISOSA, the Open High School Program and other schooling arrangements. |
mono_total |
integer | 49,343 | Elementary learners in monograde classes. |
multi_total |
integer | 49,343 | Elementary learners in multigrade classes. |
multigrade_share_es |
number | 49,152 | multi_total divided by (mono_total + multi_total); blank when both are zero. |
ip_share |
number | 60,052 | ip_total divided by enrol_total. |
Personnel
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
teachers_nat_es |
integer | 39,329 | Nationally funded teaching positions, elementary. |
teachers_nat_jhs |
integer | 9,966 | Nationally funded teaching positions, junior high school. |
teachers_nat_shs |
integer | 7,530 | Nationally funded teaching positions, senior high school. |
teachers_loc_es |
integer | 39,343 | Locally funded teaching positions, elementary. |
teachers_loc_jhs |
integer | 10,560 | Locally funded teaching positions, junior high school. |
teachers_loc_shs |
integer | 7,741 | Locally funded teaching positions, senior high school. |
teachers_es |
integer | 39,343 | Teaching positions, elementary, nationally and locally funded. |
teachers_jhs |
integer | 10,560 | Teaching positions, junior high school, nationally and locally funded. |
teachers_shs |
integer | 7,741 | Teaching positions, senior high school, nationally and locally funded. |
teachers_nat |
integer | 47,619 | Nationally funded teaching positions, all levels: teachers, master teachers, SPED/SNED and special science teachers and instructors (the personnel file’s position columns). |
teachers_loc |
integer | 47,817 | Locally funded teachers, all levels (LGU, PTA and other local funding). |
teachers_total |
integer | 47,817 | teachers_nat + teachers_loc. |
master_teachers |
integer | 23,813 | Master Teacher positions, all levels (nationally funded). |
school_heads |
integer | 47,817 | School principal, assistant school principal and head teacher positions, all levels. |
personnel_has_data |
boolean | 60,167 | True when any personnel column is filled; False for non-public schools, which the personnel file leaves blank. |
Facilities
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
rooms_es |
integer | 38,677 | Instructional classrooms, elementary. |
rooms_jhs |
integer | 10,561 | Instructional classrooms, junior high school. |
rooms_shs |
integer | 7,743 | Instructional classrooms, senior high school. |
rooms_total |
integer | 47,210 | Instructional classrooms, all levels. |
rooms_noninstr_total |
integer | 35,585 | Non-instructional rooms, all levels. |
buildings_total |
integer | 47,817 | School buildings in the inventory, all conditions. |
buildings_major_repair_or_worse |
integer | 47,817 | Buildings needing major repair, for condemnation or for demolition. |
buildings_bad_share |
number | 47,185 | buildings_major_repair_or_worse divided by buildings_total. |
makeshift_rooms |
integer | 47,817 | Makeshift rooms, elementary and high school. |
temporary_learning_spaces |
integer | 47,817 | Temporary learning spaces, elementary and high school. |
es_covered_court |
boolean | 39,345 | Whether the elementary site has a covered court (as reported; blank when not reported). |
hs_covered_court |
boolean | 10,819 | Whether the high school site has a covered court (as reported; blank when not reported). |
es_gymnasium |
boolean | 39,345 | Whether the elementary site has a gymnasium (as reported; blank when not reported). |
hs_gymnasium |
boolean | 10,819 | Whether the high school site has a gymnasium (as reported; blank when not reported). |
es_perimeter_fence_permanent |
boolean | 39,345 | Whether the elementary site has a permanent perimeter fence (as reported; blank when not reported). |
hs_perimeter_fence_permanent |
boolean | 10,819 | Whether the high school site has a permanent perimeter fence (as reported; blank when not reported). |
es_playground |
boolean | 39,345 | Whether the elementary site has a playground (as reported; blank when not reported). |
hs_playground |
boolean | 10,819 | Whether the high school site has a playground (as reported; blank when not reported). |
es_solar_panel |
boolean | 39,345 | Whether the elementary site has solar panels (as reported; blank when not reported). |
hs_solar_panel |
boolean | 10,819 | Whether the high school site has solar panels (as reported; blank when not reported). |
es_road_paved |
boolean | 2,347 | Whether the elementary site has a paved access road (as reported; blank when not reported). |
hs_road_paved |
boolean | 9,468 | Whether the high school site has a paved access road (as reported; blank when not reported). |
es_accessible_private_4wheel |
boolean | 2,347 | Whether the elementary site has access by private four-wheeled vehicle (as reported; blank when not reported). |
hs_accessible_private_4wheel |
boolean | 10,090 | Whether the high school site has access by private four-wheeled vehicle (as reported; blank when not reported). |
es_accessible_boat |
boolean | 2,347 | Whether the elementary site has access by boat (as reported; blank when not reported). |
hs_accessible_boat |
boolean | 3,108 | Whether the high school site has access by boat (as reported; blank when not reported). |
es_accessible_walking_hiking |
boolean | 2,347 | Whether the elementary site has access only by walking or hiking (as reported; blank when not reported). |
hs_accessible_walking_hiking |
boolean | 9,962 | Whether the high school site has access only by walking or hiking (as reported; blank when not reported). |
facilities_has_data |
boolean | 60,167 | True when any facilities column is filled; False for non-public schools. |
WASH
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
toilets_es |
integer | 39,346 | Toilet bowls, elementary: attached and standalone, male, female, PWD and shared. |
toilets_nonfunc_es |
integer | 39,346 | Non-functional toilet bowls, elementary. |
handwash_func_es |
integer | 36,200 | Functional handwashing facilities (with or without soap), elementary, group and individual. |
handwash_soap_es |
integer | 34,974 | Functional handwashing facilities with soap, elementary, group and individual. |
water_es |
boolean | 39,343 | Whether the elementary level has a water supply. |
elec_grid_es |
boolean | 39,345 | Whether the elementary level has grid electricity. |
elec_any_es |
boolean | 39,345 | Whether the elementary level has grid or off-grid electricity. |
internet_es |
boolean | 39,343 | Whether the elementary level has an internet connection. |
toilets_jhs |
integer | 10,561 | Toilet bowls, junior high school: attached and standalone, male, female, PWD and shared. |
toilets_nonfunc_jhs |
integer | 10,561 | Non-functional toilet bowls, junior high school. |
handwash_func_jhs |
integer | 9,233 | Functional handwashing facilities (with or without soap), junior high school, group and individual. |
handwash_soap_jhs |
integer | 8,498 | Functional handwashing facilities with soap, junior high school, group and individual. |
water_jhs |
boolean | 10,560 | Whether the junior high school level has a water supply. |
elec_grid_jhs |
boolean | 10,561 | Whether the junior high school level has grid electricity. |
elec_any_jhs |
boolean | 10,561 | Whether the junior high school level has grid or off-grid electricity. |
internet_jhs |
boolean | 10,560 | Whether the junior high school level has an internet connection. |
toilets_shs |
integer | 7,743 | Toilet bowls, senior high school: attached and standalone, male, female, PWD and shared. |
toilets_nonfunc_shs |
integer | 7,743 | Non-functional toilet bowls, senior high school. |
handwash_func_shs |
integer | 6,585 | Functional handwashing facilities (with or without soap), senior high school, group and individual. |
handwash_soap_shs |
integer | 6,002 | Functional handwashing facilities with soap, senior high school, group and individual. |
water_shs |
boolean | 7,741 | Whether the senior high school level has a water supply. |
elec_grid_shs |
boolean | 7,743 | Whether the senior high school level has grid electricity. |
elec_any_shs |
boolean | 7,743 | Whether the senior high school level has grid or off-grid electricity. |
internet_shs |
boolean | 7,741 | Whether the senior high school level has an internet connection. |
toilets_total |
integer | 47,818 | Toilet bowls, all levels: attached and standalone, male, female, PWD and shared. |
toilets_nonfunc_total |
integer | 47,818 | Non-functional toilet bowls, all levels. |
handwash_func_total |
integer | 44,186 | Functional handwashing facilities, all levels, group and individual, with or without soap. |
water_any |
boolean | 47,817 | True when any reporting level has a water supply. |
water_all |
boolean | 47,817 | True when every reporting level has a water supply. |
elec_any_any |
boolean | 47,817 | True when any reporting level has grid or off-grid electricity. |
elec_any_all |
boolean | 47,817 | True when every reporting level has grid or off-grid electricity. |
internet_any |
boolean | 47,817 | True when any reporting level has an internet connection. |
internet_all |
boolean | 47,817 | True when every reporting level has an internet connection. |
wash_has_data |
boolean | 60,167 | True when any WASH column is filled; False for non-public schools. |
ICT
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
comp_acad_es |
integer | 39,343 | Computers for academic use, elementary. |
comp_admin_es |
integer | 39,343 | Computers for administrative use, elementary. |
comp_acad_jhs |
integer | 10,560 | Computers for academic use, junior high school. |
comp_admin_jhs |
integer | 10,560 | Computers for administrative use, junior high school. |
comp_acad_shs |
integer | 7,741 | Computers for academic use, senior high school. |
comp_admin_shs |
integer | 7,741 | Computers for administrative use, senior high school. |
comp_acad_total |
integer | 47,817 | Computers for academic use, all levels: desktops, laptops, all-in-ones, tablets, tablet PCs and virtual terminals, as reported (see comp_acad_w for the capped version). |
comp_admin_total |
integer | 47,817 | Computers for administrative use, all levels. |
comp_acad_dcp |
integer | 47,817 | Academic computers provided through the DepEd Computerization Program. |
projector_total |
integer | 47,817 | Projectors, all levels. |
smart_tv_total |
integer | 47,817 | Smart TVs, all levels. |
led_tv_total |
integer | 47,817 | LED TVs, all levels. |
printer_total |
integer | 47,817 | Printers, all levels. |
router_total |
integer | 47,817 | Routers, all levels. |
ict_has_data |
boolean | 60,167 | True when any ICT column is filled; False for non-public schools. |
Assessment: NAT
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
nat_n_test_takers |
integer | 6,636 | Grade 6 learners tested in the SY 2023-24 National Achievement Test (a sample, median six per school). |
nat_filipino_mps |
number | 6,636 | School mean percentage score in Filipino, Grade 6 NAT SY 2023-24 (0 to 100). |
nat_math_mps |
number | 6,636 | School mean percentage score in Mathematics, Grade 6 NAT SY 2023-24 (0 to 100). |
nat_english_mps |
number | 6,636 | School mean percentage score in English, Grade 6 NAT SY 2023-24 (0 to 100). |
nat_science_mps |
number | 6,636 | School mean percentage score in Science, Grade 6 NAT SY 2023-24 (0 to 100). |
nat_araling_panlipunan_mps |
number | 6,636 | School mean percentage score in Araling Panlipunan, Grade 6 NAT SY 2023-24 (0 to 100). |
nat_overall_mps |
number | 6,636 | School mean percentage score, NAT Grade 6 SY 2023-24, all subjects. |
Assessment: ELLNA
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
ellna_language |
text | 5,752 | Language group of the school in the ELLNA file (technical-notes spelling). |
ellna_n_test_takers |
integer | 5,752 | Grade 3 learners tested in the SY 2023-24 ELLNA. |
ellna_english_mps |
number | 5,752 | School mean percentage score in English, Grade 3 ELLNA SY 2023-24 (0 to 100); blank where the component was not administered to the school’s language group. |
ellna_filipino_mps |
number | 5,752 | School mean percentage score in Filipino, Grade 3 ELLNA SY 2023-24 (0 to 100); blank where the component was not administered to the school’s language group. |
ellna_numeracy_mps |
number | 5,598 | School mean percentage score in Numeracy, Grade 3 ELLNA SY 2023-24 (0 to 100); blank where the component was not administered to the school’s language group. |
ellna_mother_tongue_mps |
number | 3,827 | School mean percentage score in Mother Tongue, Grade 3 ELLNA SY 2023-24 (0 to 100); blank where the component was not administered to the school’s language group. |
ellna_overall_mps |
number | 5,752 | School mean percentage score, ELLNA Grade 3 SY 2023-24, all components. |
Assessment: CRLA
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
crla_language |
text | 6,090 | Declared language of instruction in the CRLA file, mapped to the ELLNA spelling where both files name the same language. |
crla_n |
integer | 6,090 | Grade 1 to 3 learners assessed in the SY 2025-26 CRLA. |
crla_region |
text | 6,090 | Region as given in the CRLA file (SY 2025-26). |
crla_division |
text | 6,090 | Division as given in the CRLA file (SY 2025-26). |
crla_low_emerging_n |
integer | 6,090 | Assessed Grade 1 to 3 learners reading at Low Emerging, all grades and languages. |
crla_high_emerging_n |
integer | 6,090 | Assessed Grade 1 to 3 learners reading at High Emerging, all grades and languages. |
crla_developing_n |
integer | 6,090 | Assessed Grade 1 to 3 learners reading at Developing, all grades and languages. |
crla_transitioning_n |
integer | 6,090 | Assessed Grade 1 to 3 learners reading at Transitioning, all grades and languages. |
crla_at_grade_level_n |
integer | 6,090 | Assessed Grade 1 to 3 learners reading at At Grade Level, all grades and languages. |
crla_at_grade_share |
number | 6,090 | Share of assessed learners reading At Grade Level, as a proportion from 0 to 1 (the source’s *_percent column). |
crla_low_emerging_share |
number | 6,090 | Share of assessed learners at Low Emerging, as a proportion from 0 to 1. |
crla_g1_mt_n |
integer | 6,090 | Grade 1 learners assessed in Mother Tongue. |
crla_g1_mt_at_grade_n |
integer | 6,090 | Grade 1 learners reading At Grade Level in Mother Tongue. |
crla_g1_mt_low_emerging_n |
integer | 6,090 | Grade 1 learners reading at Low Emerging in Mother Tongue. |
crla_g2_mt_n |
integer | 6,090 | Grade 2 learners assessed in Mother Tongue. |
crla_g2_mt_at_grade_n |
integer | 6,090 | Grade 2 learners reading At Grade Level in Mother Tongue. |
crla_g2_mt_low_emerging_n |
integer | 6,090 | Grade 2 learners reading at Low Emerging in Mother Tongue. |
crla_g2_fil_n |
integer | 6,090 | Grade 2 learners assessed in Filipino. |
crla_g2_fil_at_grade_n |
integer | 6,090 | Grade 2 learners reading At Grade Level in Filipino. |
crla_g2_fil_low_emerging_n |
integer | 6,090 | Grade 2 learners reading at Low Emerging in Filipino. |
crla_g3_mt_n |
integer | 6,090 | Grade 3 learners assessed in Mother Tongue. |
crla_g3_mt_at_grade_n |
integer | 6,090 | Grade 3 learners reading At Grade Level in Mother Tongue. |
crla_g3_mt_low_emerging_n |
integer | 6,090 | Grade 3 learners reading at Low Emerging in Mother Tongue. |
crla_g3_fil_n |
integer | 6,090 | Grade 3 learners assessed in Filipino. |
crla_g3_fil_at_grade_n |
integer | 6,090 | Grade 3 learners reading At Grade Level in Filipino. |
crla_g3_fil_low_emerging_n |
integer | 6,090 | Grade 3 learners reading at Low Emerging in Filipino. |
crla_g3_eng_n |
integer | 6,090 | Grade 3 learners assessed in English. |
crla_g3_eng_at_grade_n |
integer | 6,090 | Grade 3 learners reading At Grade Level in English. |
crla_g3_eng_low_emerging_n |
integer | 6,090 | Grade 3 learners reading at Low Emerging in English. |
Assessment coverage
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
in_nat |
boolean | 60,167 | True when the school has a NAT result. |
in_ellna |
boolean | 60,167 | True when the school has an ELLNA result. |
in_crla |
boolean | 60,167 | True when the school has a CRLA result. |
in_five_regions |
boolean | 60,167 | True when the school’s region is one of the five the assessments cover (CAR, I, III, VIII, IX). |
in_covered_division |
boolean | 60,167 | True when the school’s division is one of the 44 with assessment results. |
Derived indicators
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
nat_band |
text | 6,636 | Technical-notes proficiency band of the school’s NAT mean: Not Proficient (0-24), Low Proficient (25-49), Nearly Proficient (50-74), Proficient (75-89), Highly Proficient (90-100). |
ellna_band |
text | 5,752 | Technical-notes proficiency band of the school’s ELLNA mean (same cut-offs as nat_band). |
nat_proficient_school |
boolean | 6,636 | True when the school’s NAT overall mean is 75 or higher. |
ellna_proficient_school |
boolean | 5,752 | True when the school’s ELLNA overall mean is 75 or higher. |
ptr |
number | 47,674 | Pupil-teacher ratio: enrol_total / teachers_total, public schools with learners and at least one teacher; blank otherwise. |
ptr_es |
number | 39,334 | Elementary pupil-teacher ratio: enrol_es / teachers_es, public schools offering elementary. |
pcr |
number | 46,939 | Pupil-classroom ratio: enrol_total / rooms_total, public schools with learners and at least one instructional classroom. |
pcr_es |
number | 38,674 | Elementary pupil-classroom ratio: enrol_es / rooms_es. |
ltr |
number | 46,454 | Learner-toilet ratio: enrol_total / toilets_total, public schools with learners and at least one toilet bowl. |
ltr_es |
number | 38,162 | Elementary learner-toilet ratio: enrol_es / toilets_es. |
no_functional_toilet |
boolean | 47,818 | True when a public school reports zero toilet bowls. |
handwash_per_100 |
number | 44,186 | Functional handwashing facilities per 100 learners, public schools. |
comp_acad_w |
integer | 47,817 | comp_acad_total winsorised (capped) at the public-school 99th percentile, to limit obvious entry errors. |
computers_per_100 |
number | 47,813 | comp_acad_w per 100 learners, public schools. |
clr |
number | 36,040 | Computer-learner ratio: enrol_total / comp_acad_w, public schools with learners and at least one academic computer. |
has_academic_computer |
boolean | 47,817 | True when a public school reports at least one academic computer. |
log_enrol |
number | 60,052 | Natural logarithm of enrol_total (schools with learners). |
teachers_outnumber_learners |
boolean | 47,818 | True when a public school reports more teachers than learners (an implausible value flagged by the audit). |
computers_outnumber_learners |
boolean | 47,818 | True when a public school reports more academic computers than learners (flagged by the audit). |
Enrollment panel, SY 2017-18 to SY 2025-26
This file has one row per school for each school year in which it appears: 547,425 rows. Each row holds enrollment by grade, level, sex, and senior-high strand, with harmonized labels, constant-boundary regions, and entry, exit, and year-on-year columns. The CSV is split by school year; the Parquet file holds all nine years. A school-year is one row, so a school present in every year has nine rows.
Identification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
school_id |
integer | 547,425 | DepEd six-digit school identifier, as published; unique within each file and the key for joining files. A minority of schools change ID between years (see likely_id_changes.csv). |
school_name |
text | 547,425 | Official school name as published for that school year. |
Geography
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
region |
text | 547,425 | Region label as published for that school year (ARMM becomes BARMM from SY 2019-20; NIR appears from SY 2024-25). |
region_const |
text | 547,425 | Region under SY 2025-26 boundaries, for constant-boundary comparisons across years: ARMM and Cotabato City to BARMM, the 21 Negros Island Region divisions to NIR, Sulu to Region IX. |
division |
text | 547,425 | Schools division as published, with renames mapped to the current name (for example Compostela Valley to Davao De Oro). Division names are not unique nationally; combine with region. |
province |
text | 547,425 | Province; ‘PSO’ for Philippine Schools Overseas. |
school_district |
text | 485,862 | School district; the overseas city for Philippine Schools Overseas. Blank in SY 2017-18, when the variable did not exist. |
legislative_district |
text | 547,425 | Legislative district. |
municipality |
text | 547,425 | Municipality or city. |
barangay |
text | 542,833 | Barangay. |
Classification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
sector |
text | 547,425 | Public, Private, SUC/LUC (state or local university or college) or PSO (Philippine School Overseas). SY 2025-26’s ‘SUCsLUCs’ is mapped to ‘SUC/LUC’. |
school_management |
text | 547,425 | Management type as published, harmonised to one label set: DepEd, Local Government, SUC, LUC, DOST, Other GA, Sectarian, Non-Sectarian, International School, PSO, Tahderiyyah (SY 2018-19 only). |
annex_status |
text | 423,946 | Standalone School, Mother School, Annex/Extension School or Mobile School/Center; blank before SY 2019-20. SY 2025-26’s labels are mapped to these. |
offers_es |
boolean | 547,425 | True when the school offers elementary (Kindergarten to Grade 6); SY 2025-26’s Yes/No mapped to True/False. |
offers_jhs |
boolean | 547,425 | True when the school offers junior high school (Grades 7 to 10). |
offers_shs |
boolean | 547,425 | True when the school offers senior high school (Grades 11 and 12). |
coc_2025 |
text | 60,204 | Modified Curricular Offering Classification, published only in SY 2025-26. |
Time
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
sy |
integer | 547,425 | School year start: 2017 means SY 2017-18. |
sy_label |
text | 547,425 | School year as text, for example ‘SY 2017-18’. |
Enrollment
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
enrol_total |
integer | 547,379 | Total enrollment, Kindergarten to Grade 12 including non-graded learners: the sum of every sex-by-grade cell in the source file. |
enrol_es |
integer | 547,379 | Elementary enrollment: Kindergarten, Grades 1 to 6 and elementary non-graded. |
enrol_jhs |
integer | 547,379 | Junior high school enrollment: Grades 7 to 10 and junior high non-graded. |
enrol_shs |
integer | 547,379 | Senior high school enrollment: Grades 11 and 12, all strands. |
enrol_k |
integer | 547,385 | Kindergarten enrollment, both sexes. |
enrol_g1 |
integer | 547,385 | Grade 1 enrollment, both sexes. |
enrol_g2 |
integer | 547,385 | Grade 2 enrollment, both sexes. |
enrol_g3 |
integer | 547,385 | Grade 3 enrollment, both sexes. |
enrol_g4 |
integer | 547,385 | Grade 4 enrollment, both sexes. |
enrol_g5 |
integer | 547,385 | Grade 5 enrollment, both sexes. |
enrol_g6 |
integer | 547,385 | Grade 6 enrollment, both sexes. |
enrol_g7 |
integer | 547,396 | Grade 7 enrollment, both sexes. |
enrol_g8 |
integer | 547,396 | Grade 8 enrollment, both sexes. |
enrol_g9 |
integer | 547,396 | Grade 9 enrollment, both sexes. |
enrol_g10 |
integer | 547,396 | Grade 10 enrollment, both sexes. |
enrol_g11 |
integer | 547,305 | Grade 11 enrollment, both sexes. |
enrol_g12 |
integer | 547,305 | Grade 12 enrollment, both sexes. |
enrol_esng |
integer | 547,385 | Elementary non-graded learners. |
enrol_jhsng |
integer | 532,296 | Junior high non-graded learners; blank in SY 2018-19, when the variable did not exist. |
enrol_male |
integer | 547,379 | Male learners, all grades. |
enrol_female |
integer | 547,379 | Female learners, all grades. |
enrol_es_male |
integer | 547,388 | Male learners, elementary. |
enrol_es_female |
integer | 547,388 | Female learners, elementary. |
enrol_jhs_male |
integer | 547,412 | Male learners, junior high school. |
enrol_jhs_female |
integer | 547,412 | Female learners, junior high school. |
enrol_shs_male |
integer | 547,414 | Male learners, senior high school. |
enrol_shs_female |
integer | 547,414 | Female learners, senior high school. |
shs_abm |
integer | 547,305 | Senior high enrollment in Accountancy, Business and Management (ABM), Grades 11 and 12, both sexes. |
shs_arts |
integer | 547,305 | Senior high enrollment in Arts and Design, Grades 11 and 12, both sexes. |
shs_gas |
integer | 547,305 | Senior high enrollment in General Academic Strand (GAS), Grades 11 and 12, both sexes. |
shs_humss |
integer | 547,305 | Senior high enrollment in Humanities and Social Sciences (HUMSS), Grades 11 and 12, both sexes. |
shs_maritime |
integer | 547,305 | Senior high enrollment in Maritime, Grades 11 and 12, both sexes. |
shs_sports |
integer | 547,305 | Senior high enrollment in Sports, Grades 11 and 12, both sexes. |
shs_stem |
integer | 547,305 | Senior high enrollment in Science, Technology, Engineering and Mathematics (STEM), Grades 11 and 12, both sexes. |
shs_tvl |
integer | 547,305 | Senior high enrollment in Technical-Vocational-Livelihood (TVL), Grades 11 and 12, both sexes. |
shs_unique |
integer | 461,694 | Senior high learners in unique or other programs; reported from SY 2024-25. |
shs_sshs_acad |
integer | 60,084 | Special senior high school academic programs; reported from SY 2025-26. |
shs_sshs_techpro |
integer | 60,084 | Special senior high school technical-professional programs; reported from SY 2025-26. |
Data quality
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
enrol_missing |
boolean | 547,425 | True when the school left every grade cell blank that year (46 schools in SY 2025-26): its enrollment columns are blank, not zero. |
Panel
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
present |
boolean | 547,425 | True: the school appears in this year’s enrollment file (every row of this long file). |
first_sy |
integer | 547,425 | First school year (start year) in which the school ID appears, SY 2017-18 to SY 2025-26. |
last_sy |
integer | 547,425 | Last school year (start year) in which the school ID appears. |
n_gap_years |
integer | 547,425 | Years between first_sy and last_sy in which the school ID is absent (temporary non-reporting). |
present_prev_year |
boolean | 547,425 | True when the school ID appears in the previous school year’s file. |
present_next_year |
boolean | 547,425 | True when the school ID appears in the next school year’s file. |
is_entry |
boolean | 547,425 | True when the school ID is absent in the previous year (not computed for SY 2017-18). |
is_exit |
boolean | 547,425 | True when the school ID is absent in the next year (not computed for SY 2025-26). |
enrol_total_prev |
integer | 480,458 | enrol_total in the school’s previous row (its previous year present). |
sy_prev |
integer | 480,458 | School year of the previous row. |
yoy_growth |
number | 478,992 | enrol_total / enrol_total_prev - 1, only when the previous row is the immediately preceding year; blank otherwise. |
School spine
This file has one row per school ID ever observed in the nine enrollment files: 66,967 IDs. Each row holds the first and last year, gaps, entry and exit flags, and the sector and location in the last year present. Use it to pick a balanced panel (present_all_years) or to see when a school entered or left the files.
Identification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
school_id |
integer | 66,967 | DepEd six-digit school identifier, as published; unique within each file and the key for joining files. A minority of schools change ID between years (see likely_id_changes.csv). |
school_name_last |
text | 66,967 | School name in the school’s last year present. |
Panel
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
first_sy |
integer | 66,967 | First school year (start year) in which the school ID appears. |
last_sy |
integer | 66,967 | Last school year (start year) in which the school ID appears. |
n_years_present |
integer | 66,967 | Number of school years (of nine) in which the school ID appears. |
n_gap_years |
integer | 66,967 | Years between first_sy and last_sy in which the ID is absent. |
present_all_years |
boolean | 66,967 | True when the ID appears in all nine years. |
entered_after_2017 |
boolean | 66,967 | True when first_sy is later than 2017. |
exited_before_2025 |
boolean | 66,967 | True when last_sy is earlier than 2025. |
re_entered |
boolean | 66,967 | True when the ID is absent in some year between first_sy and last_sy and reappears. |
present_2017 |
boolean | 66,967 | True when the school ID appears in SY 2017-18. |
present_2018 |
boolean | 66,967 | True when the school ID appears in SY 2018-19. |
present_2019 |
boolean | 66,967 | True when the school ID appears in SY 2019-20. |
present_2020 |
boolean | 66,967 | True when the school ID appears in SY 2020-21. |
present_2021 |
boolean | 66,967 | True when the school ID appears in SY 2021-22. |
present_2022 |
boolean | 66,967 | True when the school ID appears in SY 2022-23. |
present_2023 |
boolean | 66,967 | True when the school ID appears in SY 2023-24. |
present_2024 |
boolean | 66,967 | True when the school ID appears in SY 2024-25. |
present_2025 |
boolean | 66,967 | True when the school ID appears in SY 2025-26. |
Classification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
sector_first |
text | 66,967 | Sector in the school’s first year present. |
sector_last |
text | 66,967 | Sector in the school’s last year present. |
sector_changed |
text | 66,967 | True when sector_first differs from sector_last. |
Geography
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
region_const_last |
text | 66,967 | region_const in the school’s last year present. |
division_last |
text | 66,967 | Division in the school’s last year present. |
CRLA reading levels, SY 2025-26
This file has one row per assessed school: 6,121 schools. Each row holds the learners at each CRLA reading level by grade and language, the school-level shares as proportions, and the SY 2025-26 Grade 1 to 3 enrollment. The source README calls the share columns percentages; they are proportions from 0 to 1 and are released as such.
Identification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
school_id |
integer | 6,121 | DepEd six-digit school identifier, as published; unique within each file and the key for joining files. A minority of schools change ID between years (see likely_id_changes.csv). |
Assessment: CRLA
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
crla_language |
text | 6,121 | Declared language of instruction in the CRLA file, mapped to the ELLNA spelling where both files name the same language. |
crla_n |
integer | 6,121 | Grade 1 to 3 learners assessed in the SY 2025-26 CRLA. |
crla_region |
text | 6,121 | Region as given in the CRLA file (SY 2025-26). |
crla_division |
text | 6,121 | Division as given in the CRLA file (SY 2025-26). |
crla_low_emerging_n |
integer | 6,121 | Assessed Grade 1 to 3 learners reading at Low Emerging, all grades and languages. |
crla_high_emerging_n |
integer | 6,121 | Assessed Grade 1 to 3 learners reading at High Emerging, all grades and languages. |
crla_developing_n |
integer | 6,121 | Assessed Grade 1 to 3 learners reading at Developing, all grades and languages. |
crla_transitioning_n |
integer | 6,121 | Assessed Grade 1 to 3 learners reading at Transitioning, all grades and languages. |
crla_at_grade_level_n |
integer | 6,121 | Assessed Grade 1 to 3 learners reading at At Grade Level, all grades and languages. |
crla_at_grade_share |
number | 6,121 | Share of assessed learners reading At Grade Level, as a proportion from 0 to 1 (the source’s *_percent column). |
crla_low_emerging_share |
number | 6,121 | Share of assessed learners at Low Emerging, as a proportion from 0 to 1. |
crla_g1_mt_n |
integer | 6,121 | Grade 1 learners assessed in Mother Tongue. |
crla_g1_mt_at_grade_n |
integer | 6,121 | Grade 1 learners reading At Grade Level in Mother Tongue. |
crla_g1_mt_low_emerging_n |
integer | 6,121 | Grade 1 learners reading at Low Emerging in Mother Tongue. |
crla_g2_mt_n |
integer | 6,121 | Grade 2 learners assessed in Mother Tongue. |
crla_g2_mt_at_grade_n |
integer | 6,121 | Grade 2 learners reading At Grade Level in Mother Tongue. |
crla_g2_mt_low_emerging_n |
integer | 6,121 | Grade 2 learners reading at Low Emerging in Mother Tongue. |
crla_g2_fil_n |
integer | 6,121 | Grade 2 learners assessed in Filipino. |
crla_g2_fil_at_grade_n |
integer | 6,121 | Grade 2 learners reading At Grade Level in Filipino. |
crla_g2_fil_low_emerging_n |
integer | 6,121 | Grade 2 learners reading at Low Emerging in Filipino. |
crla_g3_mt_n |
integer | 6,121 | Grade 3 learners assessed in Mother Tongue. |
crla_g3_mt_at_grade_n |
integer | 6,121 | Grade 3 learners reading At Grade Level in Mother Tongue. |
crla_g3_mt_low_emerging_n |
integer | 6,121 | Grade 3 learners reading at Low Emerging in Mother Tongue. |
crla_g3_fil_n |
integer | 6,121 | Grade 3 learners assessed in Filipino. |
crla_g3_fil_at_grade_n |
integer | 6,121 | Grade 3 learners reading At Grade Level in Filipino. |
crla_g3_fil_low_emerging_n |
integer | 6,121 | Grade 3 learners reading at Low Emerging in Filipino. |
crla_g3_eng_n |
integer | 6,121 | Grade 3 learners assessed in English. |
crla_g3_eng_at_grade_n |
integer | 6,121 | Grade 3 learners reading At Grade Level in English. |
crla_g3_eng_low_emerging_n |
integer | 6,121 | Grade 3 learners reading at Low Emerging in English. |
Geography
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
region_const |
text | 6,113 | Region under SY 2025-26 boundaries, for constant-boundary comparisons across years: ARMM and Cotabato City to BARMM, the 21 Negros Island Region divisions to NIR, Sulu to Region IX. |
Enrollment
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
enrol_g1to3_2025 |
integer | 6,113 | Grade 1 to 3 enrollment in SY 2025-26, from the enrollment file, as the denominator for coverage. |
Classification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
sector_2025 |
text | 6,113 | Sector in SY 2025-26. |
Shrunk NAT and ELLNA school means
This file has one row per school with a NAT or ELLNA result: 6,840 schools. Each row holds the published school mean, the number of test-takers, and the empirical-Bayes estimate shrunk toward the division mean, for any school-level use. A NAT school mean rests on a median of six sampled learners, so its 95 percent margin is about six points. The shrunk estimate pulls small-sample schools toward their division mean and is the one to use for any school-level comparison. The guide How to Read DepEd Data explains the method.
Identification
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
school_id |
integer | 6,840 | DepEd six-digit school identifier, as published; unique within each file and the key for joining files. A minority of schools change ID between years (see likely_id_changes.csv). |
Geography
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
div_key |
text | 6,840 | Division key as ’region |
Assessment: NAT
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
nat_overall_mps |
number | 6,636 | School mean percentage score, NAT Grade 6 SY 2023-24, all subjects. |
nat_n_test_takers |
integer | 6,636 | Grade 6 learners tested in the SY 2023-24 National Achievement Test (a sample, median six per school). |
Derived indicators
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
nat_overall_mps_shrunk |
number | 6,636 | Empirical-Bayes estimate of the school’s NAT mean: the school mean pulled toward its division mean with weight nat_shrink_weight. |
nat_shrink_weight |
number | 6,636 | Weight on the school’s own NAT mean, n / (n + sigma^2 / tau^2), with sigma^2 = 54 (within-school per-learner variance) and tau^2 = 146 (between-school variance). |
ellna_overall_mps_shrunk |
number | 5,752 | Empirical-Bayes estimate of the school’s ELLNA mean, shrunk toward its division mean with weight ellna_shrink_weight. |
ellna_shrink_weight |
number | 5,752 | Weight on the school’s own ELLNA mean, n / (n + sigma^2 / tau^2), with sigma^2 = 98 and tau^2 = 164. |
Assessment: ELLNA
| Column | Type | Non-blank rows | Description |
|---|---|---|---|
ellna_overall_mps |
number | 5,752 | School mean percentage score, ELLNA Grade 3 SY 2023-24, all components. |
ellna_n_test_takers |
integer | 5,752 | Grade 3 learners tested in the SY 2023-24 ELLNA. |
Helper tables
likely_id_changes.csv. This table lists 146 cases where a school that leaves the files reappears the next year under a new ID with the same name, municipality, and barangay. DepEd publishes no mapping, so the panel counts each as an exit plus an entry; this table lets you link them.
assessment_coverage_by_division.csv. For each of the 63 divisions in the five assessed regions, this table gives how many public schools with Grade 3 or Grade 6 learners have NAT, ELLNA, and CRLA results, and the share covered. Nineteen of the 63 divisions have no assessed schools.
Before you use the numbers
- Test results describe 44 divisions, not the country. State that in anything you publish. Do not compare NAT or ELLNA means across years, because the technical notes say difficulty is not equated.
- Do not rank schools on a six-learner mean. Use
school_assessment_shrunkand report the number of test-takers beside any school figure. - Ratios are undefined where the denominator is zero. 139 public schools report learners but no teachers, and 267 report no instructional classroom. Their
ptrandpcrare blank, not infinite. - Annex schools are separate rows. The technical notes compute pupil-teacher ratios with annexes merged into their mother schools; no mapping is published, so they are not merged here.
- Division names repeat. San Carlos City and San Fernando City each exist in two regions; group by region and division together.
- A school’s region can change. Use
region_constfor time series andregionto match a year’s published tables.
Education Data, Transparency and Research covers DepEd’s own rules for using its assessment data and what EDCOM II found about DepEd’s data systems.
Terms of use and citation
Two sets of terms apply to this release.
The data files. The five cleaned datasets and the two helper tables are built from DepEd’s public datasets, which DepEd publishes under its Terms of Use and Fair Use Policy. Those terms require anything built on DepEd’s data to be distributed under the same terms, and they do not allow added restrictions, so the data files are distributed under DepEd’s terms, not ours. If you use them:
- credit the Department of Education as the source of the data;
- do not suggest that DepEd is involved in, associated with, or endorses your work;
- follow DepEd’s guidelines on assessment data: do not compare test scores across school years, and do not rank schools;
- read DepEd’s full terms before you publish anything built on the files.
DepEd’s terms also say its materials may not be modified beyond editorial changes without its approval. The original DepEd files were never edited, and every change in this release is listed in the harmonization rules and the codebook. If DepEd asks us to change or withdraw the release, we will.
Our own work. The cleaning pipeline, the codebook, the harmonization rules, the README and this documentation are © 2026 Mark Anthony Llego, NASH Reviewer. All rights reserved. To reuse, republish or adapt any of them, email support@nash.com.ph for written permission first, saying who you are, what you want to use and how.
NASH Reviewer is not affiliated with DepEd.
Suggested citation:
Mark Anthony Llego (2026). Cleaned DepEd school-level datasets, SY 2017-18 to SY 2025-26 (version 1.0) [data set]. NASH Reviewer. https://nash.com.ph/blog/download-cleaned-deped-school-data. Source data: Department of Education (Philippines) public datasets.
If you find an error, send us a note through the contact page with the file, column, and school_id. Corrections go into the next version with a note here.
Versions
- 1.0 (2026-10-25). First release: five datasets, two helper tables, codebook, harmonization rules, checksums, and README. Built from the enrollment files for SY 2017-18 to SY 2025-26, the SY 2023-24 learner, personnel, facilities, ICT, and WASH files, the SY 2023-24 NAT and ELLNA files, and the SY 2025-26 CRLA file.
Frequently asked questions
Is this official DepEd data?
The figures are DepEd’s, from its publicly released datasets, but the cleaned files are not an official DepEd release. The cleaning, the harmonized labels, and the derived columns are ours and are documented column by column, so you can trace any value to the source file. For official figures, cite DepEd’s own releases.
Can I use these DepEd data files in a thesis, a report, or an app?
Yes, under DepEd’s terms of use: credit DepEd as the source, do not suggest DepEd’s involvement, and follow its rules on assessment data (no comparison of test scores across school years, no ranking of schools). Please also cite this release. To reuse our cleaning code, codebook or documentation, email support@nash.com.ph for permission first. The terms of use have the details.
Why are so many cells blank in the DepEd school data?
There are three reasons, and the codebook’s non-blank counts show which one applies. The variable may not apply to the school, such as a level it does not offer or a public-only module for a private school. The variable may not have existed that year, such as the shs_unique column (unique or other senior-high programs) before SY 2024-25 or districts in SY 2017-18. Or the school did not report, as 46 schools in SY 2025-26 did not. Blanks are never zeros.
Why are the files in both CSV and Parquet?
CSV opens anywhere but loses types and compresses less well. Parquet keeps integers, booleans, and text as they are, loads in seconds in pandas, R, or DuckDB, and is a third smaller. The values are identical.
How do I follow one DepEd school across school years?
Filter the enrollment panel on school_id, or start from the school spine, which has one row per ID with its first and last year. Check likely_id_changes.csv for the 146 schools that seem to have changed ID.
Can I rank schools by NAT score with these files?
No, not on the published means. Each rests on a median of six sampled learners, and a six-point difference is within noise. Use the shrunk means and show the number of test-takers. The guide How to Read DepEd Data explains why.
Will the cleaned DepEd data be updated?
Yes, when DepEd releases new files. We will rebuild the datasets as a new version folder and list the changes here. The pipeline that produced this release is deterministic, so the checksums above will reproduce.
More in this series
- DepEd Enrollment Trends SY 2017-2018 to SY 2025-2026
- Enrollment by school year: SY 2017-18, SY 2018-19, SY 2019-20, SY 2020-21, SY 2021-22, SY 2022-23, SY 2023-24, SY 2024-25, SY 2025-26
- DepEd Learner Data SY 2023-2024: IP, ALIVE and School Size
- DepEd Teachers and School Personnel Data, SY 2023-2024
- DepEd Classroom and School Building Data, SY 2023-2024
- DepEd WASH Data SY 2023-2024: Toilets, Water, Electricity
- DepEd ICT Data SY 2023-2024: Computers and Internet
- NAT Grade 6 Results SY 2023-2024: DepEd Division Scores
- ELLNA Grade 3 Results SY 2023-2024: DepEd Division Scores
- CRLA Results SY 2025-2026: Reading Levels in Grades 1 to 3
- DepEd School Inputs vs Test Results: Multigrade and Internet
- DepEd Open Data Quality: Errors, Blanks and Coverage Limits
- The full report: Philippine basic education in numbers
Guides for aspiring school heads
- DepEd Data for Aspiring School Heads: Where to Start
- NASH Practice Questions With Answers: 50 Items on the PPSSH
- How to Read DepEd Data: A Guide for Aspiring School Heads
- EDCOM II Final Report: Guide for Aspiring School Heads
- National Education Plan 2026-2035: Guide for School Heads
- NASH Study Guide: DepEd Memorandum 069, s. 2025 and PPSSH
- PPSSH Domain 1: Leading Strategically With DepEd Data
- PPSSH Domain 2: Managing School Operations With DepEd Data
- PPSSH Domain 3: Teaching and Learning With DepEd Data
- PPSSH Domain 4: Developing Self and Others With DepEd Data
- PPSSH Domain 5: Building Connections With DepEd Data
Data preparation and documentation by Mark Anthony Llego for NASH Reviewer. Charts in the series carry the same credit.