GeoPandas

Add support for geographic vector data to pandas dataframes

Library
PyPI
v1.1.4
5,227stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
87/100Excellent
Development Activity84
Maintenance72
Community92
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
84/100Excellent
Architecture86
Code Quality85
Innovation82
Learning Curve70

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

  • GeoSeries and GeoDataFrame types 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.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search