GeoPandas: Análisis de datos geográficos en Python

En este artículo vamos a explicar qué es GeoPandas, cómo instalar la librería y qué operaciones podemos realizar con ella.

GeoPandas es una librería de Python de código abierto para trabajar con datos vectoriales. Como su nombre indica, extiende la popular librería de ciencia de datos pandas, al agregar soporte para datos geoespaciales.

Como indican en su web:

El objetivo de GeoPandas es facilitar el trabajo con datos geoespaciales en Python. Combina las capacidades de pandas y shapely […]. GeoPandas le permite realizar fácilmente operaciones en Python que, de otro modo, requerirían una base de datos espacial como PostGIS.

GeoPandas

Python es un lenguaje de programación genérico diseñado para crear multitud de aplicaciones diferentes y muy empleado en aprendizaje automático (machine learning) y deep learning como ya vimos en esta entrada.

Como hemos comentado, GeoPandas es un proyecto de código abierto que agrega soporte para datos geográficos a objetos pandas. Los objetos de GeoPandas pueden actuar sobre objetos shapely y realizar operaciones geométricas. Geopandas depende además de fiona para el acceso a archivos y matplotlib para trazar.

La estructura de datos central en GeoPandas es geopandas.GeoDataFrame, una subclase de pandas.DataFrame, que puede almacenar columnas geométricas y realizar operaciones espaciales.

geopandas.GeoSeries es una subclase de pandas.Series que maneja las geometrías. Por lo tanto, GeoDataFrame es una combinación de pandas.Series, con datos tradicionales (numéricos, booleanos, texto, etc.), y geopandas.GeoSeries, con geometrías (puntos, polígonos, etc.). Podemos almacenar tantas columnas de geometrías como deseemos; no existe el límite típico existente en el software GIS de escritorio.

geodataframe schema

Historia

Kelsey Jordahl fundó el proyecto en 2013 durante la Conferencia Scipy y lanzó una versión 0.1.0 en julio de 2014. En 2016, Joris Van den Bossche tomó la iniciativa y se convirtió en el mantenedor del proyecto. En 2020, se convirtió en Proyecto Afiliado de NumFOCUS y recibió dos pequeñas subvenciones.

¿Qué podemos hacer con GeoPandas?

Entre otras cosas podemos:

  • Leer y escribir datos espaciales de múltiples formatos.
  • Exportar datos a múltiples formatos.
  • Visualizar datos.
  • Medir áreas y distancias.
  • Crear nuevas geometrías como polígonos envolventes, buffer u obtener centroides.
  • También podemos analizar relaciones espaciales de diferentes geometrías.
  • Trabajar con proyecciones.
  • Realizar geocodificación (con geopy, como vimos en este artículo).
  • Agregar índices espaciales para acelerar las consultas y análisis espaciales.
  • Hacer mapas.

Instalación paso a paso

Instalar Anaconda

Para instalar GeoPandas y todas sus dependencias, recomendamos utilizar el administrador de paquetes conda. Esto se puede obtener instalando Anaconda Distribution (una distribución gratuita de Python para ciencia de datos), o mediante miniconda (distribución mínima que solo contiene Python y el administrador de paquetes conda).

Consulta los documentos de instalación para obtener más información sobre cómo instalar Anaconda o miniconda localmente.

La ventaja de usar el administrador de paquetes conda es que proporciona archivos binarios prediseñados con todas las dependencias requeridas y opcionales, para todas las plataformas (Windows, Mac, Linux).

Nosotros, para este tutorial hemos descargado desde aquí una distribución de Windows de Miniconda:

La hemos instalado de forma rápida dejando todas las opciones por defecto para evitar problemas.

Instalar Geopandas

Una vez instalado miniconda, podemos instalar la última versión de GeoPandas. Para ello debemos abrir Anaconda Prompt y escribir:

conda install geopandas

Se listarán los paquetes que se descargarán y que se instalarán. Tecleamos «y» para proceder con la instalación.

Para verificar que la instalación se ha realizado correctamente, podemos escribir conda list y se mostrará un listado de los paquetes que hemos instalado:

Dependencias

Las dependencias necesarias, que hemos instalado, son las siguientes:

Además, hay otras dependencias opcionales, como:

  • rtree (opcional, índice espacial para mejorar el rendimiento y necesario para operaciones de superposición).
  • psycopg2 (para conexiones con PostGIS).
  • GeoAlchemy2 (para escribir en PostGIS).
  • geopy (para geocodificar como hemos comentado anteriormente).

Para dibujar mapas, se pueden utilizar estos paquetes adicionales:

Comenzando a trabajar con GeoPandas

Una vez instalado y configurado podemos comenzar a trabajar. Este ejemplo utiliza el conjunto de datos «nybb», un mapa de los distritos de Nueva York, que es parte de la instalación de GeoPandas. Si has seguido los pasos anteriores deberías tener una carpeta «datasets» instalada.

Mediante geopandas.read_file () se detectará automáticamente el tipo de archivo y creará un GeoDataFrame. Por lo tanto, usamos geopandas.datasets.get_path () para recuperar la ruta al conjunto de datos.

import geopandas

path_to_data = geopandas.datasets.get_path("nybb")
gdf = geopandas.read_file(path_to_data)

gdf

Estas sentencias pueden escribirse en la consola de Anaconda, como mostramos a continuación:

Puedes continuar experimentando con GeoPandas siguiendo esta introducción.

El mejor sitio para comenzar a aprender Geopandas está en su documentación. Tiene excelentes tutoriales y guías de introducción junto con los documentos y cada guía incluye un Notebook que se puede abrir o descargar.

Si quieres aprender a trabajar con Geopandas, ahora puedes inscribirte a nuestro curso online de Análisis Geoespacial con Python: herramientas y aplicaciones.