Geschreven door Rik Oomes

De Rotterdamse woningmarkt in kaart met behulp van Splunk

Data7 minuten leestijd

Starters op de woningmarkt, een onderwerp dat regelmatig in het nieuws voorbij komt. Al een aantal jaar is de vraag naar woningen groter dan het aanbod, waardoor de prijzen flink zijn gestegen. Dit maakt dat het voor starters lastig is om zich in te kopen op de markt. Overbieden is tegenwoordig eerder de norm dan een uitzondering op de regel. Daarnaast zijn woning vaak al verkocht voordat je ze online hebt kunnen spotten, wat een aardige uitdaging is naast een 40urige werkweek. Kortom, voor een starter is het een hele uitdaging om de woningmarkt nauwlettend in de gaten te houden en er bovenop te zitten naast een fulltimebaan.

Als consultant op het gebied van datamonitoring en als nieuwkomer op de woningmarkt zag ik hier een kans voor een cool persoonlijk Splunk project. Mijn huizenjacht focuste zich op de woningmarkt in Rotterdam. Ondanks dat verschillende makelaars met ieder hun eigen aanbod en Funda al redelijk veel ondersteuning bieden, zat ik toch met verschillende vragen.

Wanneer komen nou de meeste huizen online? Welke huizen zijn vandaag online gekomen en in welke buurt? Ok, en voor deze buurt, wat is de gemiddelde vraagprijs? Is de vraagprijs voor deze woning aan de hoge kant? Wat is de m2 prijs?

Uiteindelijk heb ik mijn eigen monitoring dashboards gemaakt in Splunk, die mij net meer diepgang en inzicht kunnen geven in de Rotterdamse woningmarkt. Het is een ongoing project en graag presenteer ik in dit blog wat eerste resultaten. Daarna zal ik op bepaalde technische aspecten wat dieper ingaan. Qua data is alleen een geselecteerd aantal buurten en prijsklasse opgenomen die ik mogelijk interessant vond.

Dashboard: Woningmarkt Rotterdam

Dit dashboard geeft net zoals Funda in één oogopslag welke huizen er waar te koop zijn in Rotterdam. De single values tonen respectievelijk het totale aantal koopwoning (in mijn index), het aantal nieuwe koopwoningen vandaag, het aantal nieuwe koopwoningen gisteren, deze week, vorige week, twee weken geleden, drie weken geleden en ouder dan een maand. Verder kan er linksboven ook op specifieke buurten in de stad gefilterd worden, voor wanneer er alleen interesse is voor een bepaalde buurt. Op het eerste gezicht een heel eenvoudig dashboard. Maar door wat drilldown magic toe te passen kun je hier veel meer informatie uit halen.

Wanneer je bijvoorbeeld op de single value “vandaag” klikt, verandert het aantal pijlen en zie je waar welke woningen vandaag online zijn gekomen. Daarnaast verschijnt er onderaan ook een tabel met meer gegevens over deze nieuwe koopwoningen. Zo zie je naast het adres, de vraagprijs, prijs per m2, buurt/wijk en de publicatiedatum & tijdstip. Wanneer je liever op de kaart speurt, kun je ook op een pijl klikken en die geeft ook meer details van de koopwoning. Zie je een interessante woning en ben je nieuwsgierig naar de buurt, dan kun je nog verder ‘drillen’ naar een panel die gelijk de woning op Google Streetview laat zien. Zo zie je gelijk of de straat of woning je aanspreekt.

Dashboard 2: Woningmarkt Rotterdam statistieken

Dit dashboard presenteert statistieken van de Rotterdamse woningmarkt. Ideaal voor een nieuwkomer die nog niet bekend is met de huidige woningmarkt in zijn/haar stad. Het dashboard is momenteel nog vrij basic en bestaat uit vijf panels. In de toekomst gaat deze nog verder uitgebreid worden en krijgt deze een visuele upgrade.

Het eerste panel geeft antwoord op de vraag wanneer de meeste woningen online komen en in dit specifieke geval op Funda. Voor Rotterdam komen de meeste woningen blijkbaar ’s nachts rond 0:00 online.

Het tweede panel presenteert hoeveel woningen er per wijk te koop zijn (geweest). Zo kun je zien in welke wijk de meeste woningen te koop komen. Op langer termijn kan dit nog uitgezet worden tegen de tijd, wat je bijvoorbeeld een indicatie kan geven wanneer in welke wijk de meeste woningen online komen. Of een trendlijn die kan laten zien of het aantal toe/afneemt.

