Skip to the content.

On this page I will show you where I got data, how I collected, investigated and clean it.

There is a website called Gronometer where you can find a lot of open data about Groningen. This data is also available to download as datasets. I choosed some data from 2018 year available for different neighbourhoods and downloaded it to Groningen_population_data_2018.csv file.

To collect the data I need, first let’s read the data about dog’s owner that we have. Then rename some columns and unify column buurtcode to has the same value format as other datasets (which we’ll be use below)

import pandas as pd 

data_dogs=pd.read_csv('honden_data.csv', sep = ";")
data_dogs = data_dogs.rename(columns={'buurtnr': 'buurtcode'})
data_dogs = data_dogs.rename(columns={'2018': 'dogs_amount'})
data_dogs['buurtcode'] = data_dogs['buurtcode'].astype(str).str.replace('14', '')
data_dogs['buurtcode'] = data_dogs.apply(lambda row: "BU00" + str(row['buurtcode']), axis=1)
data_dogs = data_dogs.drop('2016', axis=1)

print(data_dogs.shape)
data_dogs.head()
(96, 2)
buurtcode dogs_amount
0 BU000000 37
1 BU000001 51
2 BU000002 48
3 BU000003 21
4 BU000005 108

Now I would like to read and explore the data from Wijk- en buurtkaart 2018 dataset. I saved a data about neighbourhoods to .csv file.

First I needed to filter this data because only data about Groningen is needed:

data_groningen = new_data[new_data['gemeentenaam'] == "Groningen"]

and then I saved it back to .csv file

Let’s take a look at what we have here:

data_buurtkaart = pd.read_csv('groningen_buurten_2018.csv')
data_buurtkaart['buurtcode'] = data_buurtkaart['buurtcode'].astype(str).str.replace('BU0014', 'BU00')

print(data_buurtkaart.shape)
data_buurtkaart.head()
(110, 209)
fid geom buurtcode buurtnaam wijkcode gemeentecode gemeentenaam indelingswijziging_wijken_en_buurten water meest_voorkomende_postcode ... theater_gemiddelde_afstand_in_km theater_gemiddeld_aantal_binnen_5_km theater_gemiddeld_aantal_binnen_10_km theater_gemiddeld_aantal_binnen_20_km gemiddelde_afstand_tot_museum gemiddeld_aantal_musea_binnen_5_km gemiddeld_aantal_musea_binnen_10_km gemiddeld_aantal_musea_binnen_20_km jaarstatcode jaar
0 151 GP BU000000 Binnenstad-Noord WK001400 GM0014 Groningen 1 NEE 9712 ... 0.6 6.0 6.0 8.0 0.3 5.0 5.9 17.0 2018BU00140000 2018.0
1 152 GP BU000001 Binnenstad-Zuid WK001400 GM0014 Groningen 1 NEE 9711 ... 0.4 6.0 6.0 8.0 0.4 5.0 5.6 17.0 2018BU00140001 2018.0
2 153 GP BU000002 Binnenstad-Oost WK001400 GM0014 Groningen 1 NEE 9711 ... 0.4 6.0 6.0 8.0 0.5 5.0 5.3 17.0 2018BU00140002 2018.0
3 154 GP BU000003 Binnenstad-West WK001400 GM0014 Groningen 1 NEE 9718 ... 1.1 6.0 6.0 8.0 0.3 5.0 6.3 17.0 2018BU00140003 2018.0
4 155 GP BU000004 Noorderplantsoen WK001400 GM0014 Groningen 1 NEE 9717 ... 1.0 6.0 6.0 8.0 0.5 5.0 6.0 17.0 2018BU00140004 2018.0

5 rows × 209 columns

We don’t need some of the columns here:

