bolster.data_sources.nisra.homelessness
Northern Ireland Homelessness Bulletin statistics.
Biannual homelessness statistics from the Department for Communities NI (DfC), sourced from Northern Ireland Housing Executive (NIHE) casework records. Covers homeless presentations, acceptances, and temporary accommodation placements, broken down by Local Government District (LGD).
Data is published approximately every six months (Apr–Sep and Oct–Mar periods), roughly three months after each period ends.
Note: This data is not available in the NISRA PxStat API. It is published directly by DfC as Excel workbooks.
- Publisher:
Department for Communities NI (DfC) / Northern Ireland Housing Executive (NIHE). Publication hub: https://www.communities-ni.gov.uk/articles/northern-ireland-homelessness-bulletin
- Coverage:
Biannual, 2018/19 to present. Geography: 11 Local Government Districts (LGDs) + NI total.
Example
>>> from bolster.data_sources.nisra import homelessness
>>> df = homelessness.get_latest_data(section='presentations')
>>> 'lgd' in df.columns
True
Attributes
Functions
Scrape the DfC hub page for the latest homelessness bulletin Excel URL. |
|
|
Parse the presentations-by-LGD sheet from a homelessness bulletin workbook. |
|
Parse the acceptances-by-LGD sheet from a homelessness bulletin workbook. |
|
Download and return the latest NI homelessness bulletin data. |
|
Validate a homelessness bulletin DataFrame. |
Module Contents
- bolster.data_sources.nisra.homelessness.get_latest_publication_url()[source]
Scrape the DfC hub page for the latest homelessness bulletin Excel URL.
Falls back to the hardcoded 2025/26 Oct–Mar edition URL if scraping fails.
- Returns:
Absolute URL of the Excel tables file.
- Return type:
Example
>>> url = get_latest_publication_url() >>> 'communities-ni.gov.uk' in url True
- bolster.data_sources.nisra.homelessness.parse_presentations(file_path)[source]
Parse the presentations-by-LGD sheet from a homelessness bulletin workbook.
- Parameters:
file_path (str | pathlib.Path) – Path to the downloaded Excel file.
- Returns:
year, period, lgd, presentations, rate_per_1000.
- Return type:
Long-format DataFrame with columns
Example
>>> df = parse_presentations('/tmp/homelessness.xlsx') >>> set(df.columns) >= {'year', 'period', 'lgd', 'presentations'} True
- bolster.data_sources.nisra.homelessness.parse_acceptances(file_path)[source]
Parse the acceptances-by-LGD sheet from a homelessness bulletin workbook.
- Parameters:
file_path (str | pathlib.Path) – Path to the downloaded Excel file.
- Returns:
year, period, lgd, acceptances, rate_per_1000.
- Return type:
Long-format DataFrame with columns
Example
>>> df = parse_acceptances('/tmp/homelessness.xlsx') >>> set(df.columns) >= {'year', 'period', 'lgd', 'acceptances'} True
- bolster.data_sources.nisra.homelessness.get_latest_data(section='presentations', force_refresh=False)[source]
Download and return the latest NI homelessness bulletin data.
- Parameters:
section (str) –
Which section to return: -
'presentations'(default): Households presenting as homelessby LGD and period.
'acceptances': Households accepted as homeless by LGD and period.'all': Both sections combined with a'section'column.
force_refresh (bool) – If
True, bypass the local cache and re-download.
- Returns:
year (str): Reporting year label (e.g.
'2025/26').period (str): Six-month period (e.g.
'Oct-Mar','Apr-Sep').lgd (str): Local Government District name, or
'Northern Ireland'for the NI-wide total.presentations (int): Households presenting as homeless.
rate_per_1000 (float): Presentations per 1,000 population.
For
section='acceptances','presentations'is replaced by'acceptances'. Forsection='all', both are included with a'section'column ('presentations'or'acceptances').- Return type:
Long-format DataFrame. For
section='presentations', columns are- Raises:
ValueError – If
sectionis not one of the accepted values.NISRADataNotFoundError – If the source file cannot be downloaded.
Example
>>> df = get_latest_data() >>> 'lgd' in df.columns True >>> 'Northern Ireland' in df['lgd'].values True
- bolster.data_sources.nisra.homelessness.validate_data(df, section='presentations')[source]
Validate a homelessness bulletin DataFrame.
- Parameters:
df (pandas.DataFrame) – DataFrame returned by
get_latest_data().section (str) –
'presentations'or'acceptances', used to identify the count column.
- Returns:
Trueif all checks pass.- Raises:
NISRAValidationError – If any check fails.
- Return type:
Example
>>> df = get_latest_data('presentations') >>> validate_data(df, 'presentations') True