Trazado de datos geoespaciales usando GeoPandas

GeoPandas es una herramienta de código abierto para agregar soporte para datos geográficos a los objetos de Pandas. En este artículo, vamos a utilizar GeoPandas y Matplotlib para trazar datos geoespaciales.

Instalación

Vamos a instalar GeoPandas, Matplotlib, NumPy y Pandas.

pip install geopandas
pip install matplotlib
pip install numpy
pip install pandas

Nota: si no desea instalar estos módulos localmente en su computadora, use Jupyter Notebook o Google Colab.

Empezando

Importación de módulos y conjuntos de datos

Vamos a importar Pandas para la estructura de datos del marco de datos, NumPy para algunas funciones matemáticas, GeoPandas para admitir y manejar datos geoespaciales y Matplotlib para trazar los mapas.

import pandas as pd
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt

GeoPandas nos brinda algunos conjuntos de datos predeterminados junto con su instalación para jugar. Leamos uno de los conjuntos de datos.

Python3

import pandas as pd
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt
  
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world.head()

Producción:

mundo.cabeza()

Algunos de los otros conjuntos de datos para jugar son ‘naturalearth_cities’ y ‘nybb’. Siéntete libre de experimentar con ellos más tarde. Podemos usar world y trazar lo mismo usando Matplotlib.

Python3

world.plot()

Producción:

Trama mundial

Analizar los conjuntos de datos

Ahora, si vemos el mundo , tenemos muchos campos. Uno de ellos es la estimación del PIB (o gdp_md_est ). Sin embargo, para mostrar con qué facilidad se pueden filtrar los datos hacia adentro o hacia afuera en pandas, filtraremos todos los continentes excepto Asia. 

Python3

worldfiltered = world[world.continent == "Asia"]
worldfiltered.plot(column ='gdp_md_est', cmap ='Reds')

PIB de los países de Asia

La propiedad cmap se utiliza para trazar los datos en el tono especificado. Los tonos más oscuros significan un valor más alto, mientras que los tonos más claros significan un valor más bajo. Ahora, analicemos los datos para la estimación de población ( pop_est ).

Python3

world.plot(column ='pop_est')

Producción:

Estimación de población

La imagen de arriba no es muy buena para transmitir los datos. Así que cambiemos algunas propiedades para hacerlo más comprensible. Primero, aumentemos el tamaño de la figura y luego establezcamos un eje para ella. Primero trazamos el mapa del mundo sin ningún dato en el eje y luego superponemos el gráfico con los datos en él con la sombra roja. De esta forma, el mapa es más claro y oscuro y hace que los datos sean más comprensibles. Sin embargo, este mapa todavía es un poco vago y no nos dirá qué significan las sombras.

Python3

fig, ax = plt.subplots(1, figsize =(16, 8))
world.plot(ax = ax, color ='black')
world.plot(ax = ax, column ='pop_est', cmap ='Reds')

Producción:

Población mundial 

Importemos los kits de herramientas que nos permiten hacer divisores dentro de la parcela. Después de esto, vamos a trazar el gráfico como lo hicimos antes, pero esta vez vamos a agregar un color de cara. La propiedad facecolor va a cambiar el fondo a un color en el que está configurado (en este caso, azul claro). Ahora necesitamos crear un divisor para crear el cuadro de color dentro del gráfico, como los divisores en HTML. Estamos creando un divisor y configurando sus propiedades como tamaño, justificación, etc. 

Luego necesitamos crear el cuadro de color en el divisor que creamos. Entonces, obviamente, el valor más alto en el cuadro de color será la población más alta en el conjunto de datos y el valor más bajo será cero. 

Python3

from mpl_toolkits.axes_grid1 import make_axes_locatable
  
  
fig, ax = plt.subplots(1, figsize =(16, 8),
                       facecolor ='lightblue')
  
world.plot(ax = ax, color ='black')
world.plot(ax = ax, column ='pop_est', cmap ='Reds',
           edgecolors ='grey')
  
# axis for the color bar
div = make_axes_locatable(ax)
cax = div.append_axes("right", size ="3 %", pad = 0.05)
  
# color bar
vmax = world.pop_est.max()
mappable = plt.cm.ScalarMappable(cmap ='Reds',
                                 norm = plt.Normalize(vmin = 0, vmax = vmax))
cbar = fig.colorbar(mappable, cax)
  
ax.axis('off')
plt.show()

Producción:

Población mundial

Por lo tanto, en este artículo hemos visto cómo podemos usar GeoPandas para obtener datos geoespaciales y trazarlos usando Matplotlib. Los conjuntos de datos personalizados se pueden usar para analizar datos específicos y también se pueden usar datos de ciudades. Además, GeoPandas se puede usar con Open Street Maps, que proporciona datos geoespaciales muy específicos (por ejemplo, calles, hospitales en una ciudad, etc.). El mismo conocimiento se puede ampliar aún más y se puede utilizar para análisis estadísticos y de datos específicos. 

Publicación traducida automáticamente

Artículo escrito por rahulhegde97 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *