diff --git a/README.md b/README.md index cc93b06..2d1b50a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,13 @@ -# stembureau-meting +# Stembureau meting +Dit project heeft als doel de stemlokalen van de gemeenteraadsverkiezingen van 2022 te analyseren. Het wordt uitgevoerd door Open State Foundation in opdracht van het ministerie van Binnenlandse Zaken en Koninkrijksrelaties. -Dit project heeft als doel visualisaties te maken over de gemeenteraadsverkiezingen van 2022 met open data. Dit project was gedaan door de open state foundation in opdracht van het ministerie van binnenlandse zaken. +# Vereisten +De analyse wordt uitgevoerd via Python code in een Jupyter Notebook. De meeste informatie kun je direct bekijken op https://github.com/openstate/stembureau-meting/blob/main/jupyter/stembureau_data.ipynb. - -# Requirements - -[Anaconda](https://www.anaconda.com/) +Als je de code zelf wilt uitvoeren of aanpassen, installeer dan [Jupyter Notebook](https://docs.jupyter.org/en/latest/install/notebook-classic.html): +- Of door [Anaconda te installeren](https://www.anaconda.com/products/distribution) (dit is een grote installatie waarmee je ook Python installeert) +- Of als je al Python hebt op bv. een systeem dat Linux draait: + - `pip3 install --upgrade pip` + - `pip3 install jupyter` + - `pip3 install -r requirements.txt` + - `python3 -m notebook` hiermee start je de Notebook diff --git a/jupyter/stembureau_data.ipynb b/jupyter/stembureau_data.ipynb index 54a8111..a4cb9b5 100644 --- a/jupyter/stembureau_data.ipynb +++ b/jupyter/stembureau_data.ipynb @@ -4,17 +4,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Data gemeenteraadsverkiezingen 2022 Nederland\n", - "\n", - "Dit notebook is voor het verwerken van de data van de gemeenteraadsverkiezingen van 2022. Er zal hier stap voor stap door de data gelopen worden om het proces reproduceerbaar te maken voor latere verkiezingen. De eerste stap was de data ophalen van de bronnen, zowel de overheid als waar is mijn stemlokaal (voor geografische data van de stemlokalen). De bronnen gebruikt voor de data zijn voor de verkiezingen van 2022 is als volgt:\n", - "\n", + "# Datasets gemeenteraadsverkiezingen 2022\n", + "Deze notebook heeft als doel de stemlokalen van de gemeenteraadsverkiezingen van 2022 te analyseren. Er zal hier stap voor stap door de data gelopen worden om het proces reproduceerbaar te maken voor latere verkiezingen. De eerste stap was de data ophalen van de bronnen, zowel van de overheid als van 'Waar is mijn stemlokaal' (voor geografische data van de stemlokalen). Deze bronnen zijn voor de verkiezingen van 2022 gebruikt:\n", "- [Verkiezingsuitslagen Gemeenteraad 2022](https://data.overheid.nl/dataset/08b04bec-3332-4c76-bb0c-68bfaeb5df43)\n", - " - [Directe link naar uitslagen per gemeente CSV](https://data.overheid.nl/sites/default/files/dataset/08b04bec-3332-4c76-bb0c-68bfaeb5df43/resources/GR2022_2022-03-29T15.14.zip)\n", + " - [Directe link naar uitslagen per gemeente EML](https://data.overheid.nl/sites/default/files/dataset/08b04bec-3332-4c76-bb0c-68bfaeb5df43/resources/GR2022_2022-03-29T15.14.zip)\n", " - [Directe link naar kandidatenlijst met uitslagen CSV](https://data.overheid.nl/sites/default/files/dataset/08b04bec-3332-4c76-bb0c-68bfaeb5df43/resources/GR2022_alle-kandidaten_2022-02-22T08.34.csv)\n", - "- [Waar is mijn stemlokaal stembureau data](https://waarismijnstemlokaal.nl/data)\n", - " - [Directe link naar waar is mijn stemlokaal gemeenteraad 2022 CSV (CKAN)](https://ckan.dataplatform.nl/datastore/dump/d6a1b4c4-73c8-457b-9b75-a38428bded68)\n", - " - [Verkiezingsuitslagen gemeenteraadsverkiezingen 2022 geodata (Volkskrant)](https://data.openstate.eu/dataset/verkiezingsuitslagen-gemeenteraadsverkiezingen-2022)\n", - " - [Directe link naar GEOJSON bestand](https://data.openstate.eu/dataset/a1767f1b-bf0c-409b-b3b1-3af9954b57f4/resource/413be255-5070-48f4-b631-895097976abb/download/2022gr.geo.json)\n", + "- ['Waar is mijn stemlokaal' stembureau data](https://waarismijnstemlokaal.nl/data)\n", + " - [Directe link naar 'Waar is mijn stemlokaal' gemeenteraad 2022 CSV (CKAN)](https://ckan.dataplatform.nl/datastore/dump/d6a1b4c4-73c8-457b-9b75-a38428bded68)\n", + " - [Verkiezingsuitslagen gemeenteraadsverkiezingen 2022 geodata vab Open State Foundation en de Volkskrant (OSF/VK)](https://data.openstate.eu/dataset/verkiezingsuitslagen-gemeenteraadsverkiezingen-2022)\n", + " - [Directe link naar GeoJSON bestand](https://data.openstate.eu/dataset/a1767f1b-bf0c-409b-b3b1-3af9954b57f4/resource/413be255-5070-48f4-b631-895097976abb/download/2022gr.geo.json)\n", "- [CBS Wijk- en buurtkaart 2021](https://www.cbs.nl/nl-nl/dossier/nederland-regionaal/geografische-data/wijk-en-buurtkaart-2021)\n", " - [Directe link naar zip bestand met SHP bestand er in](https://www.cbs.nl/-/media/cbs/dossiers/nederland-regionaal/wijk-en-buurtstatistieken/wijkbuurtkaart_2021_v1.zip)\n", "- [CBS bevolkingsdichtheid kaart 100 bij 100 meter](https://www.cbs.nl/nl-nl/dossier/nederland-regionaal/geografische-data/kaart-van-100-meter-bij-100-meter-met-statistieken)\n", @@ -23,7 +21,9 @@ " - [Directe link naar 7z bestand met SHP bestand er in](https://www.cbs.nl/-/media/cbs/dossiers/nederland-regionaal/vierkanten/500/2021-cbs_vk500_2020_v1.zip)\n", "- [CBS schatting van kiesgerechtigden per gemeente](https://www.cbs.nl/nl-nl/maatwerk/2020/52/schatting-van-het-aantal-kiesgerechtigden-in-nederland)\n", "\n", - "De eerste stap die we moeten maken is de data importeren voor de analyse, daarna kunnen we kijken hoe goed de data is, hoe we het aan kunnen vullen, en wat er mee te doen. De makkelijkste structuur die we vonden was het geojson bestand van open state en de Volkskrant, daar staan alle stemlokalen al in een lijst, en we hebben een makkelijk framework om het te importeren; geopandas. We laden deze dan ook als eerste in." + "# Data inladen en eerste analyse\n", + "## OSF/VK GeoJSON dataset: verkiezingsuitslagen per stembureau inclusief coördinaten\n", + "Als eerste importeren we de data voor de analyse, daarna kunnen we kijken hoe goed de data is, hoe we het aan kunnen vullen, en wat er mee te doen. We kijken eerst naar het GeoJSON bestand van Open State Foundation en de Volkskrant (OSF/VK). Daarin zijn de coördinaten van alle locaties van bijna alle stembureaus toegevoegd aan de lijst met stembureaus uit de officiële uitslagen zoals gepubliceerd door de Kiesraad. We kunnen een GeoJSON bestand direct inladen met geopandas." ] }, { @@ -54,7 +54,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We importeren nu de gemeente shapefile kaart van het CBS, om de overlay van onze stemlokalen eroverheen te kunnen doen. " + "## CBS dataset: gemeentegrenzen en informatie\n", + "We importeren nu de gemeente shapefile kaart van het CBS, om de overlay van onze stemlokalen eroverheen te leggen." ] }, { @@ -65,7 +66,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 73, @@ -76,7 +77,7 @@ "data": { "image/png": "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", "text/plain": [ - "
" + "" ] }, "metadata": { @@ -87,7 +88,16 @@ ], "source": [ "nl_map = gpd.read_file(r'../data/shape/Netherlands_shapefile/gemeente_2021_v1.shp')\n", - "nl_map.to_crs(epsg=4326).plot()\n" + "plot = nl_map.to_crs(epsg=4326).plot()\n", + "plot.set_title('Plot van de gemeenten uit de CBS Wijk- en buurtkaart 2021')\n", + "plot\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De CBS Wijk- en buurtkaart 2021 bevat ook naast de gemeentegrenzen ook informatie (bv. aantal inwoners) over de gemeenten. We printen dat hier uit om daar een beeld van te krijgen." ] }, { @@ -159,6 +169,13 @@ "print(nl_map)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hieronder plotten we de gegevens van stembureaus op de kaart van het CBS:" + ] + }, { "cell_type": "code", "execution_count": 75, @@ -167,7 +184,7 @@ { "data": { "text/plain": [ - "" + "Text(0.5,1,'Stembureaus op de gemeentekaart van het CBS')" ] }, "execution_count": 75, @@ -178,7 +195,7 @@ "data": { "image/png": "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", "text/plain": [ - "
" + "" ] }, "metadata": { @@ -192,7 +209,8 @@ "\n", "fig, ax = plt.subplots(figsize = (10,10))\n", "nl_map.to_crs(epsg=4326).plot(ax=ax, color='lightgrey')\n", - "df_geojson.plot(ax=ax)" + "df_geojson.plot(ax=ax)\n", + "ax.set_title('Stembureaus op de gemeentekaart van het CBS')" ] }, { @@ -1006,7 +1024,7 @@ "text": [ "/tmp/ipykernel_112022/291552514.py:3: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n", "\n", - " mobiel_mask = df_geojson['geometry'].centroid.x == 0\n" + " \"\"\"\n" ] }, { @@ -1081,8 +1099,10 @@ } ], "source": [ - "#de waarschuwing over de projectie die niet klopt kan genegeerd worden, we zoeken naar data die x = 0 is, de projectie gaat geen effect hebben op die data in Nederland\n", - "#filter de data en print welke waardes 0 hebben op x\n", + "# De waarschuwing over de projectie die niet klopt kan genegeerd worden, we zoeken naar data die x = 0 is,\n", + "# de projectie gaat geen effect hebben op die data in Nederland.\n", + "\n", + "# Filter de data en print welke waardes 0 hebben op x.\n", "mobiel_mask = df_geojson['geometry'].centroid.x == 0\n", "i = 0\n", "for item in mobiel_mask:\n", @@ -1207,12 +1227,20 @@ "metadata": {}, "outputs": [], "source": [ - "#let's also check if none fell through the cracks, it might be some mobile polls did actually have a location posted erroneously.\n", + "# Let's also check if none fell through the cracks, it might be some mobile polls did actually have a location\n", + "# posted erroneously\n", "#mobiel_mask_name = df_geojson_clean['description'].str.contains('Mobiel')\n", "#df_geojson_clean = df_geojson_clean[~mobiel_mask_name]\n", "#df_geojson_clean" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 'Waar is mijn stemlokaal' dataset (wims)" + ] + }, { "cell_type": "code", "execution_count": 86, @@ -2083,9 +2111,11 @@ } ], "source": [ - "\n", + "# Convert the wims data to a geopandas dataframe\n", "gdf_wims = gpd.GeoDataFrame(\n", - " df_wims, geometry=gpd.points_from_xy(df_wims.Longitude, df_wims.Latitude)).set_crs(epsg=4326, inplace=True)\n", + " df_wims,\n", + " geometry=gpd.points_from_xy(df_wims.Longitude, df_wims.Latitude)\n", + ").set_crs(epsg=4326, inplace=True)\n", "\n", "gdf_wims" ] @@ -2523,11 +2553,33 @@ } ], "source": [ - "gdf_wims_dedupe = gdf_wims.drop_duplicates(subset =\"geometry\", keep = False)\n", - "df_geojson_dedupe = df_geojson_clean.drop_duplicates(subset =\"geometry\", keep = False)\n", + "# We only want to analyse stemlokalen so deduplicate the stembureaus based on their location's coordinates\n", + "gdf_wims_dedupe = gdf_wims.drop_duplicates(subset=\"geometry\", keep=False)\n", + "df_geojson_dedupe = df_geojson_clean.drop_duplicates(subset=\"geometry\", keep=False)\n", "gdf_wims_dedupe" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voor dit onderzoek zijn we enkel geïnteresseerd in de locaties van stembureaus, oftewel de stemlokalen. Hierboven hebben we de stembureaus uit de wims dataset gededupliceerd op basis van de coördinaten van hun locatie.\n", + "\n", + "Het aantal stembureaus: 9275\n", + "\n", + "Het aantal stemlokalen: 8089\n", + "\n", + "Er zijn dus 1186 stembureaus gevestigd op een locatie van minimaal één ander stembureau." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plots van alle stemlokalen op de kaart\n", + "### Stemlokalen uit de wims dataset" + ] + }, { "cell_type": "code", "execution_count": 89, @@ -2578,7 +2630,7 @@ { "data": { "text/plain": [ - "
" + "" ] }, "metadata": { @@ -2593,6 +2645,13 @@ "gdf_wims_dedupe.plot(ax=ax)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Stemlokalen uit de OSF/VK GeoJSON dataset" + ] + }, { "cell_type": "code", "execution_count": null, @@ -2631,7 +2690,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nu we een mooie kaart hebben van nederland met de stemlokalen erop, kunnen we gaan kijken naar hoe dit verhoud met de bevolkingsdichtheid als eerste voorbeeld. De kaart is opgehaald van het CBS, eerst gaan we kijken hoe de kaart er op zichzelf met dezelfde projectie uitziet." + "Nu we een kaart van nederland met de stemlokalen erop hebben, kunnen we als eerste voorbeeld gaan kijken hoe dit zich verhoudt met de bevolkingsdichtheid. De kaart is opgehaald van het CBS, eerst gaan we kijken hoe de kaart er op zichzelf met dezelfde projectie uitziet." ] }, { @@ -2671,7 +2730,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Het verwerken van de 100m bij 100m vierkanten kaar duurde heel lang (langer dan een half uur) op de laptop, en is dus niet ideaal tenzij we dit niveau van detail écht nodig hebben. Er is namelijk nog een andere kaart met dezelfde gegevens beschikbaar, maar met een grid van 500 bij 500 meter in plaats van 100 bij 100. Laten we dus kijken hoe vaak een stemlokaal dichterbij dan 100 meter van de dichtstbijzijnde andere is. De makkelijkste manier om dat te doen zonder alle punten met alle andere te vergelijken (heel veel moeite), is een extra dataframe maken als een kopie, alle indexen 1 opschuiven (want alle stemlokalen zijn al in een volgorde van clustering), en dan de laagste afstand bekijken." + "Het verwerken van de 100m bij 100m vierkanten kaart duurde lang (langer dan een half uur) op de laptop, en is dus niet ideaal tenzij we dit niveau van detail écht nodig hebben. Er is namelijk nog een andere kaart met dezelfde gegevens beschikbaar, maar met een grid van 500 bij 500 meter in plaats van 100 bij 100. Laten we dus kijken hoe vaak een stemlokaal dichterbij dan 100 meter van de dichtstbijzijnde andere is. De makkelijkste manier om dat te doen zonder alle punten met alle andere te vergelijken (wat lang duurt), is een extra dataframe maken als een kopie, alle indexen 1 opschuiven (want alle stemlokalen zijn al in een volgorde van clustering), en dan de laagste afstand bekijken." ] }, { @@ -2683,22 +2742,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "11165 0.002608\n", - "1021 0.004853\n", - "3196 0.004875\n", - "1923 2.693202\n", - "3757 3.609362\n", - " ... \n", - "7444 253385.654588\n", - "9711 263408.187856\n", - "4392 266925.200994\n", - "9297 271954.076837\n", - "0 NaN\n", - "Name: distance, Length: 11670, dtype: float64\n" + "12595 0.000000\n", + "7470 0.000000\n", + "1263 0.000000\n", + "7578 0.000000\n", + "7580 0.000000\n", + " ... \n", + "2235 499.159730\n", + "6809 499.369706\n", + "4749 499.451620\n", + "7965 499.453972\n", + "0 NaN\n", + "Name: distance, Length: 2357, dtype: float64\n" ] } ], "source": [ + "# Use Rijksdriehoekscoördinaten (EPSG:28992) as this uses meters as unit so we can calculate the distance in meters\n", "df_shifted = df_geojson_clean.to_crs('EPSG:28992')\n", "\n", "df_shifted['geometry (shifted)'] = df_shifted['geometry'].shift(periods=1)\n", @@ -2713,7 +2773,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We kunnen dus vaststellen dat afstanden van onder de 500 meter waarschijnlijk zeldzaam zijn, en we verder kunnen gaan met de 500 meter bij 500 meter kaart. Laten we nu dus een projectie proberen te maken met de bevolkingsdichtheid erop om het te vergelijken met de stemlokalen en hun posities en clustering." + "Los van bovenstaande resultaten blijkt het dat de 100m kaart niet dezelfde inwonersgegevens heeft als de 500m kaart. Deze hebben we echter nodig voor de analyse, dus we gaan verder met de 500 bij 500 meter kaart. Laten we nu een projectie proberen te maken met de bevolkingsdichtheid erop om het te vergelijken met de stemlokalen en hun posities en clustering." ] }, { diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..28a31bb --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +geopandas==0.9.0