Создание карт с помощью Python: «Картографические карты» - часть 3

Карты хороплетов

Карта Choropleth - это тематическая карта, на которой области затенены или имеют узор пропорционально измерению статистической переменной, отображаемой на карте, например плотности населения или численности населения. доход на душу населения. Карта choropleth предоставляет простой способ визуализировать, как измерение изменяется в географической области или показывает уровень изменчивости в пределах региона. Ниже представлена ​​Choropleth-карта США с изображением населения на квадратную милю на штат.

Теперь давайте создадим нашу собственную карту мира, на которой будет изображена иммиграция из разных стран в Канаду.

Давайте сначала загрузим и импортируем наш основной набор данных иммиграционной службы Канады с помощью метода pandas read_excel (). Обычно, прежде чем мы сможем это сделать, нам нужно загрузить модуль, который pandas требует для чтения в файлах Excel. Это модуль xlrd. Для вашего удобства мы предварительно установили этот модуль, поэтому вам не о чем беспокоиться. В противном случае вам потребуется выполнить следующую строку кода для установки модуля xlrd:

!conda install -c anaconda xlrd — yes

Загрузите набор данных и считайте его во фрейм данных pandas:

df_can = pd.read_excel(‘https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.xlsx',
 sheet_name=’Canada by Citizenship’,
 skiprows=range(20),
 skipfooter=2)
print(‘Data downloaded and read into a dataframe!’)

Теперь давайте очистим данные. Мы внесем некоторые изменения в исходный набор данных, чтобы упростить создание наших визуализаций.

#clean up the dataset to remove unnecessary columns (eg. REG)
 
df_can.drop([‘AREA’,’REG’,’DEV’,’Type’,’Coverage’], axis=1, inplace=True)
# let’s rename the columns so that they make sense
df_can.rename(columns={‘OdName’:’Country’, ‘AreaName’:’Continent’,’RegName’:’Region’}, inplace=True)
# for sake of consistency, let’s also make all column labels of type string
df_can.columns = list(map(str, df_can.columns))
# add total column
df_can[‘Total’] = df_can.sum(axis=1)
# years that we will be using in this lesson — useful for plotting later on
years = list(map(str, range(1980, 2014)))
print (‘data dimensions:’, df_can.shape)

размеры данных: (195, 39)

Давайте посмотрим на первые пять элементов нашего очищенного фрейма данных.

Чтобы создать карту Choropleth, нам понадобится файл GeoJSON, который определяет области / границы штата, округа или страны, которые нас интересуют. В нашем случае , поскольку мы пытаемся создать карту мира, нам нужен GeoJSON, который определяет границы всех стран мира. Для вашего удобства мы предоставим вам этот файл, так что давайте скачаем его. Назовем его world_countries.json.

# download countries geojson file
!wget --quiet https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/world_countries.json -O world_countries.json
    
print('GeoJSON file downloaded!')

Теперь, когда у нас есть файл GeoJSON, давайте создадим карту мира с центром вокруг значений широты и долготы [0, 0] * с начальным уровнем масштабирования 2 и используя стиль Mapbox Brigh t.

world_geo = r'world_countries.json' # geojson file
# create a plain world map
world_map = folium.Map(location=[0, 0], zoom_start=2, tiles='Mapbox Bright')

А теперь для создания карты Choropleth мы будем использовать метод * choropleth * со следующими основными параметрами:

  1. geo_data, который представляет собой файл GeoJSON.
    2. data, который представляет собой фрейм данных, содержащий данные.
    3. столбцы, которые представляют столбцы во фрейме данных, которые будут использоваться для создания карты Choropleth.
    4. key_on, который является ключом или переменной в файле GeoJSON, содержащем имя интересующей переменной. Чтобы определить это, вам нужно будет открыть файл GeoJSON с помощью любого текстового редактора и запомнить имя ключа или переменной, которая содержит названия стран, поскольку страны являются нашей интересующей переменной. В этом случае имя - это ключ в файле GeoJSON, который содержит названия стран. Обратите внимание, что этот ключ имеет значение case_sensitive, поэтому вам нужно передать именно тот, который существует в файле GeoJSON.
# generate choropleth map using the total immigration of each country to Canada from 1980 to 2013
world_map.choropleth(
 geo_data=world_geo,
 data=df_can,
 columns=[‘Country’, ‘Total’],
 key_on=’feature.properties.name’,
 fill_color=’YlOrRd’, 
 fill_opacity=0.7, 
 line_opacity=0.2,
 legend_name=’Immigration to Canada’
)
# display map
world_map

Спасибо за чтение

Чтобы получить больше такого контента, нажмите здесь и подписывайтесь на меня.