Skip to content
Related Articles

Related Articles

Improve Article

Visualizing Geospatial Data using Folium in Python

  • Last Updated : 30 Jun, 2021

One of the most important tasks for someone working on datasets with countries, cities, etc. is to understand the relationships between their data’s physical location and their geographical context.  And one such way to visualize the data is using Folium.

Folium is a powerful data visualization library in Python that was built primarily to help people visualize geospatial data. With Folium, one can create a map of any location in the world. Folium is actually a python wrapper for leaflet.js which is a javascript library for plotting interactive maps.

We shall now see a simple way to plot and visualize geospatial data. We will use a dataset consisting of unemployment rates in the US

Installation

If folium is not installed, one can simply install it using  any one of the following commands: 

$ pip install folium

OR

$ conda install -c conda-forge folium

Using folium.Map(), we will create a base map and store it in an object. This function takes location coordinates and zoom values as arguments.



Syntax: folium.Map(location,tiles= “OpenStreetMap” zoom_start=4)

Parameters:

  • location: list of location coordinates
  • tiles: default is OpenStreetMap. Other options: tamen Terrain, Stamen Toner, Mapbox Bright etc.
  • zoom_start: int

Code:

Python3




# import the folium, pandas libraries
import folium
import pandas as pd
  
# initialize the map and store it in a m object
m = folium.Map(location = [40, -95],
               zoom_start = 4)
  
# show the map
m.save('my_map.html')

Output:

Import Dataset using pandas:

Now, we shall import the data sets using the Pandas library.

Python3




# getting the data
url = (
)
state_geo = f"{url}/us-states.json"
state_unemployment = f"{url}/US_Unemployment_Oct2012.csv"
state_data = pd.read_csv(state_unemployment)

Creating Map with Dataset:

Once we have all the data we have, we will visualize this data using choropleth maps. Chloropleth maps represent divided areas in various colors based on the statistical variable presented to them. Here, we use the unemployment rate in the US as a means to divide regions into different colors.



Using folium.Choropleth(), we can plot the final map. The details of each attribute are given in the code itself.  The ‘key on’ parameter refers to the label in the JSON object (state_geo)  which has the state detail as the feature ID attached to each country’s border information. Our states in the data frame should match the feature ID in the json object.

Syntax: folium.Choropleth(geo_data,name,data,columns,fill_color, fill_opacity, line_opacity, key_on,legend_name)

Parameters:

  • geo_data: a set of geographic regions and their boundary coordinates
  • name: String (name of our map)
  • data: a numeric value for each region, used for the color
  • columns: list (columns we need to work on)
  • fill_color: Color of the map, eg: YlGn
  • fill_opacity: opacity of the colors filled
  • line_opacity: opacity of the border lines
  • legend_name: String

Finally, we can save our map as an HTML file.

Python3




folium.Choropleth(
    
      # geographical locations
    geo_data = state_geo,                     
    name = "choropleth",
    
      # the data set we are using
    data = state_data,                        
    columns = ["State", "Unemployment"],     
    
      # YlGn refers to yellow and green
    fill_color = "YlGn",                      
    fill_opacity = 0.7,
    line_opacity = .1,
      key_on = "feature.id",
    legend_name = "Unemployment Rate (%)",
).add_to(m)                                 
  
m.save('final_map.html')

Output:

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :