Построение геопространственных данных с помощью GeoPandas
GeoPandas - это инструмент с открытым исходным кодом для добавления поддержки географических данных в объекты Pandas. В этой статье мы собираемся использовать GeoPandas и Matplotlib для построения геопространственных данных.
Установка
Мы собираемся установить GeoPandas, Matplotlib, NumPy и Pandas.
pip install geopandas pip install matplotlib pip install numpy pip install pandas
Примечание. Если вы не хотите устанавливать эти модули локально на свой компьютер, используйте Jupyter Notebook или Google Colab.
Начиная
Импорт модулей и набора данных
Мы собираемся импортировать Pandas для структуры данных фрейма данных, NumPy для некоторых математических функций, GeoPandas для поддержки и обработки геопространственных данных и Matplotlib для фактического построения карт.
импортировать панд как pd импортировать географические карты как gpd импортировать numpy как np импортировать matplotlib.pyplot как plt
GeoPandas предоставляет нам несколько наборов данных по умолчанию вместе со своей установкой, с которыми можно поиграть. Давайте прочитаем один из наборов данных.
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() |
Выход:

world.head ()
Some of the other datasets to play with are ‘naturalearth_cities’ and ‘nybb’. Feel free to experiment with them later. We can use world and plot the same using Matplotlib.
Python3
world.plot() |
Выход:

Мировой сюжет
Проанализировать наборы данных
Now, if we see world, we have a lot of fields. One of them is GDP estimate(or gdp_md_est). However, to show how easily data can be filtered in or out in pandas, let’s filter out all continents except Asia.
Python3
worldfiltered = world[world.continent = = "Asia" ] worldfiltered.plot(column = "gdp_md_est" , cmap = "Reds" ) |

GDP of Countries in Asia
Свойство cmap используется для отображения данных в указанном оттенке. Более темные оттенки означают более высокое значение, а более светлые оттенки - более низкое значение. Теперь давайте проанализируем данные для оценки численности населения ( pop_est ).
Python3
world.plot(column = "pop_est" ) |
Выход:

Оценка населения
The above image is not very good in conveying the data. So let’s change some properties to make it more comprehensible. First, let’s increase the size of the figure and then set an axis for it. We first plot the world map without any data to on the axis and then we overlay the plot with the data on it with the shade red. This way the map is more clear and dark and makes the data more understandable. However, this map is still a little vague and won’t tell us what the shades mean.
Python3
fig, ax = plt.subplots( 1 , figsize = ( 16 , 8 )) world.plot(ax = ax, color = "black" ) world.plot(ax = ax, column = "pop_est" , cmap = "Reds" ) |
Выход:

Мировое население
Давайте импортируем инструменты, которые позволяют нам делать разделители внутри сюжета. После этого мы построим график, как и раньше, но на этот раз добавим цвет лица. Свойство facecolor изменит цвет фона на установленный цвет (в данном случае голубой). Теперь нам нужно создать разделитель для создания цветовой рамки внутри графика, очень похожий на разделители в HTML. Мы создаем разделитель и устанавливаем его свойства, такие как размер, выравнивание и т. Д.
Then we need to create the color box in the divider we created. So obviously, the highest value in the color box is going to be the highest population in the dataset and the lowest value is going to be zero.
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() |
Выход:

Мировое население
Таким образом, в этой статье мы увидели, как мы можем использовать GeoPandas для получения геопространственных данных и их построения с помощью Matplotlib. Пользовательские наборы данных могут использоваться для анализа конкретных данных, а также могут использоваться данные по городу. Кроме того, GeoPandas можно использовать с Open Street Maps, которые предоставляют очень конкретные геопространственные данные (например, улицы, больницы в городе и т. Д.). Те же знания могут быть расширены и могут быть использованы для конкретного статистического анализа и анализа данных.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.