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
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.")
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)
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
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())
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}
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)
pnr=pn.interact(makeinteractive,Yaxis=["Cases","Rate","NormRate","Ep","GrowthFactor"],Country="India,Italy,Australia,China,Iran,Pakistan,US,Spain,Germany,France,United Kingdom").servable()
pnr.embed(max_opts=5)
# 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])