De afgelopen maanden heb ik mijn eigen “goede” raad opgevolgd en me wat verdiept in de programmeertaal Python. Wie met data en cijfers aan de slag wil moet de taal zeker overwegen.
Met amper 43 lijntjes code (en het had met minder gekund) slaagde ik erin om 30 JSON-bestanden (één bestand per dag) van de site van Sciensano te downloaden, er één of meerdere gemeentes uit te filteren en die cijfers in een grafiek te gieten.
Het is met ruime voorsprong de eenvoudigste programmeertaal die ik ooit heb geleerd. Wie interesse of vragen heeft mag me zeker contacteren.
In de regels 7 tot 11 bepaald ik de periode van de welke ik gegevens wil downloaden.
In de regels 13 tot 19 download ik de gegevens van de website van Sciensano en sla enkel (de voor mij) relevante gegevens op op mijn harde schijf. Door de informatie lokaal op te slaan moet ik niet voor elke nieuwe grafiek de site van Sciensano belasten.
In de regels 21 tot 37 filter ik uit alle bestanden de gegevens die ik nodig heb en ik vorm ze om tot een ‘dataframe’ die als basis kan dienen voor de grafiek die ik wil. Het volstaat om op regel 22 gemeentes toe te voegen of te verwijderen om meer of minder informatie in de grafiek te krijgen.
Tot slot op de regels 38 en 39 genereer ik de eigenlijke grafiek.
import datetime import pandas as pd import json import matplotlib.pyplot as plt dateList = [] def define_timeframe(): a = datetime.datetime.today() numdays = 30 for x in range (numdays, 1,-1): dateList.append(a - datetime.timedelta(days = x)) def download_sciensano_raw_data(): for date in dateList: variable = date.strftime("%Y%m%d") url = "https://epistat.sciensano.be/Data/"+variable+"/COVID19BE_CASES_MUNI_CUM_"+variable+".json" dataframe_import = pd.read_json(url) dataframe_export = dataframe_import[["NIS5","TX_DESCR_NL","CASES"]] dataframe_export.to_json(r"d:\\sciensano\\"+variable+".json") def draw_a_graph(): graph_data_for_cities = ['Kortrijk','Roeselare'] data_for_dataframe = {} data_for_dataframe['datum'] = [] for city in graph_data_for_cities: data_for_dataframe[city] = [] for date in dateList: variable = date.strftime("%Y%m%d") url = "d:\\sciensano\\"+variable+".json" dataframe_import = pd.read_json(url) data_for_dataframe['datum'].append(date.strftime("%d-%m-%Y")) for city in graph_data_for_cities: data_for_dataframe[city].append(int(dataframe_import[dataframe_import['TX_DESCR_NL']==city]['CASES'])) dataframe_for_graph = pd.DataFrame(data_for_dataframe,columns=['datum'] + graph_data_for_cities) dataframe_for_graph.plot.line(x="datum",title="Totaal aantal COVID patiënten sinds 13 maart (evolutie afgelopen 30 dagen)") plt.show() define_timeframe() #download_sciensano_raw_data draw_a_graph()