General updates
[covid19.git] / uk_cases_and_deaths.py
1 #!/usr/bin/env python
2 # coding: utf-8
3 # %%
4 import itertools
5 import collections
6 import json
7 import pandas as pd
8 import numpy as np
9 from scipy.stats import gmean
10 import datetime
11
12 import sqlalchemy
13
14 import matplotlib as mpl
15 import matplotlib.pyplot as plt
16 plt.ioff()
17 # # %matplotlib inline
18
19
20 # %%
21 connection_string = 'postgresql://covid:3NbjJTkT63@localhost/covid'
22
23
24 # %%
25 engine = sqlalchemy.create_engine(connection_string)
26
27
28 # %%
29 qstr = '''select uk_data.date
30 , uk_data.new_cases, uk_data_7.new_cases as new_cases_7
31 , uk_data.new_deaths, uk_data_7.new_deaths as new_deaths_7
32 from uk_data left outer join uk_data_7 using (date)
33 order by uk_data.date'''
34 uk_data = pd.read_sql_query(qstr, engine,
35 index_col='date',
36 parse_dates = ['date'])
37
38 # %%
39 ax = uk_data.loc['2020-03-10':, ['new_cases', 'new_cases_7']].plot(
40 style={'new_cases': "#e4e4e4",
41 'new_cases_7': 'k'},
42 figsize=(10, 8),
43 legend=False,
44 title="New cases and new deaths")
45
46 # ax.set_title('Fraction of tests with positive results')
47 ax.legend(['New cases', 'New cases, 7 day moving average'], loc='upper left')
48 ax.set_ylabel('New cases')
49
50 ax2 = ax.twinx()
51 ax2 = uk_data.loc['2020-03-10':, ['new_deaths','new_deaths_7']].plot(
52 ax=ax2,
53 secondary_y=['new_deaths', 'new_deaths_7'],
54 style={'new_deaths': "#ffe4e4",
55 'new_deaths_7': 'r'},
56 legend=False)
57 ax2.legend(['New deaths', 'New deaths, 7 day moving average'], loc='best')
58 ax2.set_ylabel('New cases')
59 plt.savefig('cases_and_deaths.png')
60
61
62 # %%
63 ax = uk_data.iloc[-60:][['new_cases', 'new_cases_7']].plot(
64 style={'new_cases': "#e4e4e4",
65 'new_cases_7': 'k'},
66 figsize=(10, 8),
67 legend=False,
68 title="New cases and new deaths")
69
70 # ax.set_title('Fraction of tests with positive results')
71 ax.legend(['New cases', 'New cases, 7 day moving average'], loc='upper left')
72 ax.set_ylabel('New cases')
73
74
75 ax2 = ax.twinx()
76 ax2 = uk_data.iloc[-60:][['new_deaths','new_deaths_7']].plot(
77 ax=ax2,
78 secondary_y=['new_deaths', 'new_deaths_7'],
79 style={'new_deaths': "#ffe4e4",
80 'new_deaths_7': 'r'},
81 legend=False)
82 ax2.legend(['New deaths', 'New deaths, 7 day moving average'], loc='best')
83 ax2.set_ylabel('New cases')
84 plt.savefig('cases_and_deaths_last_60_days.png')
85
86
87 # %%
88
89
90
91