data_groningen = data_buurtkaart.copy()
data_groningen.drop('fid', axis=1, inplace = True)
data_groningen.drop('geom', axis=1, inplace = True)
data_groningen.drop('gemeentecode', axis=1, inplace = True)
data_groningen.drop('gemeentenaam', axis=1, inplace = True)
data_groningen.drop('indelingswijziging_wijken_en_buurten', axis=1, inplace = True)
data_groningen.drop('water', axis=1, inplace = True)
data_groningen.drop('meest_voorkomende_postcode', axis=1, inplace = True)
data_groningen.drop('dekkingspercentage', axis=1, inplace = True)
data_groningen.drop('omgevingsadressendichtheid', axis=1, inplace = True)
data_groningen.drop('stedelijkheid_adressen_per_km2', axis=1, inplace = True)
data_groningen.drop('aantal_inwoners', axis=1, inplace = True)
data_groningen.drop('mannen', axis=1, inplace = True)
data_groningen.drop('vrouwen', axis=1, inplace = True)
data_groningen.drop('geboorte_totaal', axis=1, inplace = True)
data_groningen.drop('geboortes_per_1000_inwoners', axis=1, inplace = True)
data_groningen.drop('sterfte_totaal', axis=1, inplace = True)
data_groningen.drop('sterfte_relatief', axis=1, inplace = True)
data_groningen.drop('aantal_bedrijven_nijverheid_energie', axis=1, inplace = True)
data_groningen.drop('aantal_bedrijven_handel_en_horeca', axis=1, inplace = True)
data_groningen.drop('aantal_bedrijven_vervoer_informatie_communicatie', axis=1, inplace = True)
data_groningen.drop('aantal_bedrijven_financieel_onroerend_goed', axis=1, inplace = True)
data_groningen.drop('aantal_bedrijven_zakelijke_dienstverlening', axis=1, inplace = True)
data_groningen.drop('aantal_bedrijven_cultuur_recreatie_overige', axis=1, inplace = True)
data_groningen.drop('aantal_bedrijfsvestigingen', axis=1, inplace = True)
data_groningen.drop('woningvoorraad', axis=1, inplace = True)
data_groningen.drop('percentage_bewoond', axis=1, inplace = True)
data_groningen.drop('percentage_bouwjaarklasse_tot_2000', axis=1, inplace = True)
data_groningen.drop('percentage_bouwjaarklasse_vanaf_2000', axis=1, inplace = True)
data_groningen.drop('percentage_leegstand_woningen', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruik_totaal', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruik_appartement', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruik_tussenwoning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruik_hoekwoning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruik_2_onder_1_kap_woning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruik_vrijstaande_woning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruik_huurwoning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gasverbruikkoopwoning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_elektriciteitsverbruik_totaal', axis=1, inplace = True)
data_groningen.drop('gemiddeld_elektriciteitsverbruik_appartement', axis=1, inplace = True)
data_groningen.drop('gemiddeld_elektriciteitsverbruik_tussenwoning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_elektriciteitsverbruik_hoekwoning', axis=1, inplace = True)
data_groningen.drop('gem_elektriciteitsverbruik_2_onder_1_kap_woning', axis=1, inplace = True)
data_groningen.drop('gem_elektriciteitsverbruik_vrijstaande_woning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_elektriciteitsverbruik_huurwoning', axis=1, inplace = True)
data_groningen.drop('gemiddeld_elektriciteitsverbruikkoopwoning', axis=1, inplace = True)
data_groningen.drop('netto_arbeidsparticipatie', axis=1, inplace = True)
data_groningen.drop('aantal_inkomensontvangers', axis=1, inplace = True)
data_groningen.drop('gemiddeld_inkomen_per_inkomensontvanger', axis=1, inplace = True)
data_groningen.drop('percentage_personen_met_laag_inkomen', axis=1, inplace = True)
data_groningen.drop('percentage_personen_met_hoog_inkomen', axis=1, inplace = True)
data_groningen.drop('aantal_personen_met_een_ao_uitkering_totaal', axis=1, inplace = True)
data_groningen.drop('aantal_personen_met_een_ww_uitkering_totaal', axis=1, inplace = True)
data_groningen.drop('percentage_huishoudens_onder_of_rond_sociaal_minimum', axis=1, inplace = True)
data_groningen.drop('percentage_huishoudens_met_lage_koopkracht', axis=1, inplace = True)
data_groningen.drop('aantal_personen_met_een_aow_uitkering_totaal', axis=1, inplace = True)
data_groningen.drop('gemiddeld_gestandaardiseerd_inkomen_van_huishoudens', axis=1, inplace = True)
data_groningen.drop('huishoudens_tot_110_percent_van_sociaal_minimum', axis=1, inplace = True)
data_groningen.drop('huishoudens_tot_120_percent_van_sociaal_minimum', axis=1, inplace = True)
data_groningen.drop('mediaan_vermogen_van_particuliere_huish', axis=1, inplace = True)
data_groningen.drop('aantal_jongeren_met_jeugdzorg_in_natura', axis=1, inplace = True)
data_groningen.drop('percentage_jongeren_met_jeugdzorg_in_natura', axis=1, inplace = True)
data_groningen.drop('aantal_Wmo_cliënten', axis=1, inplace = True)
data_groningen.drop('aantal_Wmo_cliënten_per_1000_inwoners', axis=1, inplace = True)
data_groningen.drop('personenautos_per_km2', axis=1, inplace = True)
data_groningen.drop('aantal_personenautos_met_brandstof_benzine', axis=1, inplace = True)
data_groningen.drop('aantal_personenautos_met_overige_brandstof', axis=1, inplace = True)
data_groningen.drop('oppervlakte_totaal_in_ha', axis=1, inplace = True)
data_groningen.drop('oppervlakte_land_in_ha', axis=1, inplace = True)
data_groningen.drop('oppervlakte_water_in_ha', axis=1, inplace = True)
data_groningen.drop('huisartsenpraktijk_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('huisartsenpraktijk_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('huisartsenpraktijk_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('huisartsenpraktijk_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('huisartsenpost_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('apotheek_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_incl_buitenpolikliniek_gem_afst_in_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_incl_buitenpoli_gem_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_incl_buitenpoli_gem_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_incl_buitenpoli_gem_aantal_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_excl_buitenpolikliniek_gem_afst_in_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_excl_buitenpoli_gem_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_excl_buitenpoli_gem_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('ziekenhuis_excl_buitenpoli_gem_aantal_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('grote_supermarkt_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('grote_supermarkt_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('grote_supermarkt_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('grote_supermarkt_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('winkels_ov_dagelijkse_levensm_gem_afst_in_km', axis=1, inplace = True)
data_groningen.drop('winkels_ov_dagel_levensm_gem_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('winkels_ov_dagel_levensm_gem_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('winkels_ov_dagel_levensm_gem_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('warenhuis_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('warenhuis_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('warenhuis_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('warenhuis_gemiddeld_aantal_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('cafe_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('cafe_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('cafe_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('cafe_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('cafetaria_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('cafetaria_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('cafetaria_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('cafetaria_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('restaurant_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('restaurant_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('restaurant_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('restaurant_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('hotel_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('hotel_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('hotel_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('hotel_gemiddeld_aantal_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('kinderdagverblijf_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('kinderdagverblijf_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('kinderdagverblijf_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('kinderdagverblijf_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('buitenschoolse_opvang_gem_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('buitenschoolse_opvang_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('buitenschoolse_opvang_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('buitenschoolse_opvang_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('basisonderwijs_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('basisonderwijs_gemiddeld_aantal_binnen_1_km', axis=1, inplace = True)
data_groningen.drop('basisonderwijs_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('basisonderwijs_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('voortgezet_onderwijs_gem_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('voortgezet_onderwijs_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('voortgezet_onderwijs_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('voortgezet_onderwijs_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('vmbo_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('vmbo_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('vmbo_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('vmbo_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('havo_vwo_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('havo_vwo_gemiddeld_aantal_binnen_3_km', axis=1, inplace = True)
data_groningen.drop('havo_vwo_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('havo_vwo_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('brandweerkazerne_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('oprit_hoofdverkeersweg_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('treinstation_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('overstapstation_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('zwembad_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('kunstijsbaan_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('bibliotheek_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('poppodium_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('bioscoop_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('bioscoop_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('bioscoop_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('bioscoop_gemiddeld_aantal_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('sauna_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('zonnebank_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('attractiepark_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('attractiepark_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('attractiepark_gemiddeld_aantal_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('attractiepark_gemiddeld_aantal_binnen_50_km', axis=1, inplace = True)
data_groningen.drop('theater_gemiddelde_afstand_in_km', axis=1, inplace = True)
data_groningen.drop('theater_gemiddeld_aantal_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('theater_gemiddeld_aantal_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('theater_gemiddeld_aantal_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('gemiddelde_afstand_tot_museum', axis=1, inplace = True)
data_groningen.drop('gemiddeld_aantal_musea_binnen_5_km', axis=1, inplace = True)
data_groningen.drop('gemiddeld_aantal_musea_binnen_10_km', axis=1, inplace = True)
data_groningen.drop('gemiddeld_aantal_musea_binnen_20_km', axis=1, inplace = True)
data_groningen.drop('percentage_woningen_met_eigendom_onbekend', axis=1, inplace = True)
data_groningen.drop('vernieling_misdrijf_tegen_openbare_orde', axis=1, inplace = True)
data_groningen.drop('totaal_diefstal', axis=1, inplace = True)
data_groningen.drop('jaarstatcode', axis=1, inplace = True)
data_groningen.drop('jaar', axis=1, inplace = True)

And now let’s read the data I choosed and downloaded from Gronometer:

data_overig = pd.read_csv("Groningen_population_data_2018.csv", sep=';') 
data_overig[['buurt_number', 'buurt_name']] = data_overig['Buurten'].str.extract('(?P<buurt_number>[\d]+) (?P<buurt_name>[\s\S]+)', expand=True)
data_overig['buurtcode'] = data_overig.apply(lambda row: "BU00" + str(row['buurt_number']), axis=1)

data_overig.drop('buurt_number', axis=1, inplace = True)
data_overig.drop('buurt_name', axis=1, inplace = True)
data_overig.drop('Buurten', axis=1, inplace = True)
data_overig.drop('aantal mensen met een uitkering Participatiewet (Pw)|2018', axis=1, inplace = True)
data_overig.drop('percentage mensen met een uitkering krachtens de Participatiewet|2018', axis=1, inplace = True)
data_overig.drop('gemiddeld inkomen per persoon met inkomen|2018', axis=1, inplace = True)
data_overig.rename(columns={'aantal mensen met een uitkering Participatiewet (Pw)|2018': 'aantal mensen met een uitkering Participatiewet'}, inplace = True)

print(data_overig.shape)
print(data_overig.columns)
data_overig.head()
(151, 12)
Index(['bevolking totaal|2018', 'percentage minimahuishoudens|2018',
       'aantal minimahuishoudens|2018', 'gemiddeld huishoudensinkomen|2018',
       'aangiften diefstal af/uit woning|2018', 'aangiften diefstal auto|2018',
       'aangiften diefstal fiets|2018',
       'aangiften diefstal af/uit bedrijf|2018',
       'aangiften diefstal af/uit auto|2018', 'aangiften van vernieling|2018',
       'aangiften van mishandeling|2018', 'buurtcode'],
      dtype='object')
bevolking totaal|2018 percentage minimahuishoudens|2018 aantal minimahuishoudens|2018 gemiddeld huishoudensinkomen|2018 aangiften diefstal af/uit woning|2018 aangiften diefstal auto|2018 aangiften diefstal fiets|2018 aangiften diefstal af/uit bedrijf|2018 aangiften diefstal af/uit auto|2018 aangiften van vernieling|2018 aangiften van mishandeling|2018 buurtcode
0 4404.0 17,1 290 30,0 25.0 1.0 176.0 17.0 8.0 25.0 35.0 BU000000
1 6626.0 21,3 530 30,7 42.0 3.0 306.0 28.0 30.0 96.0 196.0 BU000001
2 4017.0 20,4 350 27,8 17.0 1.0 56.0 2.0 3.0 16.0 8.0 BU000002
3 1708.0 17,9 140 29,7 9.0 0.0 13.0 2.0 4.0 8.0 5.0 BU000003
4 11.0 NaN NaN NaN 0.0 0.0 0.0 0.0 0.0 0.0 0.0 BU000004

Let’s then merge data_dogs, data_groningen and data_overig together to the main dataset based on buurtcode column

data = pd.merge(data_groningen, data_overig, on="buurtcode")
data = pd.merge(data, data_dogs, on="buurtcode")

data.head()
buurtcode buurtnaam wijkcode bevolkingsdichtheid_inwoners_per_km2 percentage_personen_0_tot_15_jaar percentage_personen_15_tot_25_jaar percentage_personen_25_tot_45_jaar percentage_personen_45_tot_65_jaar percentage_personen_65_jaar_en_ouder percentage_ongehuwd ... aantal minimahuishoudens|2018 gemiddeld huishoudensinkomen|2018 aangiften diefstal af/uit woning|2018 aangiften diefstal auto|2018 aangiften diefstal fiets|2018 aangiften diefstal af/uit bedrijf|2018 aangiften diefstal af/uit auto|2018 aangiften van vernieling|2018 aangiften van mishandeling|2018 dogs_amount
0 BU000000 Binnenstad-Noord WK001400 11891.0 2.0 46.0 35.0 11.0 6.0 86.0 ... 290 30,0 25.0 1.0 176.0 17.0 8.0 25.0 35.0 37
1 BU000001 Binnenstad-Zuid WK001400 12011.0 2.0 47.0 33.0 11.0 6.0 87.0 ... 530 30,7 42.0 3.0 306.0 28.0 30.0 96.0 196.0 51
2 BU000002 Binnenstad-Oost WK001400 14979.0 3.0 40.0 36.0 14.0 7.0 84.0 ... 350 27,8 17.0 1.0 56.0 2.0 3.0 16.0 8.0 48
3 BU000003 Binnenstad-West WK001400 17507.0 2.0 38.0 40.0 11.0 9.0 84.0 ... 140 29,7 9.0 0.0 13.0 2.0 4.0 8.0 5.0 21
4 BU000005 Hortusbuurt-Ebbingekwartier WK001400 12509.0 5.0 41.0 30.0 15.0 9.0 82.0 ... 450 32,1 20.0 2.0 68.0 16.0 9.0 24.0 13.0 108

5 rows × 55 columns

print(data.shape)
print(data.columns)
(90, 55)
Index(['buurtcode', 'buurtnaam', 'wijkcode',
       'bevolkingsdichtheid_inwoners_per_km2',
       'percentage_personen_0_tot_15_jaar',
       'percentage_personen_15_tot_25_jaar',
       'percentage_personen_25_tot_45_jaar',
       'percentage_personen_45_tot_65_jaar',
       'percentage_personen_65_jaar_en_ouder', 'percentage_ongehuwd',
       'percentage_gehuwd', 'percentage_gescheid', 'percentage_verweduwd',
       'aantal_huishoudens', 'percentage_eenpersoonshuishoudens',
       'percentage_huishoudens_zonder_kinderen',
       'percentage_huishoudens_met_kinderen', 'gemiddelde_huishoudsgrootte',
       'percentage_westerse_migratieachtergrond',
       'percentage_niet_westerse_migratieachtergrond',
       'percentage_uit_marokko',
       'percentage_uit_nederlandse_antillen_en_aruba',
       'percentage_uit_suriname', 'percentage_uit_turkije',
       'percentage_overige_nietwestersemigratieachtergrond',
       'aantal_bedrijven_landbouw_bosbouw_visserij', 'gemiddelde_woningwaarde',
       'percentage_eengezinswoning', 'percentage_meergezinswoning',
       'percentage_koopwoningen', 'percentage_huurwoningen',
       'perc_huurwoningen_in_bezit_woningcorporaties',
       'perc_huurwoningen_in_bezit_overige_verhuurders',
       'percentage_werknemers', 'percentage_zelfstandigen',
       'gemiddeld_inkomen_per_inwoner',
       'percentage_huishoudens_met_laag_inkomen',
       'percentage_huishoudens_met_hoog_inkomen',
       'aantal_personen_met_een_algemene_bijstandsuitkering_totaal',
       'gewelds_en_seksuele_misdrijven', 'personenautos_totaal',
       'personenautos_per_huishouden', 'motortweewielers_totaal',
       'bevolking totaal|2018', 'percentage minimahuishoudens|2018',
       'aantal minimahuishoudens|2018', 'gemiddeld huishoudensinkomen|2018',
       'aangiften diefstal af/uit woning|2018', 'aangiften diefstal auto|2018',
       'aangiften diefstal fiets|2018',
       'aangiften diefstal af/uit bedrijf|2018',
       'aangiften diefstal af/uit auto|2018', 'aangiften van vernieling|2018',
       'aangiften van mishandeling|2018', 'dogs_amount'],
      dtype='object')
We can see that a lot of columns contains “ 2018” in the name, but all the data in this dataset is from 2018 year, so we can remove this part od the name. And add ‘_’ instead of space
for name, _ in data.items():
    new_name = name.replace('|2018', '')
    new_name = new_name.replace('.', '')
    new_name = new_name.replace(',', '')
    new_name = new_name.replace(':', '')
    new_name = new_name.replace('% ', 'perc ')
    new_name = new_name.replace('(', '')
    new_name = new_name.replace(')', '')
    new_name = new_name.replace(' ', '_')
    new_name = new_name.replace('_t/m_', '_')
    new_name = new_name.replace('af/uit', 'af_uit')
    data = data.rename(columns={name: new_name})


print(data.columns)
data.head()
Index(['buurtcode', 'buurtnaam', 'wijkcode',
       'bevolkingsdichtheid_inwoners_per_km2',
       'percentage_personen_0_tot_15_jaar',
       'percentage_personen_15_tot_25_jaar',
       'percentage_personen_25_tot_45_jaar',
       'percentage_personen_45_tot_65_jaar',
       'percentage_personen_65_jaar_en_ouder', 'percentage_ongehuwd',
       'percentage_gehuwd', 'percentage_gescheid', 'percentage_verweduwd',
       'aantal_huishoudens', 'percentage_eenpersoonshuishoudens',
       'percentage_huishoudens_zonder_kinderen',
       'percentage_huishoudens_met_kinderen', 'gemiddelde_huishoudsgrootte',
       'percentage_westerse_migratieachtergrond',
       'percentage_niet_westerse_migratieachtergrond',
       'percentage_uit_marokko',
       'percentage_uit_nederlandse_antillen_en_aruba',
       'percentage_uit_suriname', 'percentage_uit_turkije',
       'percentage_overige_nietwestersemigratieachtergrond',
       'aantal_bedrijven_landbouw_bosbouw_visserij', 'gemiddelde_woningwaarde',
       'percentage_eengezinswoning', 'percentage_meergezinswoning',
       'percentage_koopwoningen', 'percentage_huurwoningen',
       'perc_huurwoningen_in_bezit_woningcorporaties',
       'perc_huurwoningen_in_bezit_overige_verhuurders',
       'percentage_werknemers', 'percentage_zelfstandigen',
       'gemiddeld_inkomen_per_inwoner',
       'percentage_huishoudens_met_laag_inkomen',
       'percentage_huishoudens_met_hoog_inkomen',
       'aantal_personen_met_een_algemene_bijstandsuitkering_totaal',
       'gewelds_en_seksuele_misdrijven', 'personenautos_totaal',
       'personenautos_per_huishouden', 'motortweewielers_totaal',
       'bevolking_totaal', 'percentage_minimahuishoudens',
       'aantal_minimahuishoudens', 'gemiddeld_huishoudensinkomen',
       'aangiften_diefstal_af_uit_woning', 'aangiften_diefstal_auto',
       'aangiften_diefstal_fiets', 'aangiften_diefstal_af_uit_bedrijf',
       'aangiften_diefstal_af_uit_auto', 'aangiften_van_vernieling',
       'aangiften_van_mishandeling', 'dogs_amount'],
      dtype='object')
buurtcode buurtnaam wijkcode bevolkingsdichtheid_inwoners_per_km2 percentage_personen_0_tot_15_jaar percentage_personen_15_tot_25_jaar percentage_personen_25_tot_45_jaar percentage_personen_45_tot_65_jaar percentage_personen_65_jaar_en_ouder percentage_ongehuwd ... aantal_minimahuishoudens gemiddeld_huishoudensinkomen aangiften_diefstal_af_uit_woning aangiften_diefstal_auto aangiften_diefstal_fiets aangiften_diefstal_af_uit_bedrijf aangiften_diefstal_af_uit_auto aangiften_van_vernieling aangiften_van_mishandeling dogs_amount
0 BU000000 Binnenstad-Noord WK001400 11891.0 2.0 46.0 35.0 11.0 6.0 86.0 ... 290 30,0 25.0 1.0 176.0 17.0 8.0 25.0 35.0 37
1 BU000001 Binnenstad-Zuid WK001400 12011.0 2.0 47.0 33.0 11.0 6.0 87.0 ... 530 30,7 42.0 3.0 306.0 28.0 30.0 96.0 196.0 51
2 BU000002 Binnenstad-Oost WK001400 14979.0 3.0 40.0 36.0 14.0 7.0 84.0 ... 350 27,8 17.0 1.0 56.0 2.0 3.0 16.0 8.0 48
3 BU000003 Binnenstad-West WK001400 17507.0 2.0 38.0 40.0 11.0 9.0 84.0 ... 140 29,7 9.0 0.0 13.0 2.0 4.0 8.0 5.0 21
4 BU000005 Hortusbuurt-Ebbingekwartier WK001400 12509.0 5.0 41.0 30.0 15.0 9.0 82.0 ... 450 32,1 20.0 2.0 68.0 16.0 9.0 24.0 13.0 108

5 rows × 55 columns

print(data.dtypes)
buurtcode                                                      object
buurtnaam                                                      object
wijkcode                                                       object
bevolkingsdichtheid_inwoners_per_km2                          float64
percentage_personen_0_tot_15_jaar                             float64
percentage_personen_15_tot_25_jaar                            float64
percentage_personen_25_tot_45_jaar                            float64
percentage_personen_45_tot_65_jaar                            float64
percentage_personen_65_jaar_en_ouder                          float64
percentage_ongehuwd                                           float64
percentage_gehuwd                                             float64
percentage_gescheid                                           float64
percentage_verweduwd                                          float64
aantal_huishoudens                                            float64
percentage_eenpersoonshuishoudens                             float64
percentage_huishoudens_zonder_kinderen                        float64
percentage_huishoudens_met_kinderen                           float64
gemiddelde_huishoudsgrootte                                   float64
percentage_westerse_migratieachtergrond                       float64
percentage_niet_westerse_migratieachtergrond                  float64
percentage_uit_marokko                                        float64
percentage_uit_nederlandse_antillen_en_aruba                  float64
percentage_uit_suriname                                       float64
percentage_uit_turkije                                        float64
percentage_overige_nietwestersemigratieachtergrond            float64
aantal_bedrijven_landbouw_bosbouw_visserij                    float64
gemiddelde_woningwaarde                                       float64
percentage_eengezinswoning                                    float64
percentage_meergezinswoning                                   float64
percentage_koopwoningen                                       float64
percentage_huurwoningen                                       float64
perc_huurwoningen_in_bezit_woningcorporaties                  float64
perc_huurwoningen_in_bezit_overige_verhuurders                float64
percentage_werknemers                                         float64
percentage_zelfstandigen                                      float64
gemiddeld_inkomen_per_inwoner                                 float64
percentage_huishoudens_met_laag_inkomen                       float64
percentage_huishoudens_met_hoog_inkomen                       float64
aantal_personen_met_een_algemene_bijstandsuitkering_totaal    float64
gewelds_en_seksuele_misdrijven                                float64
personenautos_totaal                                          float64
personenautos_per_huishouden                                  float64
motortweewielers_totaal                                       float64
bevolking_totaal                                              float64
percentage_minimahuishoudens                                   object
aantal_minimahuishoudens                                       object
gemiddeld_huishoudensinkomen                                   object
aangiften_diefstal_af_uit_woning                              float64
aangiften_diefstal_auto                                       float64
aangiften_diefstal_fiets                                      float64
aangiften_diefstal_af_uit_bedrijf                             float64
aangiften_diefstal_af_uit_auto                                float64
aangiften_van_vernieling                                      float64
aangiften_van_mishandeling                                    float64
dogs_amount                                                     int64
dtype: object

We can see that there are a lot of columns which should be numiric one, but they has a type ‘object’, so it means something wrong with their values. Let’s explore it and maybe clean of fill the missing values.

We’ll start with ‘aantal_mensen_met_een_uitkering_Participatiewet’ column

print(data['aantal_minimahuishoudens'].value_counts())
print(data['gemiddeld_huishoudensinkomen'].value_counts())
print(data['percentage_personen_0_tot_15_jaar'].value_counts())
X       6
450     5
60      4
10      4
130     3
30      3
20      3
15      2
460     2
570     2
350     2
280     2
40      2
430     1
170     1
510     1
260     1
600     1
680     1
190     1
870     1
690     1
290     1
90      1
530     1
550     1
330     1
1300    1
700     1
320     1
240     1
220     1
230     1
100     1
110     1
80      1
140     1
14      1
Name: aantal_minimahuishoudens, dtype: int64
-       4
30,0    3
27,8    2
30,7    2
49,8    2
39,1    2
39,6    2
31,0    2
60,0    1
28,8    1
25,2    1
63,8    1
78,6    1
36,8    1
32,4    1
61,6    1
63,7    1
29,2    1
28,4    1
49,9    1
27,2    1
30,3    1
34,3    1
29,9    1
49,6    1
64,6    1
48,3    1
33,8    1
44,7    1
41,8    1
37,4    1
35,9    1
52,6    1
29,3    1
29,7    1
32,1    1
43,4    1
30,9    1
31,5    1
27,6    1
30,1    1
38,1    1
38,4    1
34,7    1
37,1    1
28,1    1
25,3    1
25,6    1
33,0    1
26,0    1
24,9    1
30,6    1
43,9    1
51,8    1
42,8    1
68,9    1
81,7    1
50,5    1
Name: gemiddeld_huishoudensinkomen, dtype: int64
-99999999.0    12
 10.0           7
 16.0           6
 13.0           5
 5.0            5
 8.0            5
 19.0           5
 14.0           5
 7.0            4
 17.0           4
 21.0           4
 18.0           3
 15.0           3
 2.0            3
 4.0            3
 12.0           2
 11.0           2
 6.0            2
 29.0           2
 9.0            2
 20.0           1
 3.0            1
 1.0            1
 25.0           1
 24.0           1
 26.0           1
Name: percentage_personen_0_tot_15_jaar, dtype: int64

We can see that there are X, - and -99999999 values which definately not a number! So let’s replace this value with 0

data.replace(to_replace="X", value="0", inplace=True)
data.replace(to_replace="-", value="0", inplace=True)
data.replace(to_replace=-99999999, value=0, inplace=True)

for col_name in data.select_dtypes(include=[object]):
    data[col_name] = data[col_name].str.replace(',','.')
    
data.fillna(0, inplace=True)
print(data.isnull().sum())
buurtcode                                                     0
buurtnaam                                                     0
wijkcode                                                      0
bevolkingsdichtheid_inwoners_per_km2                          0
percentage_personen_0_tot_15_jaar                             0
percentage_personen_15_tot_25_jaar                            0
percentage_personen_25_tot_45_jaar                            0
percentage_personen_45_tot_65_jaar                            0
percentage_personen_65_jaar_en_ouder                          0
percentage_ongehuwd                                           0
percentage_gehuwd                                             0
percentage_gescheid                                           0
percentage_verweduwd                                          0
aantal_huishoudens                                            0
percentage_eenpersoonshuishoudens                             0
percentage_huishoudens_zonder_kinderen                        0
percentage_huishoudens_met_kinderen                           0
gemiddelde_huishoudsgrootte                                   0
percentage_westerse_migratieachtergrond                       0
percentage_niet_westerse_migratieachtergrond                  0
percentage_uit_marokko                                        0
percentage_uit_nederlandse_antillen_en_aruba                  0
percentage_uit_suriname                                       0
percentage_uit_turkije                                        0
percentage_overige_nietwestersemigratieachtergrond            0
aantal_bedrijven_landbouw_bosbouw_visserij                    0
gemiddelde_woningwaarde                                       0
percentage_eengezinswoning                                    0
percentage_meergezinswoning                                   0
percentage_koopwoningen                                       0
percentage_huurwoningen                                       0
perc_huurwoningen_in_bezit_woningcorporaties                  0
perc_huurwoningen_in_bezit_overige_verhuurders                0
percentage_werknemers                                         0
percentage_zelfstandigen                                      0
gemiddeld_inkomen_per_inwoner                                 0
percentage_huishoudens_met_laag_inkomen                       0
percentage_huishoudens_met_hoog_inkomen                       0
aantal_personen_met_een_algemene_bijstandsuitkering_totaal    0
gewelds_en_seksuele_misdrijven                                0
personenautos_totaal                                          0
personenautos_per_huishouden                                  0
motortweewielers_totaal                                       0
bevolking_totaal                                              0
percentage_minimahuishoudens                                  0
aantal_minimahuishoudens                                      0
gemiddeld_huishoudensinkomen                                  0
aangiften_diefstal_af_uit_woning                              0
aangiften_diefstal_auto                                       0
aangiften_diefstal_fiets                                      0
aangiften_diefstal_af_uit_bedrijf                             0
aangiften_diefstal_af_uit_auto                                0
aangiften_van_vernieling                                      0
aangiften_van_mishandeling                                    0
dogs_amount                                                   0
dtype: int64
cols=[i for i in data.columns if i not in ["wijkcode","buurtnaam","buurtcode"]]
for col in cols:
    data[col]=pd.to_numeric(data[col])

print(data.dtypes)
buurtcode                                                      object
buurtnaam                                                      object
wijkcode                                                       object
bevolkingsdichtheid_inwoners_per_km2                          float64
percentage_personen_0_tot_15_jaar                             float64
percentage_personen_15_tot_25_jaar                            float64
percentage_personen_25_tot_45_jaar                            float64
percentage_personen_45_tot_65_jaar                            float64
percentage_personen_65_jaar_en_ouder                          float64
percentage_ongehuwd                                           float64
percentage_gehuwd                                             float64
percentage_gescheid                                           float64
percentage_verweduwd                                          float64
aantal_huishoudens                                            float64
percentage_eenpersoonshuishoudens                             float64
percentage_huishoudens_zonder_kinderen                        float64
percentage_huishoudens_met_kinderen                           float64
gemiddelde_huishoudsgrootte                                   float64
percentage_westerse_migratieachtergrond                       float64
percentage_niet_westerse_migratieachtergrond                  float64
percentage_uit_marokko                                        float64
percentage_uit_nederlandse_antillen_en_aruba                  float64
percentage_uit_suriname                                       float64
percentage_uit_turkije                                        float64
percentage_overige_nietwestersemigratieachtergrond            float64
aantal_bedrijven_landbouw_bosbouw_visserij                    float64
gemiddelde_woningwaarde                                       float64
percentage_eengezinswoning                                    float64
percentage_meergezinswoning                                   float64
percentage_koopwoningen                                       float64
percentage_huurwoningen                                       float64
perc_huurwoningen_in_bezit_woningcorporaties                  float64
perc_huurwoningen_in_bezit_overige_verhuurders                float64
percentage_werknemers                                         float64
percentage_zelfstandigen                                      float64
gemiddeld_inkomen_per_inwoner                                 float64
percentage_huishoudens_met_laag_inkomen                       float64
percentage_huishoudens_met_hoog_inkomen                       float64
aantal_personen_met_een_algemene_bijstandsuitkering_totaal    float64
gewelds_en_seksuele_misdrijven                                float64
personenautos_totaal                                          float64
personenautos_per_huishouden                                  float64
motortweewielers_totaal                                       float64
bevolking_totaal                                              float64
percentage_minimahuishoudens                                  float64
aantal_minimahuishoudens                                        int64
gemiddeld_huishoudensinkomen                                  float64
aangiften_diefstal_af_uit_woning                              float64
aangiften_diefstal_auto                                       float64
aangiften_diefstal_fiets                                      float64
aangiften_diefstal_af_uit_bedrijf                             float64
aangiften_diefstal_af_uit_auto                                float64
aangiften_van_vernieling                                      float64
aangiften_van_mishandeling                                    float64
dogs_amount                                                     int64
dtype: object
print(data.columns)
data.head()
Index(['buurtcode', 'buurtnaam', 'wijkcode',
       'bevolkingsdichtheid_inwoners_per_km2',
       'percentage_personen_0_tot_15_jaar',
       'percentage_personen_15_tot_25_jaar',
       'percentage_personen_25_tot_45_jaar',
       'percentage_personen_45_tot_65_jaar',
       'percentage_personen_65_jaar_en_ouder', 'percentage_ongehuwd',
       'percentage_gehuwd', 'percentage_gescheid', 'percentage_verweduwd',
       'aantal_huishoudens', 'percentage_eenpersoonshuishoudens',
       'percentage_huishoudens_zonder_kinderen',
       'percentage_huishoudens_met_kinderen', 'gemiddelde_huishoudsgrootte',
       'percentage_westerse_migratieachtergrond',
       'percentage_niet_westerse_migratieachtergrond',
       'percentage_uit_marokko',
       'percentage_uit_nederlandse_antillen_en_aruba',
       'percentage_uit_suriname', 'percentage_uit_turkije',
       'percentage_overige_nietwestersemigratieachtergrond',
       'aantal_bedrijven_landbouw_bosbouw_visserij', 'gemiddelde_woningwaarde',
       'percentage_eengezinswoning', 'percentage_meergezinswoning',
       'percentage_koopwoningen', 'percentage_huurwoningen',
       'perc_huurwoningen_in_bezit_woningcorporaties',
       'perc_huurwoningen_in_bezit_overige_verhuurders',
       'percentage_werknemers', 'percentage_zelfstandigen',
       'gemiddeld_inkomen_per_inwoner',
       'percentage_huishoudens_met_laag_inkomen',
       'percentage_huishoudens_met_hoog_inkomen',
       'aantal_personen_met_een_algemene_bijstandsuitkering_totaal',
       'gewelds_en_seksuele_misdrijven', 'personenautos_totaal',
       'personenautos_per_huishouden', 'motortweewielers_totaal',
       'bevolking_totaal', 'percentage_minimahuishoudens',
       'aantal_minimahuishoudens', 'gemiddeld_huishoudensinkomen',
       'aangiften_diefstal_af_uit_woning', 'aangiften_diefstal_auto',
       'aangiften_diefstal_fiets', 'aangiften_diefstal_af_uit_bedrijf',
       'aangiften_diefstal_af_uit_auto', 'aangiften_van_vernieling',
       'aangiften_van_mishandeling', 'dogs_amount'],
      dtype='object')
buurtcode buurtnaam wijkcode bevolkingsdichtheid_inwoners_per_km2 percentage_personen_0_tot_15_jaar percentage_personen_15_tot_25_jaar percentage_personen_25_tot_45_jaar percentage_personen_45_tot_65_jaar percentage_personen_65_jaar_en_ouder percentage_ongehuwd ... aantal_minimahuishoudens gemiddeld_huishoudensinkomen aangiften_diefstal_af_uit_woning aangiften_diefstal_auto aangiften_diefstal_fiets aangiften_diefstal_af_uit_bedrijf aangiften_diefstal_af_uit_auto aangiften_van_vernieling aangiften_van_mishandeling dogs_amount
0 BU000000 Binnenstad-Noord WK001400 11891.0 2.0 46.0 35.0 11.0 6.0 86.0 ... 290 30.0 25.0 1.0 176.0 17.0 8.0 25.0 35.0 37
1 BU000001 Binnenstad-Zuid WK001400 12011.0 2.0 47.0 33.0 11.0 6.0 87.0 ... 530 30.7 42.0 3.0 306.0 28.0 30.0 96.0 196.0 51
2 BU000002 Binnenstad-Oost WK001400 14979.0 3.0 40.0 36.0 14.0 7.0 84.0 ... 350 27.8 17.0 1.0 56.0 2.0 3.0 16.0 8.0 48
3 BU000003 Binnenstad-West WK001400 17507.0 2.0 38.0 40.0 11.0 9.0 84.0 ... 140 29.7 9.0 0.0 13.0 2.0 4.0 8.0 5.0 21
4 BU000005 Hortusbuurt-Ebbingekwartier WK001400 12509.0 5.0 41.0 30.0 15.0 9.0 82.0 ... 450 32.1 20.0 2.0 68.0 16.0 9.0 24.0 13.0 108

5 rows × 55 columns

data['politie_report_aantal'] = data['aangiften_diefstal_af_uit_woning'] + data['aangiften_diefstal_auto'] + data['aangiften_diefstal_af_uit_bedrijf'] + data['aangiften_diefstal_fiets'] + data['aangiften_diefstal_af_uit_auto'] + data['aangiften_van_mishandeling'] + data['aangiften_van_vernieling']

I can see that there are a lot of columns with very long names. Let’s make it shorter

data = data.rename(columns={'bevolkingsdichtheid_inwoners_per_km2': 'inwoners_per_km2'})
data = data.rename(columns={'percentage_personen_0_tot_15_jaar': 'perc_0_15_jaar'})
data = data.rename(columns={'percentage_personen_15_tot_25_jaar': 'perc_15_25_jaar'})
data = data.rename(columns={'percentage_personen_25_tot_45_jaar': 'perc_25_45_jaar'})
data = data.rename(columns={'percentage_personen_45_tot_65_jaar': 'perc_45_65_jaar'})
data = data.rename(columns={'percentage_personen_65_jaar_en_ouder': 'perc_65_en_ouder'})
data = data.rename(columns={'percentage_ongehuwd': 'perc_ongehuwd'})
data = data.rename(columns={'percentage_gehuwd': 'perc_gehuwd'})
data = data.rename(columns={'percentage_gescheid': 'perc_gescheid'})
data = data.rename(columns={'percentage_verweduwd': 'perc_verweduwd'})
data = data.rename(columns={'percentage_eenpersoonshuishoudens': 'perc_eenpersoonshuishoudens'})
data = data.rename(columns={'percentage_huishoudens_zonder_kinderen': 'perc_huishoudens_z_kind'})
data = data.rename(columns={'percentage_huishoudens_met_kinderen': 'perc_huishoudens_met_kind'})
data = data.rename(columns={'percentage_westerse_migratieachtergrond': 'perc_west_migratie'})
data = data.rename(columns={'percentage_niet_westerse_migratieachtergrond': 'perc_niet_west_migratie'})
data = data.rename(columns={'percentage_uit_nederlandse_antillen_en_aruba': 'perc_uit_antillen_en_aruba'})
data = data.rename(columns={'percentage_overige_nietwestersemigratieachtergrond': 'perc_overige_nietwestersemigratie'})
data = data.rename(columns={'aantal_bedrijven_landbouw_bosbouw_visserij': 'bedrijven_landbouw'})
data = data.rename(columns={'gemiddelde_woningwaarde': 'gemid_won_waarde'})
data = data.rename(columns={'percentage_eengezinswoning': 'perc_eengezinswoning'})
data = data.rename(columns={'percentage_meergezinswoning': 'perc_meergezinswoning'})
data = data.rename(columns={'percentage_koopwoningen': 'perc_koopwoningen'})
data = data.rename(columns={'percentage_huurwoningen': 'perc_huurwoningen'})
data = data.rename(columns={'perc_huurwoningen_in_bezit_woningcorporaties': 'perc_huurwoning_van_corporaties'})
data = data.rename(columns={'perc_huurwoningen_in_bezit_overige_verhuurders': 'perc_huurwoning_van_verhuurder'})
data = data.rename(columns={'percentage_werknemers': 'perc_werknemers'})
data = data.rename(columns={'percentage_zelfstandigen': 'perc_zelfstandigen'})
data = data.rename(columns={'percentage_huishoudens_met_laag_inkomen': 'perc_huishoud_laag_inkomen'})
data = data.rename(columns={'percentage_huishoudens_met_hoog_inkomen': 'perc_huishoud_hoog_inkomen'})
data = data.rename(columns={'aantal_personen_met_een_algemene_bijstandsuitkering_totaal': 'personen_met_bijstandsuitkering'})
data = data.rename(columns={'gewelds_en_seksuele_misdrijven': 'gewelds_misdrijven'})
data = data.rename(columns={'personenautos_totaal': 'autos_totaal'})
data = data.rename(columns={'personenautos_per_huishouden': 'autos_per_huishouden'})
data = data.rename(columns={'motortweewielers_totaal': 'motortweewielers'})
data = data.rename(columns={'aangiften_diefstal_af_uit_woning': 'diefstal_af_uit_woning'})
data = data.rename(columns={'aangiften_diefstal_auto': 'diefstal_auto'})
data = data.rename(columns={'aangiften_diefstal_fiets': 'diefstal_fiets'})
data = data.rename(columns={'aangiften_diefstal_af_uit_bedrijf': 'diefstal_af_uit_bedrijf'})
data = data.rename(columns={'aangiften_diefstal_af_uit_auto': 'diefstal_af_uit_auto'})
data.to_csv(r'population_clean_data.csv', index = False)