Now using py files, for automation
[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
18
19 # %%
20 connection_string = 'postgresql://covid:3NbjJTkT63@localhost/covid'
21
22
23 # %%
24 engine = sqlalchemy.create_engine(connection_string)
25
26
27 # %%
28 qstr = '''select uk_data.date
29 , uk_data.new_cases, uk_data_7.new_cases as new_cases_7
30 , uk_data.new_deaths, uk_data_7.new_deaths as new_deaths_7
31 from uk_data left outer join uk_data_7 using (date)
32 order by uk_data.date'''
33 uk_data = pd.read_sql_query(qstr, engine,
34 index_col='date',
35 parse_dates = ['date'])
36
37 # %%
38 ax = uk_data.loc['2020-03-10':, ['new_cases', 'new_cases_7']].plot(
39 style={'new_cases': "#e4e4e4",
40 'new_cases_7': 'k'},
41 figsize=(10, 8),
42 legend=False,
43 title="New cases and new deaths")
44
45 # ax.set_title('Fraction of tests with positive results')
46 ax.legend(['New cases', 'New cases, 7 day moving average'], loc='upper left')
47 ax.set_ylabel('New cases')
48
49 ax2 = ax.twinx()
50 ax2 = uk_data.loc['2020-03-10':, ['new_deaths','new_deaths_7']].plot(
51 ax=ax2,
52 secondary_y=['new_deaths', 'new_deaths_7'],
53 style={'new_deaths': "#ffe4e4",
54 'new_deaths_7': 'r'},
55 legend=False)
56 ax2.legend(['New deaths', 'New deaths, 7 day moving average'], loc='best')
57 ax2.set_ylabel('New cases')
58 plt.savefig('cases_and_deaths.png')
59
60
61 # %%
62 ax = uk_data.iloc[-60:][['new_cases', 'new_cases_7']].plot(
63 style={'new_cases': "#e4e4e4",
64 'new_cases_7': 'k'},
65 figsize=(10, 8),
66 legend=False,
67 title="New cases and new deaths")
68
69 # ax.set_title('Fraction of tests with positive results')
70 ax.legend(['New cases', 'New cases, 7 day moving average'], loc='upper left')
71 ax.set_ylabel('New cases')
72
73
74 ax2 = ax.twinx()
75 ax2 = uk_data.iloc[-60:][['new_deaths','new_deaths_7']].plot(
76 ax=ax2,
77 secondary_y=['new_deaths', 'new_deaths_7'],
78 style={'new_deaths': "#ffe4e4",
79 'new_deaths_7': 'r'},
80 legend=False)
81 ax2.legend(['New deaths', 'New deaths, 7 day moving average'], loc='best')
82 ax2.set_ylabel('New cases')
83 plt.savefig('cases_and_deaths_last_60_days.png')
84
85
86 # %%
87
88
89
90