Politieke aardverschuiving! Uitslag Tweede Kamerverkiezingen 2023 gevisualiseerd

by | Nov 26, 2023 | Data Visualisatie, Python

De Tweede Kamerverkiezingen van 2023 zijn afgerond en de stemmen zijn geteld, waarbij de PVV van Geert Wilders als winnaar is uitgekomen. De NOS heeft een webapp ontwikkeld waarmee je je eigen coalities kunt vormen en het verschil met de verkiezingen van 2021 kunt zien.

Maar wat als je nog verder wilt analyseren? Met behulp van Python en een slimme toepassing van NOS-data heb ik het onderstaande Google Data Studio-dashboard ontwikkeld.

Het dashboard van de Tweede Kamerverkiezingen 2023

Wil je direct aan de slag met het Google Data Studio-dashboard? Klik dan op de groene knop om naar het dashboard te gaan. Het dashboard is gebaseerd op een eerder ontwikkeld dashboard, waarover je meer kunt lezen in het artikel “Uitslag Tweede Kamerverkiezingen 2021 Gevisualiseerd!

Voor de optimale ervaring raad ik aan om het dashboard via een desktop te bekijken. Klik op de onderstaande knop om naar het Google Data Studio-dashboard te gaan.

Functionaliteiten en filters van het dashboard

In het dashboard zie je direct het aantal zetels en stemmen dat een partij heeft behaald in 2023 en in 2021. Bovendien is meteen de zetelwinst of -verlies zichtbaar. Onderaan links zie je in welke gemeente een partij de grootste is geworden. Maak gebruik van het “partij” filter bovenin om het dashboard te filteren voor een specifieke partij of partijen.

Klik op de afbeelding om deze te vergroten.

Tweede kamerverkiezingen 2023 Dashboard

Extract

Waar vind ik de data?

Om de data op te halen en te verwerken in het dashboard, heb ik eerst onderzocht hoe de data op de webapp van de NOS terechtkomt. Door naar de Network Requests te kijken, is te zien dat er regelmatig een index.json wordt ingeladen die verwijst naar “https://voteflow.api.nos.nl/TK23/index.json“.

voteflow nos

Door naar dit webadres te gaan, is er een enorm JSON-bestand te zien dat de data van alle partijen, de stemmen en het totale aantal zetels weergeeft. Daarnaast bevat het ook relevante data van de verkiezingen van 2021 en de data per gemeente. De JSON is echter niet goed leesbaar vanuit de browser. Door gebruik te maken van Insomnia kunnen we de JSON beter leesbaar maken en achterhalen welke data we willen laden/gebruiken voor het dashboard.

voteflow nos insomnia

Het ophalen van data met Python

Door gebruik te maken van drie libraries kan de data eenvoudig worden geladen in een Google Colab-omgeving of PyCharm. Met behulp van Requests kan ik de data ophalen, via Pandas kan ik dit in een DataFrame (een tabel) plaatsen. Vervolgens gebruik ik datetime om een tijdstempel aan het geëxporteerde bestand toe te voegen.

Onderaan het script is te zien hoe de data wordt opgehaald van de voteflow API van de NOS. Deze wordt als input gebruikt voor de uiteindelijke scraper.

Door de keys “[“landelijke_uitslag”][“partijen”]” te doorlopen (loopen), kan ik eenvoudig per partij de data netjes verzamelen en dit in een dictionary opslaan. In mijn script noem ik deze “row_data“. Een Python dictionary fungeert als een verzamelbak waar we waarden voor een specifieke entiteit (in dit geval politieke partij) kunnen opslaan.

Deze data wordt vervolgens verwerkt in een DataFrame (df).

Vervolgens gebruik ik een vergelijkbaar script om ook de data per gemeente op te halen. Helaas zit deze data in een afzonderlijk object, en het was sneller en efficiënter om een tweede script te schrijven in plaats van dit te integreren in het huidige script. Het Python-script voor gemeenten vind je hieronder:

Transform

Dataverwerking in Google Sheets

De output van het Python-script wordt opgeslagen in een .CSV-bestand. Vervolgens kan dit bestand worden geladen in een Excel- of Google Sheets-bestand.

Vanwege de directe koppeling tussen Looker Data Studio en Google Sheets, heb ik ervoor gekozen om de gegevens daar te verwerken. Aangezien de uitvoer niet meer verandert, kunnen we een statisch bestand hiervoor gebruiken. Het Python-script hoeft slechts één keer te worden uitgevoerd om de gegevens te verzamelen.

In principe behoeven we hier weinig aanpassingen te doen en kunnen we dit direct koppelen met Looker Data Studio. Het Google Sheets-bestand bestaat uit twee tabbladen: één met het aantal zetels, stemmen en de uitslag van de vorige Tweede Kamerverkiezingen in 2021, en één tabblad met de resultaten per gemeente.

Uitslag Tweede Kamerverkiezingen per gemeente

