finds.dev← search

// the find

geopandas/geopandas

★ 5,149 · Python · BSD-3-Clause · updated Jun 2026

Python tools for geographic data

GeoPandas extends pandas with geometry types (GeoSeries, GeoDataFrame) backed by Shapely, letting you do spatial joins, CRS reprojections, overlays, and file I/O in a familiar DataFrame API. It's the default choice for geospatial data wrangling in Python — not flashy, but it does the job and has a decade of battle-testing behind it.

1. The pandas integration is genuine, not bolted-on: GeoDataFrame inherits from DataFrame, so groupby, merge, and the whole pandas ecosystem just work alongside spatial ops. 2. I/O coverage is wide — Shapefile, GeoJSON, GeoParquet, PostGIS, WKT/WKB, Arrow — and the switch from Fiona to pyogrio as the default backend meaningfully improved read/write performance. 3. CRS handling via pyproj is solid: `.to_crs()` works reliably, CRS metadata survives round-trips through file formats, and mixed-CRS operations raise errors rather than silently producing garbage. 4. The spatial index (STRtree via Shapely) is used automatically for sjoin and overlay, so joins on large datasets don't require manual optimization.

1. Installation is a genuine pain on non-conda environments — GDAL, GEOS, and PROJ version mismatches are a rite of passage, and pip installs still fail silently in some environments despite years of improvement. 2. Performance at scale is mediocre: everything runs in-process on a single core, so a sjoin on two 1M-row datasets will block your notebook for a while. Dask-GeoPandas exists but is a separate project and lags on feature parity. 3. The plotting API (via matplotlib) is functional but limited — you'll reach for folium or kepler.gl almost immediately for anything beyond quick sanity checks, yet the docs still lean on it heavily. 4. No enforcement of matching CRS between operands: a spatial join between WGS84 and a state-plane projection will run without warning and produce geometrically nonsense results.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →