stembureau-meting/jupyter/stembureau_data.ipynb

637 lines
71 KiB
Plaintext
Raw Normal View History

2022-03-29 17:09:40 +02:00
{
"cells": [
{
"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",
2022-03-29 17:09:40 +02:00
"\n",
"- [Verkiezingsuitslagen Gemeenteraad 2022](https://data.overheid.nl/dataset/verkiezingsuitslagen-gemeenteraad-2022#panel-resources)\n",
" - [Directe link naar uitslagen per gemeente CSV](https://data.overheid.nl/sites/default/files/dataset/08b04bec-3332-4c76-bb0c-68bfaeb5df43/resources/GR2022_osv4-3_2022-03-24T15.33.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",
2022-03-29 17:09:40 +02:00
"- [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",
"- [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",
2022-03-29 17:09:52 +02:00
"\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 stembureaus al in een lijst, en we hebben een makkelijk framework om het te importeren; geopandas. We laden deze dan ook als eerste in."
2022-03-29 17:09:52 +02:00
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/lillian/.local/lib/python3.9/site-packages/fiona/collection.py:208: FeatureWarning: Empty field name at index 61\n",
" self._schema = self.session.get_schema()\n",
"/home/lillian/anaconda3/lib/python3.9/site-packages/geopandas/geodataframe.py:600: UserWarning: Empty field name at index 61\n",
" for feature in features_lst:\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'geopandas.geodataframe.GeoDataFrame'>\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Stembureau</th>\n",
" <th>Adres</th>\n",
" <th>Locatie</th>\n",
" <th>description</th>\n",
" <th>Geldige stemmen</th>\n",
" <th>Opgeroepen</th>\n",
" <th>Ongeldig</th>\n",
" <th>Blanco</th>\n",
" <th>Geldige stempassen</th>\n",
" <th>Geldige volmachtbewijzen</th>\n",
" <th>...</th>\n",
" <th>Nationale Bond tegen Overheidszaken - DH</th>\n",
" <th>Haags Belang</th>\n",
" <th>INL Den Haag</th>\n",
" <th>Rosmalens Belang</th>\n",
" <th>De Bossche Groenen</th>\n",
" <th>\"Leefbaar 's-Hertogenbosch\" Paul Kagie</th>\n",
" <th>RAADSGROEPERING ''BOSCH-BELANG''</th>\n",
" <th>gewoon ge-DREVEN</th>\n",
" <th>VOOR Den Bosch Joep Gersjes</th>\n",
" <th>geometry</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>9461BH</td>\n",
" <td>SB1</td>\n",
" <td>Stembureau Gemeentehuis Gieten (postcode: 9461...</td>\n",
" <td>784</td>\n",
" <td>2780</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>700</td>\n",
" <td>90</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>POINT (6.75899 53.00524)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>9461DA</td>\n",
" <td>SB2</td>\n",
" <td>Stembureau OBS Gieten (postcode: 9461 DA)</td>\n",
" <td>562</td>\n",
" <td>1396</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>518</td>\n",
" <td>44</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>POINT (6.75990 52.99975)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>9461JA</td>\n",
" <td>SB3</td>\n",
" <td>Stembureau Zorgcentrum Dekelhem (postcode: 946...</td>\n",
" <td>566</td>\n",
" <td>1409</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>516</td>\n",
" <td>54</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>POINT (6.76600 53.00494)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>9451KD</td>\n",
" <td>SB4</td>\n",
" <td>Stembureau Ontmoetingscentrum Boerhorn Rolde (...</td>\n",
" <td>1495</td>\n",
" <td>2209</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>1335</td>\n",
" <td>166</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>POINT (6.64736 52.98281)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>6</td>\n",
" <td>9454PL</td>\n",
" <td>SB6</td>\n",
" <td>Stembureau Dropshuis de Eekhof (postcode: 9454...</td>\n",
" <td>347</td>\n",
" <td>477</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>298</td>\n",
" <td>51</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>POINT (6.60459 52.95269)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12591</th>\n",
" <td>703</td>\n",
" <td>5391AR</td>\n",
" <td>SB703</td>\n",
" <td>Stembureau Stembureau Gemeenschapshuis de Meen...</td>\n",
" <td>268</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>237</td>\n",
" <td>32</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>105.0</td>\n",
" <td>2.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>33.0</td>\n",
" <td>0.0</td>\n",
" <td>POINT (5.43290 51.72810)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12592</th>\n",
" <td>705</td>\n",
" <td>5391AR</td>\n",
" <td>SB705</td>\n",
" <td>Stembureau Stembureau Gemeenschapshuis De Meen...</td>\n",
" <td>398</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>359</td>\n",
" <td>40</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>174.0</td>\n",
" <td>6.0</td>\n",
" <td>2.0</td>\n",
" <td>3.0</td>\n",
" <td>31.0</td>\n",
" <td>2.0</td>\n",
" <td>POINT (5.43290 51.72810)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12593</th>\n",
" <td>750</td>\n",
" <td>5382KE</td>\n",
" <td>SB750</td>\n",
" <td>Stembureau Stembureau Gemeenschapshuis 't Zijl...</td>\n",
" <td>663</td>\n",
" <td>2321</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>552</td>\n",
" <td>113</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>47.0</td>\n",
" <td>19.0</td>\n",
" <td>53.0</td>\n",
" <td>2.0</td>\n",
" <td>62.0</td>\n",
" <td>5.0</td>\n",
" <td>POINT (5.45919 51.70595)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12594</th>\n",
" <td>751</td>\n",
" <td>5382KE</td>\n",
" <td>SB751</td>\n",
" <td>Stembureau Stembureau Gemeenschapshuis 't Zijl...</td>\n",
" <td>170</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>151</td>\n",
" <td>19</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>8.0</td>\n",
" <td>11.0</td>\n",
" <td>13.0</td>\n",
" <td>1.0</td>\n",
" <td>22.0</td>\n",
" <td>1.0</td>\n",
" <td>POINT (5.45919 51.70595)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12595</th>\n",
" <td>752</td>\n",
" <td>5283KE</td>\n",
" <td>SB752</td>\n",
" <td>Stembureau Stembureau Gemeenschapshuis 't Zijl...</td>\n",
" <td>222</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>193</td>\n",
" <td>29</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10.0</td>\n",
" <td>2.0</td>\n",
" <td>22.0</td>\n",
" <td>2.0</td>\n",
" <td>28.0</td>\n",
" <td>0.0</td>\n",
" <td>POINT (5.45919 51.70595)</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>12596 rows × 973 columns</p>\n",
"</div>"
],
"text/plain": [
" Stembureau Adres Locatie \\\n",
"0 1 9461BH SB1 \n",
"1 2 9461DA SB2 \n",
"2 3 9461JA SB3 \n",
"3 4 9451KD SB4 \n",
"4 6 9454PL SB6 \n",
"... ... ... ... \n",
"12591 703 5391AR SB703 \n",
"12592 705 5391AR SB705 \n",
"12593 750 5382KE SB750 \n",
"12594 751 5382KE SB751 \n",
"12595 752 5283KE SB752 \n",
"\n",
" description Geldige stemmen \\\n",
"0 Stembureau Gemeentehuis Gieten (postcode: 9461... 784 \n",
"1 Stembureau OBS Gieten (postcode: 9461 DA) 562 \n",
"2 Stembureau Zorgcentrum Dekelhem (postcode: 946... 566 \n",
"3 Stembureau Ontmoetingscentrum Boerhorn Rolde (... 1495 \n",
"4 Stembureau Dropshuis de Eekhof (postcode: 9454... 347 \n",
"... ... ... \n",
"12591 Stembureau Stembureau Gemeenschapshuis de Meen... 268 \n",
"12592 Stembureau Stembureau Gemeenschapshuis De Meen... 398 \n",
"12593 Stembureau Stembureau Gemeenschapshuis 't Zijl... 663 \n",
"12594 Stembureau Stembureau Gemeenschapshuis 't Zijl... 170 \n",
"12595 Stembureau Stembureau Gemeenschapshuis 't Zijl... 222 \n",
"\n",
" Opgeroepen Ongeldig Blanco Geldige stempassen \\\n",
"0 2780 3 3 700 \n",
"1 1396 0 0 518 \n",
"2 1409 2 2 516 \n",
"3 2209 2 4 1335 \n",
"4 477 0 2 298 \n",
"... ... ... ... ... \n",
"12591 0 0 1 237 \n",
"12592 0 1 0 359 \n",
"12593 2321 2 0 552 \n",
"12594 0 0 0 151 \n",
"12595 0 0 0 193 \n",
"\n",
" Geldige volmachtbewijzen ... \\\n",
"0 90 ... \n",
"1 44 ... \n",
"2 54 ... \n",
"3 166 ... \n",
"4 51 ... \n",
"... ... ... \n",
"12591 32 ... \n",
"12592 40 ... \n",
"12593 113 ... \n",
"12594 19 ... \n",
"12595 29 ... \n",
"\n",
" Nationale Bond tegen Overheidszaken - DH Haags Belang INL Den Haag \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"... ... ... ... \n",
"12591 NaN NaN NaN \n",
"12592 NaN NaN NaN \n",
"12593 NaN NaN NaN \n",
"12594 NaN NaN NaN \n",
"12595 NaN NaN NaN \n",
"\n",
" Rosmalens Belang De Bossche Groenen \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"... ... ... \n",
"12591 105.0 2.0 \n",
"12592 174.0 6.0 \n",
"12593 47.0 19.0 \n",
"12594 8.0 11.0 \n",
"12595 10.0 2.0 \n",
"\n",
" \"Leefbaar 's-Hertogenbosch\" Paul Kagie \\\n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"3 NaN \n",
"4 NaN \n",
"... ... \n",
"12591 6.0 \n",
"12592 2.0 \n",
"12593 53.0 \n",
"12594 13.0 \n",
"12595 22.0 \n",
"\n",
" RAADSGROEPERING ''BOSCH-BELANG'' gewoon ge-DREVEN \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"... ... ... \n",
"12591 0.0 33.0 \n",
"12592 3.0 31.0 \n",
"12593 2.0 62.0 \n",
"12594 1.0 22.0 \n",
"12595 2.0 28.0 \n",
"\n",
" VOOR Den Bosch Joep Gersjes geometry \n",
"0 NaN POINT (6.75899 53.00524) \n",
"1 NaN POINT (6.75990 52.99975) \n",
"2 NaN POINT (6.76600 53.00494) \n",
"3 NaN POINT (6.64736 52.98281) \n",
"4 NaN POINT (6.60459 52.95269) \n",
"... ... ... \n",
"12591 0.0 POINT (5.43290 51.72810) \n",
"12592 2.0 POINT (5.43290 51.72810) \n",
"12593 5.0 POINT (5.45919 51.70595) \n",
"12594 1.0 POINT (5.45919 51.70595) \n",
"12595 0.0 POINT (5.45919 51.70595) \n",
"\n",
"[12596 rows x 973 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import geopandas as gpd\n",
"\n",
"crs = {'init':'EPSG:4326'}\n",
"df_geojson = gpd.read_file(r'../data/2022gr.geo.json', crs=crs)\n",
"print(type(df_geojson))\n",
"df_geojson"
]
},
{
"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. "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"nl_map = gpd.read_file(r'../data/shape/Netherlands_shapefile/gemeente_2021_v1.shp')\n",
"nl_map.to_crs(epsg=4326).plot()\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
2022-03-29 17:09:52 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
2022-03-29 17:09:52 +02:00
]
},
"execution_count": 23,
2022-03-29 17:09:52 +02:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\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)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (745234620.py, line 3)",
"output_type": "error",
"traceback": [
"\u001b[0;36m Input \u001b[0;32mIn [24]\u001b[0;36m\u001b[0m\n\u001b[0;31m dfwims.\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
]
2022-03-29 17:09:52 +02:00
}
],
"source": [
"df_wims = pd.read_csv(r'../data/wims.csv')\n",
"print(df_wims)\n",
"dfwims."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#de eerste vijf rijen zijn meta-data en kunnen we gerust weghalen voor nu \n",
"df_gr_gr = pd.read_csv(r'../data/stemmen/01_Groningen/osv4-3_telling_gr2022_groningen.csv', skiprows=5, header=None, delimiter=';')\n",
"print(df_gr_gr)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"De data is heel gecompliceerd, dus we moeten het bruikbaar maken in pandas. Met hoe de data eruit ziet in een CSV in libre office willen we een constructie maken van de verschillende onderdelen. We hebben de data van de stemlokalen apart al, die kunnen we dus negeren. We willen de data van de lijsten apart hebben. "
2022-03-29 17:09:40 +02:00
]
}
],
"metadata": {
"interpreter": {
"hash": "3d1ccb9efb47efc90847d5703ae4e5663eea6663e461c6dfd943b50a653adc65"
},
"kernelspec": {
"display_name": "Python 3.9.7 ('base')",
"language": "python",
"name": "python3"
},
"language_info": {
2022-03-29 17:09:52 +02:00
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
2022-03-29 17:09:40 +02:00
"name": "python",
2022-03-29 17:09:52 +02:00
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.11"
2022-03-29 17:09:40 +02:00
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}