Skip to main content

tlf-census-stats

Census-specific statistical analysis for South and Southeast Asian countries — part of TLF ("The Living Facts").

Loads census data (CSV, Excel, or JSON) for a given country, normalizes it to a canonical schema via per-country column aliasing, and produces national totals, descriptive statistics, region-level aggregation, rankings, outlier detection, and HTML/PDF/CSV/JSON reports — either as a library or an interactive CLI.

Supports: Nepal, India, Bangladesh, Pakistan, Sri Lanka, Bhutan.


Install

pip install tlf-census-stats

Or from source, inside the TLF-Data-Analysis monorepo:

cd tlf-census-stats
pip install -e ".[dev]"

Canonical schema

Every country profile maps its own raw column names (e.g. Bangladesh's Division/District, Nepal's Province/District) onto this canonical shape:

Column Required? Notes
region Yes e.g. Division/Province/State
subregion Yes e.g. District
total_population Yes
male Yes
female Yes
households Yes
urban_population Optional
rural_population Optional
literacy_rate Optional
avg_household_size Optional
third_gender Optional A country's non-binary census category (e.g. Bangladesh's "Hijra"). Not every country publishes this.

A column-check is printed on every load, showing what was actually found vs. expected for that country.


Quickstart (Python API)

from tlf_census_stats import CensusLoader, StatsReporter

# Load and inspect
df = CensusLoader("bangladesh_census.xlsx", country="bangladesh").load()

# Or run the full report pipeline directly
reporter = StatsReporter("bangladesh_census.xlsx", country="bangladesh")
reporter.run()                          # prints national totals, descriptive
                                         # stats, region summary, rankings, outliers
reporter.export("report.html")          # or .csv / .json / .pdf — same content either way

Reading multiple Excel sheets

# Default: read every sheet, stack their rows into one DataFrame
df = CensusLoader("census.xlsx", country="bangladesh").load()

# Read just one/some sheets
df = CensusLoader("census.xlsx", country="bangladesh", sheet="Merged_All_Table").load()

# Combine several single-topic sheets side-by-side on a shared key,
# instead of stacking rows (use this when each sheet is a different
# topic — household counts, gender split, literacy — all keyed by the
# same District column)
df = CensusLoader("census.xlsx", country="bangladesh", merge_on="District").load()

CLI

tlf-census-stats --country bangladesh --data census.xlsx --export report.html

Run with no flags at all for a fully interactive walkthrough (file path → sheet selection → stack-vs-merge → export format):

tlf-census-stats

For unattended/scripted runs, --yes disables all prompting and fails loudly (rather than silently guessing) if something required is missing:

tlf-census-stats --yes --country nepal --data nepal_census.csv --export out.csv

Full flag list: tlf-census-stats --help


Combining with tlf-data-cleaning

Most census data doesn't start out clean — it's published as a PDF. tlf-data-cleaning (in the separate TLF-Data-Manager repo) handles extraction and cleaning; there's no runtime dependency between the two packages, they compose through the canonical CSV shape above. Three ways data reaches this package:

  1. Already-clean CSV/Excel/JSON — use CensusLoader directly, no other package needed.
  2. Flat-country PDF (Bangladesh, Pakistan, etc.) — tlf-data-cleaning's CleaningPipeline does the whole extract-and-clean step.
  3. India's hierarchical PDF — tlf-data-cleaning's PDFTableExtractor does raw extraction only; this package's IndiaCensusTransformer reshapes the nested INDIA → STATE → DISTRICT → SUB-DISTRICT structure into canonical rows (a generic rename/strip/coerce pipeline can't do this reshaping).

Full worked examples for all three: see tlf-data-cleaning's README.


Tests

pytest tests/ -v

tests/fixtures/ holds small, test-owned sample data (deliberately separate from the demo data bundled with the package itself, in tlf_census_stats/data/sample/, which backs the CLI's built-in --country nepal/bangladesh/india defaults).

The India PDF integration test (test_india_transformer.py) gracefully skips unless tlf-data-cleaning is installed alongside this package and its tests/fixtures/india_census_sample.pdf fixture is present at ../../tlf-data-cleaning/tests/fixtures/ — no cross-repo dependency is required for this package's own test suite to pass.

Release files for tlf-census-stats 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tlf-census-stats 0.1.4
File Size Uploaded
tlf_census_stats-0.1.4.tar.gz 35.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tlf-census-stats 0.1.4
File Interpreter ABI Platform
tlf_census_stats-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 69.5 kB

Release files / tlf_census_stats-0.1.4.tar.gz

Download URL tlf_census_stats-0.1.4.tar.gz
Size 35.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7ef722122cc6199fa72138a46fedc8f0df4019b6b02820241550214617638aa2
BLAKE2b-256 checksum
How to use checksums
d5222db1bef087bf49825f7eb79f01c3f9d168b345574f7f96534455699db817
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / tlf_census_stats-0.1.4-py3-none-any.whl

Download URL tlf_census_stats-0.1.4-py3-none-any.whl
Size 33.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
215ec20af9216a7434fa8f05caf140843d6c0aaffab611469f4c8c880dbbc1bc
BLAKE2b-256 checksum
How to use checksums
7ebfb1f66a95bf23eb13d731f55c75f9f44531af4900154f2efaf792d01d8269
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

0.1.5

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page