In [1]:
import json
In [2]:
from datetime import timedelta
In [3]:
from urllib.request import urlopen
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
{
"tags":[
"hide_input",
]
}
Out[3]:
In [4]:
# color pallette
cnf = '#393e46' # confirmed - grey
dth = '#ff2e63' # death - red
rec = '#21bf73' # recovered - cyan
act = '#fe9801' # active case - yellow
In [5]:
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
In [6]:
from plotly.offline import plot,iplot,init_notebook_mode
init_notebook_mode(connected=True)
In [7]:
df=pd.read_csv(r'C:\Users\dhr3ban\Documents\python\covid datasets\complete.csv',parse_dates=['Date'])
df['Name of State / UT'] = df['Name of State / UT'].str.replace('Union Territory of ', '')
df.head()
Out[7]:
In [8]:
df.columns
Out[8]:
In [9]:
df = df[['Date', 'Name of State / UT', 'Latitude', 'Longitude', 'Total Confirmed cases', 'Death', 'Cured/Discharged/Migrated']]
df.columns = ['Date', 'State/UT', 'Latitude', 'Longitude', 'Confirmed', 'Deaths', 'Cured']
for i in ['Confirmed', 'Deaths', 'Cured']:
df[i] = df[i].astype('int')
df['Active'] = df['Confirmed'] - df['Deaths'] - df['Cured']
df['Mortality rate'] = df['Deaths']/df['Confirmed']
df['Recovery rate'] = df['Cured']/df['Confirmed']
df = df[['Date', 'State/UT', 'Latitude', 'Longitude', 'Confirmed', 'Active', 'Deaths', 'Mortality rate', 'Cured', 'Recovery rate']]
In [10]:
df.head()
Out[10]:
In [11]:
df.describe()
Out[11]:
In [12]:
latest = df[df['Date']==max(df['Date'])]
# days
latest_day = max(df['Date'])
day_before = latest_day - timedelta(days = 1)
# state and total cases
latest_day_df = df[df['Date']==latest_day].set_index('State/UT')
day_before_df = df[df['Date']==day_before].set_index('State/UT')
temp = pd.merge(left = latest_day_df, right = day_before_df, on='State/UT', suffixes=('_lat', '_bfr'), how='outer')
latest_day_df['New cases'] = temp['Confirmed_lat'] - temp['Confirmed_bfr']
latest = latest_day_df.reset_index()
latest.fillna(1, inplace=True)
In [13]:
temp = latest[['State/UT', 'Confirmed', 'Active', 'New cases', 'Deaths', 'Mortality rate', 'Cured', 'Recovery rate']]
temp = temp.sort_values('Confirmed', ascending=False).reset_index(drop=True)
temp.style\
.background_gradient(cmap="Blues", subset=['Confirmed', 'Active', 'New cases'])\
.background_gradient(cmap="Greens", subset=['Cured', 'Recovery rate'])\
.background_gradient(cmap="Reds", subset=['Deaths', 'Mortality rate'])
Out[13]:
In [14]:
fig = make_subplots(rows=1, cols=2, shared_xaxes=False, column_widths=[0.4, 0.6],
subplot_titles = ['Latest stats', 'Over the time'],
specs=[[{"type": "treemap"}, {"type": "bar"}]])
tm = temp.melt(id_vars="Date", value_vars=['Active', 'Deaths', 'Cured'])
fig_1 = px.treemap(tm, path=["variable"], values="value", height=540, width=800,
color_discrete_sequence=[rec, act, dth])
fig_1.data[0].textinfo = 'label+text+value'
fig.add_trace(fig_1['data'][0], row=1, col=1)
# fig.add_trace(go.Treemap(labels = tm['variable'], values = tm['value']),1,1)
temp = df.groupby('Date')['Active', 'Deaths', 'Cured'].sum().reset_index()
fig.add_trace(go.Bar(x=temp['Date'], y=temp['Active'], name='Active', marker_color=act), row=1, col=2)
fig.add_trace(go.Bar(x=temp['Date'], y=temp['Deaths'], name='Deaths', marker_color=dth), row=1, col=2)
fig.add_trace(go.Bar(x=temp['Date'], y=temp['Cured'], name='Cured', marker_color=rec), row=1, col=2)
fig.update_layout(barmode='stack')
fig.update_layout(treemapcolorway = [act, rec, dth])
fig.show()
In [15]:
temp = latest.sort_values('Confirmed', ascending=False)
state_order = temp['State/UT']
fig = px.bar(temp,
x="Confirmed", y="State/UT", color='State/UT', title='Confirmed',
orientation='h', text='Confirmed', height=len(temp)*35,
color_discrete_sequence = px.colors.qualitative.Vivid)
fig.show()
In [16]:
temp = latest[latest['Deaths']>0].sort_values('Deaths')
fig_d = px.bar(temp, y="State/UT", x="Deaths", orientation='h', title='Deaths', color_discrete_sequence = ['#ff2e63'], text='Deaths', height=len(temp)*40)
temp = latest[latest['Cured']>0].sort_values('Cured')
fig_r = px.bar(temp, y="State/UT", x="Cured", orientation='h', title='Cured', color_discrete_sequence = ['#2c786c'], text='Cured', height=len(temp)*40)
fig = make_subplots(rows=1, cols=2, shared_xaxes=False, horizontal_spacing=0.2, subplot_titles=("Deaths", "Recovered"))
fig.add_trace(fig_d['data'][0], row=1, col=1)
fig.add_trace(fig_r['data'][0], row=1, col=2)
fig.update_layout(height=800)
fig.show()
In [17]:
fig = px.bar(df.sort_values('Confirmed', ascending=False), x="Date", y="Confirmed", color='State/UT', title='State wise cases over time',
color_discrete_sequence = px.colors.qualitative.Vivid)
fig.update_traces(textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
fig.show()
In [18]:
no_of_states = df.groupby('Date')['State/UT'].unique().apply(len).values
dates = df.groupby('Date')['State/UT'].unique().apply(len).index
fig = go.Figure()
fig.add_trace(go.Scatter(x=dates, y=[36 for i in range(len(no_of_states))],
mode='lines', name='Total no. of States+UT',
line = dict(color='#393e46', dash='dash')))
fig.add_trace(go.Scatter(x=dates, y=no_of_states, hoverinfo='x+y',
mode='lines', name='No. of affected States+UT',
line = dict(color='#ff2e63')))
fig.update_layout(title='No. of affected States / Union Territory',
xaxis_title='Date', yaxis_title='No. of affected States / Union Territory')
fig.update_traces(textposition='top center')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide')
fig.show()
In [19]:
px.scatter(latest[latest['Confirmed']>10], x='Confirmed', y='Deaths', color='State/UT', size='Confirmed',
text='State/UT', log_x =True, title='Confirmed vs Death')
In [ ]:
No comments:
Post a Comment