Student Attendance and Chronic Absenteeism
Student attendance tiers and chronic-absence rates by Georgia school, district, and demographic subgroup, 2004-2024.
- 2004–2024
- annual
- 1.2.0
- 9033e13d86bf
Overview
Distribution of Georgia public-school students across three absentee tiers (5 or fewer, 6-15, and more than 15 days absent during the school year), plus a chronic-absence rate (10% or more of enrolled days; published from 2018) and the student count in the denominator, for every school with official district and state rollups, by demographic subgroup (race/ethnicity, gender, economic status, English proficiency, migrant status, disability status). Published by GOSA for school years 2003-04 through 2023-24.
Row grain: One row per year, district_code, school_code, demographic.
chronically_absent_rate — Chronically Absent Rate (proportion)
The single headline value most answers want.
Variables
Every column in the fact table. The code is the exact field name the API returns.
| Column | Type | Unit | Range | Null? | Description |
|---|---|---|---|---|---|
year | integer | — | — | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24). 2011-2024 files carry a LONG_SCHOOL_YEAR cross-checked against the filename; 2004-2010 files carry no year column, so the filename year (verified as the ending year via year-over-year enrollment continuity) is authoritative.Full description▾Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24). 2011-2024 files carry a LONG_SCHOOL_YEAR cross-checked against the filename; 2004-2010 files carry no year column, so the filename year (verified as the ending year via year-over-year enrollment continuity) is authoritative. |
district_code | string | — | — | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes (present from 2010). NULL on state-level rows.Full description▾GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes (present from 2010). NULL on state-level rows. |
school_code | string | — | — | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). 2004-2010 sources publish unpadded codes ('103'), zero-padded here to align with 2011-2024. NULL on district- and state-level rows.Full description▾GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). 2004-2010 sources publish unpadded codes ('103'), zero-padded here to align with 2011-2024. NULL on district- and state-level rows. |
demographic | string | — | — | no | Student subgroup the row describes (race, gender, economic status, English learner, migrant, or disability); 'all' is every student.Full description▾Demographic subgroup (FK to the global demographics dimension); 15 subgroups in every year. Race buckets use the combined asian_pacific_islander key (pre-1997 OMB convention): the source publishes six race buckets with a bare 'Asian' label and never a separate Pacific Islander row, and the six buckets' state-level student counts sum exactly to the 'all' total in every year except 2013 (where they fall short by exactly 8 of 1.84M students — an unallocated-records artifact, not a dropped-Pacific-Islander population). 'all' is the unfiltered total and overlaps every other value; subgroups are mutually exclusive only within their own category (race, gender, economic, English proficiency, disability, migrant). 15 allowed values▾
|
num_students | integer | — | yes | Number of students in the subgroup used as the denominator for the rate metrics. What a published 0 means depends on the era, and only real zeros survive in gold: 2004-2010 — 0 is a real zero (the source publishes counts down to 1); 2011-2020 — the source published 0 for subgroups with fewer than 10 students (or none): the school-level minimum non-zero count is exactly 10 in every year from 2011 (1 in every year through 2010) and district counts up to 251 sit above all-zero school rows, so every 0 is NULLed as suppressed (§4b); 2021-2022 — sub-threshold cells are TFS, NULL; 2023-2024 — TFS is the suppressed 1-9 count (NULL) and an EMPTY cell is a zero-student subgroup, decoded to a real 0 (every empty count sits on a row whose rate cells are all empty, and on the complementary subgroups all minus sibling equals 0 for 100% of the testable empty cells — e.g. not_economically_disadvantaged at schools where every student is economically disadvantaged). Real zeros therefore exist in 2004-2010 and 2023-2024 only. Second §4b mask: in 2023 (5 rows) and 2024 (6 rows) the source published STUDENT_COUNT_FEMALE = 0 alongside non-zero published rates at tiny special-population schools (e.g. East DeKalb Special Education Center 2023: all=80, male=71, female reads 0) — a zero population cannot carry non-zero rates, so those counts are NULLed and the rates kept.Full description▾Number of students in the subgroup used as the denominator for the rate metrics. What a published 0 means depends on the era, and only real zeros survive in gold: 2004-2010 — 0 is a real zero (the source publishes counts down to 1); 2011-2020 — the source published 0 for subgroups with fewer than 10 students (or none): the school-level minimum non-zero count is exactly 10 in every year from 2011 (1 in every year through 2010) and district counts up to 251 sit above all-zero school rows, so every 0 is NULLed as suppressed (§4b); 2021-2022 — sub-threshold cells are TFS, NULL; 2023-2024 — TFS is the suppressed 1-9 count (NULL) and an EMPTY cell is a zero-student subgroup, decoded to a real 0 (every empty count sits on a row whose rate cells are all empty, and on the complementary subgroups all minus sibling equals 0 for 100% of the testable empty cells — e.g. not_economically_disadvantaged at schools where every student is economically disadvantaged). Real zeros therefore exist in 2004-2010 and 2023-2024 only. Second §4b mask: in 2023 (5 rows) and 2024 (6 rows) the source published STUDENT_COUNT_FEMALE = 0 alongside non-zero published rates at tiny special-population schools (e.g. East DeKalb Special Education Center 2023: all=80, male=71, female reads 0) — a zero population cannot carry non-zero rates, so those counts are NULLed and the rates kept. | |
five_or_fewer_days_absent_rate | number | — | yes | Proportion of the subgroup absent five or fewer days during the school year (0-1 scale; source publishes 0-100, divided by 100). Together with the 6-15 and over-15 tiers it partitions the subgroup population (sums to ~1.0). §4b mask: in 2005-2020 the source publishes 0 for all rate metrics when the subgroup's count reads 0 — a real empty subgroup in 2005-2010, a subgroup with fewer than 10 students (or none) in 2011-2020; those placeholder zeros are NULLed (rates of an empty or suppressed population are undefined; 2004 already publishes NULL there). 2023-2024 zero encoding: the source stopped printing 0 in the rate columns and writes TFS in a tier whose numerator is zero (no explicit 0 exists in any 2023-2024 rate column; on every row with a TFS tier the published tiers already sum to 100), so a 2023-2024 TFS rate cell is decoded to 0.0 — including on rows whose count is TFS (suppressed 1-9), where the rates are still published.Full description▾Proportion of the subgroup absent five or fewer days during the school year (0-1 scale; source publishes 0-100, divided by 100). Together with the 6-15 and over-15 tiers it partitions the subgroup population (sums to ~1.0). §4b mask: in 2005-2020 the source publishes 0 for all rate metrics when the subgroup's count reads 0 — a real empty subgroup in 2005-2010, a subgroup with fewer than 10 students (or none) in 2011-2020; those placeholder zeros are NULLed (rates of an empty or suppressed population are undefined; 2004 already publishes NULL there). 2023-2024 zero encoding: the source stopped printing 0 in the rate columns and writes TFS in a tier whose numerator is zero (no explicit 0 exists in any 2023-2024 rate column; on every row with a TFS tier the published tiers already sum to 100), so a 2023-2024 TFS rate cell is decoded to 0.0 — including on rows whose count is TFS (suppressed 1-9), where the rates are still published. | |
six_to_fifteen_days_absent_rate | number | — | yes | Proportion of the subgroup absent six to fifteen days during the school year (0-1 scale; source publishes 0-100, divided by 100). Middle tier of the three-tier partition. Zero-or-sub-threshold placeholder zeros NULLed in 2005-2020; 2023-2024 TFS rate cells decoded to 0.0 (see five_or_fewer_days_absent_rate).Full description▾Proportion of the subgroup absent six to fifteen days during the school year (0-1 scale; source publishes 0-100, divided by 100). Middle tier of the three-tier partition. Zero-or-sub-threshold placeholder zeros NULLed in 2005-2020; 2023-2024 TFS rate cells decoded to 0.0 (see five_or_fewer_days_absent_rate). | |
over_15_days_absent_rate | number | — | yes | Proportion of the subgroup absent more than fifteen days during the school year (0-1 scale; source publishes 0-100, divided by 100). Top tier of the three-tier partition; often used as a chronic-absenteeism proxy but distinct from chronically_absent_rate (different cutoff definitions). Zero-or-sub-threshold placeholder zeros NULLed in 2005-2020; 2023-2024 TFS rate cells decoded to 0.0 (see five_or_fewer_days_absent_rate).Full description▾Proportion of the subgroup absent more than fifteen days during the school year (0-1 scale; source publishes 0-100, divided by 100). Top tier of the three-tier partition; often used as a chronic-absenteeism proxy but distinct from chronically_absent_rate (different cutoff definitions). Zero-or-sub-threshold placeholder zeros NULLed in 2005-2020; 2023-2024 TFS rate cells decoded to 0.0 (see five_or_fewer_days_absent_rate). | |
chronically_absent_rate | number | — | yes | Share of the subgroup chronically absent (missing 10% or more of enrolled days), on a 0-1 scale; published from 2018.Full description▾Proportion of the subgroup chronically absent — absent 10% or more of enrolled days, the federal definition (0-1 scale; source publishes 0-100, divided by 100). Published 2018-2024 only: the column does not exist in the 2004-2010 and 2012-2017 sources, and the 2011 column's only non-null values are zero-or-sub-threshold placeholder zeros on count=0 rows (masked to NULL), so 2004-2017 is entirely NULL. In 2023-2024 the source writes TFS where no student in the subgroup was chronically absent (it prints no explicit 0 in the column; 1-student numerators such as 0.2% of 558 are published), so a 2023-2024 TFS cell is decoded to 0.0. NOT equal to over_15_days_absent_rate — the cutoffs differ (10% of enrolled days vs a fixed 15-day count). |
Filters
Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.
| Parameter | Kind | Allowed values | Notes |
|---|---|---|---|
year | year_exact | any value | — |
year_min | year_range | any value | — |
year_max | year_range | any value | — |
detail | detail | districtsschoolsstates | enum-enforced, default: schools |
district_code | foreign_key | any value | multi-value |
school_code | foreign_key | any value | multi-value |
demographic | foreign_key | 15 allowed values▾
| multi-value, enum-enforced |
district_type | dimension_attribute | 7 allowed values▾
| multi-value, enum-enforced |
school_level | dimension_attribute | elementarymiddlehighk12other | multi-value, enum-enforced |
locale | dimension_attribute | citysuburbtownrural | multi-value, enum-enforced |
demographic_category | dimension_attribute | 12 allowed values▾
| multi-value, enum-enforced |
Example requests
Run these against the base URL — they return live data.
All rows (first page), schools level
curl "https://georgiacivicdata.org/api/v1/education/attendance"schools data for 2024
curl "https://georgiacivicdata.org/api/v1/education/attendance?year=2024"One district (code 601), 2024
curl "https://georgiacivicdata.org/api/v1/education/attendance?district_code=601&year=2024&detail=districts"Download 2024 as CSV
curl "https://georgiacivicdata.org/api/v1/education/attendance?year=2024&format=csv"Notes & limitations
NULL handling
- Suppressed cells (too few students to report) are NULL, never zero.
- Zero is a real, reported value.
Limitations
Suppressed cells are NULL (not zero), and the suppression regime changes by era: 2004 publishes the student count but blanks the tier rates for subgroups with fewer than 10 students (and blanks some cells outright, up to state level); 2005-2010 publish every count and rate down to a single student (no suppression — a 0 count is a real zero); 2011-2020 publish 0 for the count and every rate when a subgroup has fewer than 10 students (or none) — those 0 counts are NULLed as suppressed, so num_students is NULL on roughly a fifth of rows in those years and sums of school counts fall short of the district count by the suppressed students; 2021-2022 use the TFS (too few students) literal on every cell of a suppressed row; 2023-2024 use TFS only for a suppressed 1-9 count (NULL) and for a rate whose numerator is zero (decoded to 0.0), while an empty cell marks a zero-student subgroup (num_students = 0, rates NULL). In 2011-2022 the count and the tier rates are always NULL together; in 2023-2024 a suppressed count sits under published rates, so 2023-2024 rates cannot be re-weighted by num_students where the count is NULL. Small-population subgroups (notably native_american and migrant) are therefore mostly NULL from 2011 on. Real zeros in num_students exist in 2004-2010 and 2023-2024 only; most suppressed cells in the complementary subgroups (e.g. not_economically_disadvantaged at schools where every student is economically disadvantaged) are structural zeros, but the source does not distinguish 0 from 1-9 in 2011-2022. chronically_absent_rate is NULL for every year before 2018. Rate metrics are NULL (masked) on every num_students = 0 row. State rows have NULL district_code and school_code; district rows have NULL school_code. The race axis uses the combined asian_pacific_islander bucket — not comparable row-for-row with split-convention topics without aggregating those topics' asian + pacific_islander rows at query time.