GeoPandas
Add support for geographic vector data to pandas dataframes
Repository Health
Technical Analysis
GeoPandas extends the pandas data-analysis library to work with geographic vector data. It introduces GeoSeries and GeoDataFrame types, subclasses of pandas’ Series and DataFrame, whose geometry columns hold shapely geometries and support spatial operations directly.
By combining pandas’ tabular tooling with shapely geometry operations, pyproj coordinate transforms, and pyogrio-based I/O, GeoPandas lets you read, write, join, analyze, and plot geospatial data using the same idioms you already use for regular dataframes. It is a NumFOCUS-sponsored project widely used across the scientific Python geospatial stack.
What You Get
GeoSeriesandGeoDataFrametypes that subclass pandas objects and carry a geometry column- Vectorized geometric operations (buffer, intersection, distance, area) powered by shapely
- Spatial joins and overlays plus R-tree spatial indexing for fast queries
- Reading and writing many vector formats (GeoJSON, Shapefile, GeoPackage, GeoParquet) via pyogrio
- Coordinate reference system management with pyproj and built-in plotting via matplotlib and interactive maps via folium
Common Use Cases
- Loading a Shapefile or GeoJSON into a dataframe and running spatial filters and joins
- Reprojecting geometries between coordinate reference systems
- Performing spatial joins to attach attributes based on location
- Producing choropleth maps and quick interactive visualizations of geographic data
Under The Hood
Architecture GeoPandas layers geometry onto pandas through an ExtensionArray (array.py) that stores shapely geometries, wrapped by GeoSeries (geoseries.py) and GeoDataFrame (geodataframe.py); a base.py mixin defines the geometric operations, sindex.py provides R-tree spatial indexing, io/ handles file and SQL I/O, and plotting.py/explore.py render static and interactive maps. Compatibility shims (_compat.py, _config.py) manage optional backends. Tech Stack Pure Python built on numpy>=2, pandas>=2.2, shapely>=2.1, pyproj>=3.7, and pyogrio>=0.8 for I/O, with a rich optional-dependency set (pyarrow, matplotlib, folium, SQLAlchemy/psycopg, scipy, mapclassify) enabling GeoParquet, plotting, interactive maps, and PostGIS access. Code Quality The project maintains an extensive tests/ suite plus a conftest.py and testing.py helpers, runs CI with coverage reporting on every push, and is a mature NumFOCUS-sponsored codebase with 260+ contributors and 2,000+ commits, reflecting strong engineering rigor. API Design By subclassing pandas types, GeoPandas reuses an API millions already know — geometry is just a column — so operations like .buffer(), .sjoin(), .to_crs(), and .plot() feel idiomatic, keeping the learning curve low for existing pandas users despite the depth of the underlying geospatial machinery.