[docs]classSwitzerland(CountryTestBase):location:str="Switzerland"units:str="tests performed"source_label:str="Federal Office of Public Health"source_url_ref:str="https://opendata.swiss/en/dataset/covid-19-schweiz"source_url:str="https://www.covid19.admin.ch/api/data/context"rename_columns:str={"datum":"Date","entries":"Daily change in cumulative total",}
[docs]defread(self):"""Read data from source"""url=self._get_related_url_from_source(self.source_url)df=read_csv_from_url(url,usecols=["datum","entries","entries_pos","geoRegion"])returndf
[docs]def_get_related_url_from_source(self,source_url:str)->str:"""Get related url from source"""response=request_json(source_url)url=response["sources"]["individual"]["csv"]["daily"]["testPcrAntigen"]returnurl
[docs]defpipe_metrics(self,df:pd.DataFrame)->pd.DataFrame:"""Process metrics"""df=df[df.geoRegion=="CH"]df=df.groupby("Date",as_index=False).sum()df["Positive rate"]=(df.entries_pos.rolling(7).sum().div(df["Daily change in cumulative total"].rolling(7).sum()).round(3))df=df[df["Daily change in cumulative total"]>0].drop(columns=["entries_pos"])returndf