A small python module to work with the RKI_Covid19.csv files issued by the German RKI (Robert Koch Institut) on a daily basis.
pip install rki-covid19csv-parser
Initialize the parser and load data from the RKI_Covid19.csv file. Because of the daily increasing file size this process can take a while.
import rki_covid19csv_parser
covid_cases = rki_covid19csv_parser.covid_cases()
covid_cases.load_rki_csv('path/to/csv')
Once you have loaded the csv file it's possible to save the processed data to a file. This can speed up the process of loading the data significantly if you whish to run your script more than once.
#save file.
covid_cases.save_toFile('desired/path')
#load file.
covid_cases.load_fromFile('path/to/saved/file')
A description of the parameters can be found below.
method | description | returns |
---|---|---|
cumCases(date, region_id, date_type) |
cumulated covid19 cases | Filter object |
cumDeaths(date, region_id, date_type) |
cumulated covid19 deaths | Filter object |
newCases(date, region_id, date_type) |
new covid19 cases | Filter object |
newDeaths(date, region_id, date_type) |
new covid19 deaths | Filter object |
newCasesTimespan(date, region_id, date_type, timespan) |
new covid19 cases in period | Filter object |
newDeathsTimespan(date, region_id, date_type, timespan) |
new covid19 deaths in period | Filter object |
activeCases(date, region_id, date_type, days_infectious) |
active covid19 cases | Filter object |
sevenDayCaserate(date, region_id, date_type) |
new covid19 cases in 7-days | Filter object |
sevenDayIncidence(date, region_id, date_type) |
new covid19 cases per 100k people in 7-days | Filter object |
deathRate(date, region_id, days_infectious) |
death rate (activeCases/newDeaths) | Filter object |
parameter | type | description | example |
---|---|---|---|
date |
str in iso-format, datetime.date obj, datetime.datetime obj | The desired date. | '2020-06-01 00:00:00' |
region_id |
str | A list of region-ids can be found here. | '0' |
date_type |
str | The date type to use. Meldedatum or Refdatum | 'Meldedatum' |
timespan |
int | Number of last days to be included in calculation. | 3 |
days_infectious |
int | Number of days a case is considered as active. | 14 |
Each of the methods mentioned above returns an objct of the class Filter. You can use the following methods to get the data into your desired shape.
method | description | returns |
---|---|---|
values() |
raw data | ndarray |
by_cases(raw, decimals) |
absolute number of cases | dict |
by_age(frequency, decimals) |
cases sorted into agegroups | dict |
by_gender(frequency, decimals) |
cases sorted by gender | dict |
by_ageandgener(frequency, decimals) |
cases sorted by age and gender | dict |
parameter | input type | description | example |
---|---|---|---|
frequency |
str | weather you want the absolute or relative number of cases | 'absolute' |
decimals |
int | number of decimals | 3 |
raw |
bool | True to get raw values | True |
cases = covid_cases.cumCases(date='2021-04-29 00:00:00', region_id='01001', date_type='Meldedatum').by_gender(frequency='absolute')
print(cases)
>>> {'M': 1200, 'W': 1400, 'unbekannt': 130}
Example values!