fcp2021 / real_data / data_metrics_2.py
data_metrics_2.py
Raw
#%%
import json
import pandas as pd

class Metrics_to_PD_2:
    
    def __init__(self):
        #self.filpath = "real_data/UK_full_covid_data.csv" (old) relative filepath
        self.filepath = "real_data/UK_full_covid_data_may.csv" #(new) relative filepath

    def read_from_csv(self):
        df = pd.read_csv(self.filepath)
        return df

    def fill_zeros(self, data: list):
        updated_data = [x if x != 'nan' else x == 0 for x in data]
        return updated_data

    def get_reproduction_rate(self, dataFrame, get_list:bool):
        df = dataFrame
        if get_list:
            rep_rate = df["reproduction_rate"].to_list()
            return self.fill_zeros(rep_rate)
        else:
            rep_rate = df[["reproduction_rate"]]
            return rep_rate

    def get_stringency_index(self, dataFrame, get_list:bool):
        df = dataFrame
        if get_list:
            string_index = df["stringency_index"].to_list()
            return self.fill_zeros(string_index)
        else:
            string_index = df[["stringency_index"]]
            return string_index

    def get_positive_rate(self, dataFrame, get_list:bool):
        df = dataFrame
        if get_list:
            posi_rate = df["positive_rate"].to_list()
            return self.fill_zeros(posi_rate)
        else:
            posi_rate = df[["positive_rate"]]
            return posi_rate
        

    def main(self):
        get_list = True
        df = self.read_from_csv()
        R_rate = self.get_reproduction_rate(df, get_list)
        S_index = self.get_stringency_index(df, get_list)
        P_rate = self.get_positive_rate(df, get_list)
        date_list = self.read_from_csv()['date'].to_list()

        #print(R_rate, S_index, P_rate)
        Template = {
            "Date": date_list,
            "TransmissionRate": R_rate,
            "StringencyIndex": S_index,
            "PositiveRate": P_rate }
        
        print(Template)
        #convert to csv       
        DF = pd.DataFrame.from_dict(Template)
        DF = DF.fillna(value=0)
        DF = DF.to_csv('rateFromRealData.csv')

if __name__ == "__main__":
    data_2 = Metrics_to_PD_2()
    data_2.main()