-
Notifications
You must be signed in to change notification settings - Fork 1
/
app_vaccines_checker.py
38 lines (29 loc) · 1.57 KB
/
app_vaccines_checker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import pandas as pd
from datetime import datetime
import pytz
from func_logging import *
from func_read_vaccines_web import *
logger = create_logger(__name__)
logger.info('Obtaining vaccines data')
vaccines_df = get_vaccines_data_web(vaccines_url, chromedriver_dir)
vaccines_df['date'] = pd.to_datetime(datetime.now(pytz.timezone('Europe/Sofia'))).date()
# load the existing data
vaccines_df_old = pd.read_csv('./dash_data/vaccines.csv')
vaccines_df = pd.merge(
vaccines_df_old[['code', 'province', 'pop']].drop_duplicates(),
vaccines_df,
on='code'
).sort_values(by='province', ascending=True).reset_index(drop=True)
# check if the vaccines data has been updated in the source
vacc_old_compare = vaccines_df_old.loc[vaccines_df_old.date == vaccines_df_old.date.max(),['province','total']].sort_values(by='province', ascending=True).reset_index(drop=True)
if len(vaccines_df[['province','total']].compare(vacc_old_compare)) != 0:
vacc_cols = ['date', 'province', 'code', 'pop', 'total', 'new_pfizer', 'new_astrazeneca', 'new_moderna', 'new_johnson', 'second_dose']
pd.concat([vaccines_df_old[vacc_cols], vaccines_df[vacc_cols]]).to_csv('./dash_data/vaccines.csv', header=True, index=False)
logger.info('Vaccines data was added successfully.')
logger.info('Starting git push')
from func_git import git_push
git_push()
elif vaccines_df_old['date'].max() == datetime.now(pytz.timezone('Europe/Sofia')).strftime(format="%Y-%m-%d"):
logger.info('Vaccines data is up to date!')
else:
logger.info('WARNING: Vaccines data has not been updated in the source!')