RKI Daten Scraper
Zu Beginn der Pandemie wollte ich selber mit den RKI Daten “rumspielen”. Es war gar nicht so einfach an eine maschinenlesbare Darstellung zu kommen. Sie ist ein Nebenprodukt der ArcGIS Pandemie-Karte.
Die Daten von ArcGIS kann man als CSV Datei herunterladen und in einen Pandas Dataframe parsen:
import pandas as pd
import requests
def scrape(rki_csv_path='covid_19.csv'):
"""Download the RKI CSV and write it to given path."""
url = 'https://opendata.arcgis.com/datasets/dd4580c810204019a7b8eb3e0b329dd6_0.csv'
r = requests.get(url, allow_redirects=True)
open(rki_csv_path, 'wb').write(r.content)
def get_rki(rki_csv_path='covid_19.csv'):
"""Read the RKI CSV from path and return a Pandas dataframe."""
def dateparser(x):
"""Parse RKI CSV date formats (there a two different ones)."""
try:
return pd.datetime.strptime(x, "%d.%m.%Y, %H:%M Uhr")
except ValueError:
return pd.datetime.strptime(x, "%Y/%m/%d %H:%M:%S")
rki = pd.read_csv(rki_csv_path,
index_col=0,
parse_dates=[8, 10, 13],
date_parser=dateparser)
return rki
# MAIN
scrape()
rki = get_rki()
# Data for Germany:
deutschland = rki[['AnzahlFall', 'AnzahlTodesfall', 'Meldedatum']].groupby('Meldedatum').sum().cumsum()
deutschland.to_csv('covid-19_germany.csv')
# Data for Baden-Württemberg:
bw = rki.query("Bundesland == 'Baden-Württemberg'")[['AnzahlFall', 'AnzahlTodesfall', 'Meldedatum']].groupby('Meldedatum').sum().cumsum()
bw.to_csv('covid-19_bw.csv')
# Data for the Ostalbkreis:
oak = rki.query("Landkreis == 'LK Ostalbkreis'")[['AnzahlFall', 'AnzahlTodesfall', 'Meldedatum']].groupby('Meldedatum').sum().cumsum()
oak.to_csv('covid-19_oak.csv')
Andere Quellen für COVID19 Datensätze und Analysen:
- Johns Hopkins University
- Worldometer.info
- Süddeutsche Zeitung
- or, if you want to create your own simulation: CovidSim