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:
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:
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')
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:
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:
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:
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