Python project: COVID cijfers per gemeente

Posted on

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.

Het totale aantal Corona-positief geteste mensen in Kortrijk en Roeselare

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()

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.