Custom Fields in Looker Data Studio

Aangezien de data al werkbaar is, zijn er weinig aanpassingen nodig. Ik heb echter wel een extra veld toegevoegd om het verschil in het percentage stemmen voor een partij tussen 2023 en 2021 weer te geven. Normaal gesproken kan dit verschil worden gevisualiseerd met een “Date Range” filter. Echter, gezien we slechts twee datapunten hebben (2021 en 2023), is het efficiënter om het op deze manier in te richten.

Looker Data Studio - Custom Field - Tweede Kamerverkiezingen 2023

Daarnaast heb ik voor één grafiek een extra veld toegevoegd om de gewonnen en verloren zetels te visualiseren.

Looker Data Studio - Custom Field - Zetels winst en verlies

Load

Datavisualisatie in Looker Data Studio

Nu de data beschikbaar is in Looker Data Studio, kunnen we de resultaten van de Tweede Kamerverkiezingen 2023 visualiseren, met gegevens per gemeente en vergelijken met de resultaten van 2021.

Het doel was om zoveel mogelijk gegevens zo compact mogelijk en overzichtelijk te visualiseren. Daarnaast wilde ik de visualisatie zo “clean” mogelijk maken, zonder dat het te overweldigend wordt.

Aan de linkerkant vind je het totale aantal geldige stemmen, partijen en zetels die partijen hebben. Dit is aan te passen met behulp van de filters bovenin het dashboard. Zo kun je filteren op een aantal partijen, maar ook op partijen met meer dan een bepaald aantal zetels, of partijen die een minimaal of maximaal aantal stemmen hebben gekregen. Deze gegevens maken gebruik van eenvoudige scorekaarten.

Verder zie je het aantal zetels dat een partij heeft behaald in 2023 in vergelijking met 2021. Hier kun je ook zien hoeveel zetels een partij heeft gewonnen en verloren ten opzichte van de vorige verkiezingen.

Zetelwinst en verlies in Looker Data Studio

Hieronder vind je een coalitiebouwer. Het zwarte lijntje geeft aan hoeveel zetels er nodig zijn voor een meerderheid. De groene balk geeft aan hoeveel zetels er zijn in de huidige selectie. Zo kun je zien hoeveel zetels bijvoorbeeld de PVV, VVD en NSC samen hebben.

Onderaan de pagina is te zien welke partij per gemeente de grootste is geworden. De kleuren geven aan welke partij het grootste is geworden. Zo is in één oogopslag te zien dat de PVDA/GroenLinks vrijwel alle grote steden met de winst heeft behaald.

Coalitiebouwer, winst per gemeente en overzicht tweede kamerverkiezingen 2023

Dat is een overzicht van de Tweede Kamerverkiezingen gevisualiseerd in Looker Data Studio. Heb je suggesties of aanvullingen voor het dashboard? Laat dan een reactie achter of stuur me een berichtje op LinkedIn.

Als je ook je eigen websitegegevens wilt laten visualiseren, neem dan gerust vrijblijvend contact met me op!

Jorg van de Ven

Jorg van de Ven

Sr. Technisch Webanalist / SEO-specialist

Als Web Analyst en SEO specialist houd ik me dagelijks bezig met technische vraagstukken.
Kan de Crawler deze pagina bereiken? Wordt de juiste data wel naar Google Analytics verstuurd? Daar kun je mij voor inschakelen!

Ik heb o.a. gewerkt voor: Trendhopper, Kwantum, Terre des Hommes, Expert, Hero en Startselect.

Heb je een vraag voor me? Stuur me een berichtje via LinkedIn of via mijn contactpagina.

Misschien spreken de volgende blogs je aan?

Third-party cookies verdwijnen: Wat zijn de gevolgen?

Third-party cookies verdwijnen: Wat zijn de gevolgen?

Third-party cookies gaan verdwijnen, en dat gaat impact hebben op je online marketingactiviteiten. Dit is een goede stap richting internetprivacy, maar het zal sommige functionaliteiten van onder andere Google en Meta (Facebook) beïnvloeden. Wat is de exacte impact?...

Google Consent Mode V2: Verplicht voor Google Ads in 2024?

Google Consent Mode V2: Verplicht voor Google Ads in 2024?

Vanaf maart 2024 maakt Google het grotendeels verplicht om Consent Mode V2 te implementeren voor adverteerders die doeltreffend willen blijven adverteren in de Europese Unie, met name in de Europese Economische Ruimte (EER). Deze verplichting is het gevolg van...

Maak een “SEO Friendly” Sitestructuur met Python!

Maak een “SEO Friendly” Sitestructuur met Python!

Een sitestructuur is belangrijk voor zowel je bezoekers (UX) als voor zoekmachines (SEO). Met een goede sitestructuur kun je bezoekers meteen naar de juiste pagina's sturen en laten converteren. Maar daarnaast stelt dit zoekmachines in staat om je pagina's gemakkelijk...