In [22]:
import os,sys
import re
import numpy as np
import pandas as pd
from os import listdir
from os.path import isfile, join
from glob import glob
In [23]:
cvdf = pd.read_csv("csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv")
print("This is a COVID-19 analysis page.")
This is a COVID-19 analysis page.
In [24]:
monthdict={1:0,2:31,3:60}
for i,li in enumerate(cvdf.columns):
    if i>=4:
        tmp=li.split("/")
        day=monthdict[int(tmp[0])]+int(tmp[1])
        day=day-22 
        cvdf=cvdf.rename(columns={li: day}, errors="raise")
cvdf=cvdf.sort_values(by=['Country/Region'])
cvdf=cvdf.reset_index(drop=True)
cvdf.drop("Lat", axis=1, inplace=True)
cvdf.drop("Long", axis=1, inplace=True)
cvdf.to_csv("covidtimeall.csv",index=False)
In [25]:
df = pd.read_csv("covidtimeall.csv")
df.head()
workaslist=list(df.iloc)
#plt.ylim(0,500)
countryid={}
for i,wl in enumerate(workaslist):
    y = list(wl[2:])
    leg = wl["Country/Region"]
    if not countryid.keys():
        countryid[leg]=y
    elif countryid.keys() and leg not in countryid.keys():    
        countryid[leg]=y
    elif countryid.keys() and leg in countryid.keys(): 
        tmp = zip(countryid[leg],y)
        utmp = [sum(item) for item in tmp]
        countryid[leg]=utmp
In [26]:
import math
covaff={}
for key,value in countryid.items():
    ry=[]
    for j in range(len(value)):
        if value[j]!=0:
            ry.append(value[j])
    amin, amax = min(ry), max(ry)
    if amax!=amin: 
        covaff[key] = ry
notafftd =(list(set(countryid.keys()) - set(covaff.keys())))
print ("Number of countries not yet affected by Coronavirus: ",len(notafftd))
print (*notafftd)
print ("Number of countries affected by Coronavirus: ",len(covaff.keys()))
print (*covaff.keys())
Number of countries not yet affected by Coronavirus:  20
Somalia Mozambique Saint Vincent and the Grenadines Grenada Antigua and Barbuda Timor-Leste East Timor Papua New Guinea Djibouti Kosovo Madagascar Haiti Gambia, The Dominica Holy See Syria Cape Verde Eritrea Uganda Chad
Number of countries affected by Coronavirus:  151
Afghanistan Albania Algeria Andorra Angola Argentina Armenia Australia Austria Azerbaijan Bahamas, The Bahrain Bangladesh Barbados Belarus Belgium Benin Bhutan Bolivia Bosnia and Herzegovina Brazil Brunei Bulgaria Burkina Faso Cabo Verde Cambodia Cameroon Canada Central African Republic Chile China Colombia Congo (Brazzaville) Congo (Kinshasa) Costa Rica Cote d'Ivoire Croatia Cruise Ship Cuba Cyprus Czechia Denmark Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Estonia Eswatini Ethiopia Fiji Finland France Gabon Georgia Germany Ghana Greece Guatemala Guinea Guyana Honduras Hungary Iceland India Indonesia Iran Iraq Ireland Israel Italy Jamaica Japan Jordan Kazakhstan Kenya Korea, South Kuwait Kyrgyzstan Latvia Lebanon Liberia Liechtenstein Lithuania Luxembourg Malaysia Maldives Malta Martinique Mauritania Mauritius Mexico Moldova Monaco Mongolia Montenegro Morocco Namibia Nepal Netherlands New Zealand Nicaragua Niger Nigeria North Macedonia Norway Oman Pakistan Panama Paraguay Peru Philippines Poland Portugal Qatar Romania Russia Rwanda Saint Lucia San Marino Saudi Arabia Senegal Serbia Seychelles Singapore Slovakia Slovenia South Africa Spain Sri Lanka Sudan Suriname Sweden Switzerland Taiwan* Tanzania Thailand Togo Trinidad and Tobago Tunisia Turkey US Ukraine United Arab Emirates United Kingdom Uruguay Uzbekistan Venezuela Vietnam Zambia Zimbabwe
In [27]:
import numpy as np

jdict={}
day=[]
for key,value in covaff.items():
    days=[];dvalue=[];dvalue2=[];ep=[];gf=[];log_ry=[];nlog_ry=[]
    for j in range(len(value)):
        log_ry.append(math.log10(value[j]))
    #plt.plot(log_ry,label=key)
    ##amin, amax = min(log_ry), max(log_ry) 
    ##print (amin,amax)
    ##for j, val in enumerate(log_ry):
    ##    nlog_ry.append((val-amin) / (amax-amin))
    for j in range(len(value)):
        if j>0:
            dvalue.append(((value[j]-value[j-1])))
    ndvalue = [float(i)/max(dvalue) for i in dvalue]  
    for j in range(len(dvalue)):
        if j >0:
            gf.append(dvalue[j]/dvalue[j-1])
            
    for j in range(len(value)):
        if j>0: ep.append(round((value[j]/value[j-1]),3))
    dvalue.insert(0,0)
    ndvalue.insert(0,0)
    ep.insert(0,0)
    gf.insert(0,0)
    gf.insert(0,0)
    jdict[key] = {"Cases":value,"Rate":dvalue,"NormRate":ndvalue,"Ep":ep,"GrowthFactor":gf}
<ipython-input-27-78778f7d5a9d>:24: RuntimeWarning: invalid value encountered in long_scalars
  gf.append(dvalue[j]/dvalue[j-1])
<ipython-input-27-78778f7d5a9d>:24: RuntimeWarning: divide by zero encountered in long_scalars
  gf.append(dvalue[j]/dvalue[j-1])
In [40]:
import panel as pn
pn.extension()
import matplotlib.pyplot as plt
%matplotlib inline

def makeinteractive(Yaxis,Country):#,Xaxis):      
    impcnt=list(map(lambda x: x.strip(), Country.split(","))) 
    yax = list(jdict.keys())
    plt.style.use('ggplot')
    fig = plt.figure(figsize=(10,10))
    ax = plt.subplot(111)
    
    ax.set_ylabel(Yaxis)
    ax.set_xlabel("Number of Days since the begining of COVID Horror")
    #plt.ylabel(Yaxis)                
    #plt.xlabel("Number of Days since the begining of COVID Horror")
    for key,value in jdict.items():
        if key in impcnt:
            ax.plot(value[Yaxis],'-o',label=key)
           # plt.plot(value[Yaxis],'-o',label=key)
            
    ax.legend(loc='center left', bbox_to_anchor=(0.95, 0.5),) 
    fig =ax.get_figure()
    plt.close(fig)
    return(fig)
In [51]:
pnr=pn.interact(makeinteractive,Yaxis=["Cases","Rate","NormRate","Ep","GrowthFactor"],Country="India,Italy,Australia,China,Iran,Pakistan,US,Spain,Germany,France,United Kingdom").servable()
In [52]:
pnr.embed(max_opts=5)
                                             
In [31]:
# nbi:hide_in
#from ipywidgets import Button
#words = list(jdict.keys())
#items = [Button(description=w) for w in words]
#bins = int(len(words)/5)
#box1 = VBox(items[:bins])
#box2 = VBox(items[bins:2*bins])
#box3 = VBox(items[2*bins:3*bins])
#box4 = VBox(items[3*bins:4*bins])
#box5 = VBox(items[4*bins:5*bins])
#print ("List of Countries")
#HBox([box1,box2,box3,box4,box5])