API (Application Programming Interface) is a computing interface that interacts between multiple software.
JSON (JavaScript Object Notation) is a lightweight format for storing and transporting data. It is used to send data from server to web.
Required modules:
- matplotlib
- requests
- pandas
- json
Commands to install modules:
pip install matplotlib pip install requests pip install pandas
Steps:
- Importing all required modules.
- Calling API and getting JSON data.
- Getting the State Wise District Data.
- Visualization of data.
The below URL redirects you to API https://api.covid19india.org/state_district_wise.json
Importing all required modules
#importing modules import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
|
Function for getting JSON data from API and Visualization of Data
#storing the url in the form of string #function to get data from api def casesData():
#getting the json data by calling api
data = ((requests.get(url)).json())
states = []
|
Getting State Names available in JSON Data
# getting statewise data for state in states:
f = (data[state][ 'districtData' ])
# states data available in JSON Data ''' 0 State Unassigned 1 Andaman and Nicobar Islands 2 Andhra Pradesh 3 Arunachal Pradesh 4 Assam 5 Bihar 6 Chandigarh 7 Chhattisgarh 8 Delhi 9 Dadra and Nagar Haveli and Daman and Diu 10 Goa 11 Gujarat 12 Himachal Pradesh 13 Haryana 14 Jharkhand 15 Jammu and Kashmir 16 Karnataka 17 Kerala 18 Ladakh 19 Lakshadweep 20 Maharashtra 21 Meghalaya 22 Manipur 23 Madhya Pradesh 24 Mizoram 25 Nagaland 26 Odisha 27 Punjab 28 Puducherry 29 Rajasthan 30 Sikkim 31 Telangana 32 Tamil Nadu 33 Tripura 34 Uttar Pradesh 35 Uttarakhand 36 West Bengal ''' |
Getting the state-wise Data
# getting statewise data for state in states:
f = (data[state][ 'districtData' ])
tc = []
dis = []
act, con, dea, rec = 0 , 0 , 0 , 0
# getting districtwise data
for key in (data[state][ 'districtData' ]).items():
district = key[ 0 ]
dis.append(district)
active = data[state][ 'districtData' ][district][ 'active' ]
confirmed = data[state][ 'districtData' ][district][ 'confirmed' ]
deaths = data[state][ 'districtData' ][district][ 'deceased' ]
recovered = data[state][ 'districtData' ][district][ 'recovered' ]
if district = = 'Unknown' :
active, confirmed, deaths, recovered = 0 , 0 , 0 , 0
tc.append([active, confirmed, deaths, recovered])
act = act + active
con = con + confirmed
dea = dea + deaths
rec = rec + recovered
tc.append([act, con, dea, rec])
dis.append( 'Total' )
parameters = [ 'Active' , 'Confirmed' , 'Deaths' , 'Recovered' ]
|
Creating DataFrame Using pandas
# creating a dataframe df = pd.DataFrame(tc, dis, parameters)
print ( 'COVID - 19' , state, 'District Wise Data' )
print (df)
|
Data Visualization Using Matplotlib
# plotting of data plt.bar(dis, df[ 'Active' ], width = 0.5 , align = 'center' )
fig = plt.gcf()
fig.set_size_inches( 18.5 , 10.5 )
plt.xticks(rotation = 75 )
plt.show() print ( '*' * 100 )
|
Final casesData() function code
# function to get data from api def casesData():
# getting the json data by calling api
data = ((requests.get(url)).json())
states = []
# getting states
for key in data.items():
states.append(key[ 0 ])
# getting statewise data
for state in states:
f = (data[state][ 'districtData' ])
tc = []
dis = []
act, con, dea, rec = 0 , 0 , 0 , 0
# getting districtwise data
for key in (data[state][ 'districtData' ]).items():
district = key[ 0 ]
dis.append(district)
active = data[state][ 'districtData' ][district][ 'active' ]
confirmed = data[state][ 'districtData' ][district][ 'confirmed' ]
deaths = data[state][ 'districtData' ][district][ 'deceased' ]
recovered = data[state][ 'districtData' ][district][ 'recovered' ]
if district = = 'Unknown' :
active, confirmed, deaths, recovered = 0 , 0 , 0 , 0
tc.append([active, confirmed, deaths, recovered])
act = act + active
con = con + confirmed
dea = dea + deaths
rec = rec + recovered
tc.append([act, con, dea, rec])
dis.append( 'Total' )
parameters = [ 'Active' , 'Confirmed' , 'Deaths' , 'Recovered' ]
# creating a dataframe
df = pd.DataFrame(tc, dis, parameters)
print ( 'COVID - 19' , state, 'District Wise Data' )
print (df)
# plotting of data
plt.bar(dis, df[ 'Active' ], width = 0.5 , align = 'center' )
fig = plt.gcf()
fig.set_size_inches( 18.5 , 10.5 )
plt.xticks(rotation = 75 )
plt.show()
print ( '*' * 100 )
|
Final Implementation:
# importing modules import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
# storing the url in the form of string # function to get data from api def casesData():
# getting the json data by calling api
data = ((requests.get(url)).json())
states = []
# getting states
for key in data.items():
states.append(key[ 0 ])
# getting statewise data
for state in states:
f = (data[state][ 'districtData' ])
tc = []
dis = []
act, con, dea, rec = 0 , 0 , 0 , 0
# getting districtwise data
for key in (data[state][ 'districtData' ]).items():
district = key[ 0 ]
dis.append(district)
active = data[state][ 'districtData' ][district][ 'active' ]
confirmed = data[state][ 'districtData' ][district][ 'confirmed' ]
deaths = data[state][ 'districtData' ][district][ 'deceased' ]
recovered = data[state][ 'districtData' ][district][ 'recovered' ]
if district = = 'Unknown' :
active, confirmed, deaths, recovered = 0 , 0 , 0 , 0
tc.append([active, confirmed, deaths, recovered])
act = act + active
con = con + confirmed
dea = dea + deaths
rec = rec + recovered
tc.append([act, con, dea, rec])
dis.append( 'Total' )
parameters = [ 'Active' , 'Confirmed' , 'Deaths' , 'Recovered' ]
# creating a dataframe
df = pd.DataFrame(tc, dis, parameters)
print ( 'COVID - 19' , state, 'District Wise Data' )
print (df)
# plotting of data
plt.bar(dis, df[ 'Active' ], width = 0.5 , align = 'center' )
fig = plt.gcf()
fig.set_size_inches( 18.5 , 10.5 )
plt.xticks(rotation = 75 )
plt.show()
print ( '*' * 100 )
# states data available through API ''' 0 State Unassigned 1 Andaman and Nicobar Islands 2 Andhra Pradesh 3 Arunachal Pradesh 4 Assam 5 Bihar 6 Chandigarh 7 Chhattisgarh 8 Delhi 9 Dadra and Nagar Haveli and Daman and Diu 10 Goa 11 Gujarat 12 Himachal Pradesh 13 Haryana 14 Jharkhand 15 Jammu and Kashmir 16 Karnataka 17 Kerala 18 Ladakh 19 Lakshadweep 20 Maharashtra 21 Meghalaya 22 Manipur 23 Madhya Pradesh 24 Mizoram 25 Nagaland 26 Odisha 27 Punjab 28 Puducherry 29 Rajasthan 30 Sikkim 31 Telangana 32 Tamil Nadu 33 Tripura 34 Uttar Pradesh 35 Uttarakhand 36 West Bengal ''' #Driver Code casesData() |
Output: