EquiPop (Python)
k-nearest neighbour contexts/neighbourhoods on gridded and hexagonal data: bespoke neighbourhoods, friction-aware growth, distance decay, neighbourhood statistics and segregation measures - for very large datasets.
EquiPop finds, for every populated location, the k nearest individuals (by cumulative population count, expanding over a uniform grid) and reports the composition of that individualised neighbourhood. The gridded design means one pre-computed distance ordering serves every origin, which is what makes millions of locations feasible.
The EquiPop family
This is the first Python implementation. Its relatives: the original C# EquiPop (three generations, two public releases; radial and Flow models, downloadable via Uppsala University) and an R version covering I/O and the basic k-NN parts. This Python version additionally carries friction growth, five decay models, exact neighbourhood statistics (mean/median/SD/SE/Gini/entropy), segregation indices, hexagonal grids, area aggregation and metadata logging.
Install
pip install equipop # core
pip install equipop[geo,io,viz] # shapefiles/rasters, Excel/SPSS, maps
Quick start
import pandas as pd
from equipop import build_cells, run_knn_stats
df = pd.read_csv("individuals.csv") # one row per individual
cd = build_cells(df, e_col="X", n_col="Y",
binary_vars=["treated"], value_vars=["income"],
unit_size=100)
res = run_knn_stats(cd, k_values=[100, 400, 1600, 6400],
stats={"treated": ["ratio"],
"income": ["mean", "median", "gini"]})
For aggregated counts at national scale use the vectorised
run_knn_counts; for friction-constrained growth run_knn_friction;
for segregation profiles seg_profile; for policy-area reporting
aggregate_output; for quick maps map_output. See MANUAL_TOPICS.md.
Repository: https://github.com/GeoJohnSwe/EquiPop
Citing
Please cite the software and the methods you use - see CITATION.cff. Core reference: Östh (2014), Introducing the EquiPop software, Uppsala University. Segregation measures: Östh, Clark & Malmberg (2015), Geographical Analysis 47(1). Decay parameters: Östh, Lyhagen & Reggiani (2016), EJTIR 16(2). Friction growth: Östh & Türk (2020), Handbook of Urban Segregation. Decay profiles in application: Türk, Östh, Kourtit & Nijkamp (2026), Journal of Urban Mobility 9.
License
MIT. Attribution through citation is warmly requested (see above).
Metadata
Release files for equipop 1.60.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| equipop-1.60.2.tar.gz | 5.4 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| equipop-1.60.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.3 MB
Release files / equipop-1.60.2.tar.gz
| Download URL | equipop-1.60.2.tar.gz |
|---|---|
| Size | 5.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
edb0e09ed2c508b559c2635673303503596ac5437972292e287a77acd5f9871d
|
|
BLAKE2b-256 checksum How to use checksums |
f49bba140920263cd02d210317f47fdb69ae0d82b612c7b17b765d5927122143
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / equipop-1.60.2-py3-none-any.whl
| Download URL | equipop-1.60.2-py3-none-any.whl |
|---|---|
| Size | 2.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ae2afb727f32a0fd2e85f478e4f3d651f701b7887ec9e7dd750327dfbbdfecd9
|
|
BLAKE2b-256 checksum How to use checksums |
286f7fd23c253758e4e194ab70190ac55ab503811b067ac6d973393049c63314
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Security for equipop 1.60.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.