De gemiddelde vraagprijs voor een woning per buurt verschilt en dit wordt weergegeven in het derde panel. Deze wordt berekend door de vraagprijs gedeeld door het aantal woningen per buurt. Deze zal over tijd nauwkeuriger worden wanneer er meer woningen in de index zitten. Hetzelfde geldt voor het panel daarna, waarin je per buurt kunt zien wat de gemiddelde m2 prijs is. Zo weet je dus in welke buurt de woningen relatief gezien het duurste zijn.

In het laatste panel is te zien welke hoeveelheid m2 woning het meeste aangeboden is tot nu toe in de index in dit project. Zo weet een nieuwkomer vrij snel wat de grootte van de meeste woningen zijn die in de verkoop komen.

Het verzamelen van de data

De data voor dit project komt uit verschillende bronnen. Allereerst voor de gegevens omtrent de woningen die in de verkoop komen, wordt er gebruik gemaakt van de RSS feed van Funda. De RSS feed bevat de volgende gegevens: straatnaam, huisnummer, vraagprijs, oppervlakte en het aantal kamers. De feed kan precies met een aantal filters getweakt worden, zodat je alleen de woningen krijgt die jij interessant vindt. In dit geval heb ik gefilterd op een aantal buurten, stad en een prijsklasse.

Voor zowel Google Streetview en coördinaten is er een connectie gemaakt met twee API’s van Google Cloud, namelijk Geocoding API en Maps API. Dit kost nog geen halve euro per maand. In het eerste jaar kun je hier overigens gratis gebruik van maken. Echter om de juiste coördinaten op te vragen is er een straat, huisnummer en postcode nodig. De straat en huisnummer kan uit de RSS feed van Funda gehaald worden.

Voor de gegevens omtrent postcode, buurt en gemeente, is er gebruik gemaakt van een aantal CSV’s van het CBS. Destijds was alleen de dataset uit 2019 beschikbaar. Het CBS biedt datasets aan met informatie over gemeenten, buurten, wijken en postcode van heel Nederland. Voor dit project zijn er 4 CSV’s samengevoegd tot een lookup tabel en gefilterd op de gemeente Rotterdam. Gezien sommige datasheets meer dan een miljoen regels bevatten (wat excel niet aan kan) is dit een ideale klus voor Splunk. In de volgend afbeelding is te zien wat de verschillende CSV’s waren en hoe deze zijn samengevoegd.

Om uiteindelijk de data te kunnen gebruiken in Splunk is er gebruik gemaakt van de volgende Splunk apps: “Google Geocode app” en “Maps+ for Splunk”. Deze apps zijn beiden beschikbaar in Splunkbase.

De Google Geocode App helpt je in het vertalen van een adres (straatnaam, huisnummer en postcode) naar Latitude en Longitude coördinaten. Aan de achterkant wordt de Geocoding API aangesproken in Google Cloud. De opgehaalde coördinaten worden samen met het adres, de oppervlakte, het aantal kamers, de vraagprijs, buurt, wijk en gemeenten opgeslagen in een summary index.

Deze summary index wordt vervolgens gebruikt in de Maps+ for Splunk app. Hoewel er ook andere apps/add-ons zijn voor Google is er voor deze app gekozen gezien deze op stad/straat niveau de kaart kan weergeven. Daarnaast biedt deze app ook de functionaliteit om een Google Streetview panel te maken. Wat zoals eerder beschreven op een dashboard is geïmplementeerd. Dit panel maakt op de achtergrond een verbinding met de Maps API in Google Cloud. Deze geeft op basis van de coördinaten vervolgens op streetview een visualisatie weer.

What's next?

Het is een ongoing project waar nog veel meer uitgehaald kan worden. Ik zie steeds weer andere mogelijkheden en heb verschillende ideeën. Qua dashboard, ben ik bezig met de Splunk Dashboard Beta app om Rotterdam nog beter te kunnen visualiseren en het dashboard naar een hoger niveau te tillen. Verder gezien ik op langer termijn meer data heb wil ik trendlines gaan toevoegen en mogelijk biedt machine learning nog bepaalde voorspellende mogelijkheden. Verder ben ik aan het onderzoeken of ik ook de actuele verkoopprijzen kan verkrijgen zodat je kunt gaan zien hoeveel er gemiddeld overboden wordt. De vraag is echter of deze data vrij te verkrijgen is. Er zullen vast nog andere toffe ideeën zijn. Mocht jij er een hebben, let me know!