Вы можете использовать Geo pandas, который собирает много полезных геоинструментов:
import geopandas as gp
import geopy
import contextily as ctx
Сначала создайте геоданные с вашими данными:
data = {'Line Item': ["India_Tamil_display 5", "India_Tamil_display 5","Indonesia_Arabic_display 1","Indonesia_Arabic_display 1","Indonesia_Arabic_display 1"],
'Region': ["Puducherry", "Tamil Nadu", "Banten,Indonesia", "Central Java","East Java"],
'Impressions' :[43,56,23,56,98],
'Reach' : [32,45,12,43,76]
}
dfg = gp.GeoDataFrame(data)
Добавьте в GeoDataFrame a geometry столбец с использованием внутреннего инструмента геокодирования Geo pandas:
dfg['geometry'] = gp.tools.geocode(dfg.Region, provider='nominatim', user_agent="add-your-app-name-here").geometry
dfg.crs = "EPSG:4326"
dfg.head()
dfg.head ()
Наконец, нанесите карту, используя контекстно для добавления базовой карты:
dfg = dfg.to_crs(epsg=3857)
ax = dfg.plot(figsize=(16, 10), alpha=0.75, edgecolor='k', marker='o', color='red', markersize=dfg.Reach*5)
ctx.add_basemap(ax)
ax.set_axis_off()
Reach Map
Не стесняйтесь играть с Geo pandas, чтобы узнать, как добавлять слои и другие эстетики вашей карты.
Для больших наборов данных вы можете использовать Geopy RateLimiter , чтобы установить задержку запроса в секундах.