Nairobi + Lagos · Free comparison collection
Two cities.
A wider perspective.
Compare the domains, explore the records, and take both synthetic city models into your next project.
Two synthetic city models.
Read the scope & sources ↗
Side by side
Find your point of comparison.
Domain coverage
| Domain | Nairobi Kenya | Lagos Nigeria |
|---|
Source field counts describe each original download. Samples from different domains are independently selected.
Matching definitions from the published synthetic city snapshot of 2 September 2026.
How to read these metrics
Values come from one dated extract. Older domain guides may show different figures. Counts can cover different histories; they are not population rates, observed city statistics or a ranking of city performance. Pending-regeneration values remain unavailable.
Inspect the original metrics JSON ↗Published model · 1940–2026
Watch two cities grow.
Play through 87 years of Nairobi and Lagos, or move the slider to compare a single year.
Both bars use the same fixed scale: 0–25 million people. Values come from the published population models, not observed counts or generated citizen record totals.
One collection. Both cities.
Ready to explore locally.
40 original CSV files, comparison metrics, model timelines and runnable Python + SQL.
Run the comparison in Python & SQL
Extract the ZIP and run this command in its folder. Python 3 is the only prerequisite; no packages, account or network connection are needed.
python compare.pyThe script verifies hashes and source values, then runs the supplied SQLite queries. It writes no files. Samples remain separate by city and domain.
SELECT domain, metric,
MAX(CASE WHEN city = 'nairobi' THEN value END) AS nairobi,
MAX(CASE WHEN city = 'lagos' THEN value END) AS lagos
FROM metrics
WHERE status = 'published'
GROUP BY domain, metric;Scope, sources & evidence
Nairobi and Lagos are the only cities included; they do not represent all of Africa or their countries. Source dates and original schemas travel with the downloads. The row total spans different record types and is not a count of people.
City IDs must remain distinct. Independently selected domain samples do not form a single connected population. Insurance's pending-regeneration zero is marked unavailable in the comparison. Record counts and structural checks do not establish empirical accuracy.

