Premiers pas en matplotlib


Auteur: Joseph Salmon

[email protected]

Imports

In [1]:
# Utile pour créer les slides du cours et avoir un affichage identique dans divers notebook, à laisser de côter par les élèves.
import os
import sys
sys.path.append("./codes")
In [2]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
plt.rcParams.update({'figure.max_open_warning': 0})
matplotlib.__version__
Out[2]:
'3.0.3'
In [3]:
saving = False  # option pour sauvegarder les images
In [4]:
# Creations de tableau 1D avec valeurs numériques
x1 = np.linspace(0.0, 5.0, num=50)
x2 = np.linspace(0.0, 2.0, num=50)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)
In [5]:
# commande "magique" pour améliorer la visualiation
%matplotlib inline
# %matplotlib notebook
In [6]:
fig1 = plt.figure(figsize=(5, 4))
plt.plot(x1, y1)
plt.xlim(0,6)
plt.ylim(-1,1)
plt.show()  # Pour forcer l'affichage, notamment sans %matplolib inline

ATTENTION, Mauvaise pratique!

L'exemple ci-dessus est "léger" car il n'a pas de titre, de précision sur les axes, de légendes, etc.

Export de fichiers images sous divers formats:

Formats matriciels (en anglais: bitmap):

  • png (format brut, non compressé, s'ouvre avec Gimp)
  • jpg (format compressé)

Formats vectoriels

  • pdf (à privilégier dans vos documents)
  • svg (facile à modifier avec Inkscape)
  • ps
  • eps

Formats matriciels

Format qui encode pixel par pixel une image

Format png:

In [7]:
# Export en png:
if saving:
    fig1.savefig("ma_figure_pas_belle.png", format='png', dpi=90)

Remarque: dot per inch (point par pouce) est l'unité de résolution voulue pour l'enregistrement (historiquement pour l'impression papier)

Visualisation du png créé

In [8]:
import skimage  # Module pour la gestion des images
from skimage import io
skimage.__version__
Out[8]:
'0.14.2'
In [9]:
fig_png = plt.figure(figsize=(8, 5))
array_from_png = io.imread("ma_figure_pas_belle.png")
plt.imshow(array_from_png)
plt.axis('off')
plt.show()
In [10]:
print(array_from_png.shape) # noter que l'image couleur est un tenseur de dimension 3!
len('transparence')
(360, 450, 4)
Out[10]:
12

Interprétation: l'image est représentée par un tenseur de dimension 3. L'image a 360 x 450 pixels. Enfin l'encodage est le RGBA, qui a 4 dimensions:

  • Red : code le niveau de Rouge
  • Green : code le niveau de Vert
  • Blue : code le niveau Bleu
  • Alpha : code le niveau de transparence.

Format jpg:

In [11]:
# Export en jpg basse qualité
if saving:
    io.imsave("ma_figure_pas_belle20.jpg",
              skimage.color.rgba2rgb(array_from_png), quality=20)
# Visualisation du jpg
array_from_jpeg = skimage.io.imread("ma_figure_pas_belle20.jpg")
plt.figure(figsize=(8, 5))
plt.imshow(array_from_jpeg)
plt.axis('off')
plt.show()
In [12]:
# Export en jpg qualité normale
if saving:
    io.imsave("ma_figure_pas_belle75.jpg",
              skimage.color.rgba2rgb(array_from_png), quality=75)  # 75 is default value, 100 best, 1 worst
array_from_jpeg = skimage.io.imread("ma_figure_pas_belle75.jpg")
plt.figure(figsize=(8, 5))
plt.imshow(array_from_jpeg)
plt.axis('off')
plt.show()

ATTENTION: donc aux formats jpeg et jpg: ces formats sont avec perte, il sont à proscrire pour les rapports, comptes rendus, thèse, slides, etc.

Format vectoriel:

Une image vectorielle est une image numérique composée d'objets géométriques individuels, des primitives géométriques (segments de droite, arcs de cercle, courbes de Bézier, polygones, etc.), définis chacun par différents attributs (forme, position, couleur, remplissage, visibilité, etc.).

Voir : https://fr.wikipedia.org/wiki/Image_vectorielle pour plus d'informations.

Format pdf:

format le plus populaire pour inclure des graphiques dans des rapports, compte rendus, etc.

In [13]:
if saving:
    fig1.savefig("ma_figure_plus_belle.pdf",format='pdf', dpi=90)
In [14]:
from IPython.display import IFrame
IFrame("ma_figure_plus_belle.pdf", width=400, height=250)
Out[14]:

Format svg:

c'est le format à privilégier pour inclure des graphiques si l'on compte faire de la "retouche" (par exemple rajouter des éléments trop compliqués à ajuster en ligne de code, en passant par exemple par Inkscape)

In [15]:
if saving:
    fig1.savefig("ma_figure_plus_belle.svg",format='svg')

Améliorations visuelles

Style

https://matplotlib.org/api/markers_api.html { "." : "point", "," : "pixel", "o" : "circle", "v" : "triangle_down", "^" : "triangle_up", "<" : "triangle_left", ">" : "triangle_right", "1" : "tri_down", "2" : "tri_up", "3" : "tri_left", "4" : "tri_right", "8" : "octagon", "s" : "square", "p" : "pentagon", "*" : "star", "h" : "hexagon1", "H" : "hexagon2", "+" : "plus", "D" : "diamond", "d" : "thindiamond", "|" : "vline", "" : "hline" }

In [16]:
# Changer le le style en points ('o'), ligne ('-'), et couleur noire
fig1 = plt.figure(figsize=(8, 5))
plt.plot(x1, y1,'-D', color='b',label="amortie")
plt.legend(loc='lower right')
plt.show()

Titre et noms des axes

In [17]:
fig_jolie = plt.figure(figsize=(8, 5))
plt.plot(x1,y1)
plt.title("Mon premier graphique: \n c'est lui!")
plt.ylabel('Oscillation amortie')
plt.xlabel('Temps (s.)')
plt.show()
if saving:
    fig_jolie.savefig("ma_figure_jolie.pdf",format='pdf', dpi=90)

Changer l'emplacement des axes

In [18]:
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
plt.title("Mon premier graphique: \n c'est lui!")
plt.xlim(0, 6)
plt.ylim(-1, 1)
ax.plot(x1, y1)
# spine placement data centered
ax.spines['left'].set_position(('data', 0.0))
ax.spines['bottom'].set_position(('data', 0.0))
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.show()

Graphes et sous graphes

In [19]:
fig2 = plt.figure(figsize=(8, 5))
plt.subplot(3, 1, 1)
plt.plot(x1, y1, 'o-')
plt.title('Voici trois sous-graphes')
plt.ylabel('Angle')

plt.subplot(3, 1, 2)
plt.plot(x1, y2, '.-')
plt.ylabel('Angle')

plt.subplot(3, 1, 3)
plt.plot(x1, y1**2, '--')
plt.ylabel("Amplitude de l'angle")
plt.xlabel('Temps (s.)')
Out[19]:
Text(0.5, 0, 'Temps (s.)')
In [20]:
fig, axes = plt.subplots(3, 1, figsize=(8,5),sharex=True)

axes[0].plot(x1, y1, 'o-',linewidth=1)
axes[0].set_title('Voici trois sous-graphes')
axes[0].set_ylabel('Angle')


axes[1].plot(x1, y2, '.-', linewidth=3)
axes[1].set_ylabel('Angle')

axes[2].plot(x1, y1**2, '--',color='black', linewidth=5)
axes[2].set_ylabel("Amplitude de l'angle")
axes[2].set_xlabel('Temps (s.)')
Out[20]:
Text(0.5, 0, 'Temps (s.)')

Couleurs

https://matplotlib.org/api/colors_api.html

Liste de couleurs en Python: {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'},

Couleurs par défaut: Les couleurs par défauts sont gérées par ce qu'on appelle la colormap (carte de couleur). Il en existe de nombreuses (cf. http://www.futurile.net/2016/03/31/colormaps-in-matplotlib/)

In [21]:
# Obtenir la colormap par défaut de Maptlotlib (viridis depuis la version 2)
cmap_name = plt.rcParams['image.cmap']
cmap = plt.cm.get_cmap(cmap_name)
print("La carte de couleur par défaut est : {}".format(cmap_name))
La carte de couleur par défaut est : viridis
In [22]:
# Afficher la colormap par défaut
colors = cmap(np.arange(cmap.N))

fig = plt.figure(figsize=(6, 2))
plt.imshow([colors], extent=[0, 10, 0, 1])
plt.title("Colormap par defaut")
plt.show()
In [23]:
list_cmap = ['Paired', 'viridis',
             'Pastel1', 'Pastel2', 'rainbow', 'jet', 'Accent']
# list_cmap = ['coolwarm', 'Paired', 'viridis',
#              'Pastel1', 'Pastel2', 'rainbow', 'jet', 'Accent']
fig, axes = plt.subplots(len(list_cmap), 1, figsize=(8, 8), sharex=True)

for idx, cmap_name in enumerate(list_cmap):
    cmap = plt.get_cmap(cmap_name)
    t = np.arange(5)
    for i in range(4):
        axes[idx].plot(t, i * (t + 1),   color=cmap(i), linestyle='-')
        axes[idx].plot(t, i * (t + 1) + .3, color=cmap(i), linestyle=':')
        axes[idx].set_title(cmap_name)
fig.subplots_adjust(hspace=0.85)
plt.show()

Divers types de visualisation

Imshow:

affichage pour des matrices

In [24]:
x = np.linspace(0, 10, 1000)
I = np.sin(x) * np.cos(x[:, np.newaxis])

# make noise in 1% of the image pixels
speckles = (np.random.random(I.shape) < 0.01)
I[speckles] = np.random.normal(0, 3, np.count_nonzero(speckles))

plt.figure(figsize=(9.4, 3))

plt.subplot(1, 2, 1)
plt.imshow(I, cmap='RdBu')
plt.colorbar()

plt.subplot(1, 2, 2)
plt.imshow(I, cmap='RdBu')
plt.colorbar(extend='both')
plt.clim(-1, 1)

ATTENTION: a suite nécessite l'installation des packages seaborn et pandas

In [25]:
import seaborn as sns
import pandas as pd
In [26]:
from download import download

url = "http://josephsalmon.eu/enseignement/datasets/belgianmunicipalities.csv"
path_target = "./belgianmunicipalities.csv"
download(url, path_target, replace=False)
Replace is False and data exists, so doing nothing. Use replace==True to re-download the data.
Out[26]:
'./belgianmunicipalities.csv'
In [27]:
cat belgianmunicipalities.csv
"","Commune","INS","Province","Arrondiss","Men04","Women04","Tot04","Men03","Women03","Tot03","Diffmen","Diffwom","DiffTOT","TaxableIncome","Totaltaxation","averageincome","medianincome"
"1","Aartselaar",11001,1,11,6971,7169,14140,7010,7243,14253,-39,-74,-113,242104077,74976114,33809,23901
"2","Anvers",11002,1,11,223677,233642,457319,221767,232405,454172,1910,1237,3147,5416418842,1423715652,22072,17226
"3","Boechout",11004,1,11,6027,5927,11954,6005,5942,11947,22,-15,7,167616996,50739035,29453,21613
"4","Boom",11005,1,11,7640,8066,15706,7535,7952,15487,105,114,219,186075961,46636930,21907,17537
"5","Borsbeek",11007,1,11,4948,5328,10276,4951,5322,10273,-3,6,3,143225590,40564374,26632,20739
"6","Brasschaat",11008,1,11,18142,18916,37058,18217,18903,37120,-75,13,-62,533368826,153629397,30574,21523
"7","Brecht",11009,1,11,12975,12976,25951,12863,12857,25720,112,119,231,325084836,86691504,25389,19833
"8","Edegem",11013,1,11,10614,11257,21871,10657,11298,21955,-43,-41,-84,337602904,102711766,30325,22294
"9","Essen",11016,1,11,8451,8429,16880,8387,8384,16771,64,45,109,180530333,44222836,24987,19842
"10","Hemiksem",11018,1,11,4658,4820,9478,4585,4743,9328,73,77,150,117026336,30782440,24457,19410
"11","Hove",11021,1,11,3979,4170,8149,3987,4183,8170,-8,-13,-21,132669412,43230689,35549,23678
"12","Kalmthout",11022,1,11,8563,8866,17429,8509,8835,17344,54,31,85,222472212,63333577,28953,21468
"13","Kapellen",11023,1,11,12706,13243,25949,12646,13167,25813,60,76,136,375739546,105914839,30139,21377
"14","Kontich",11024,1,11,9997,10231,20228,9937,10187,20124,60,44,104,288904932,84230540,29963,21780
"15","Lint",11025,1,11,3952,3986,7938,3954,3993,7947,-2,-7,-9,110718852,32477112,28788,21718
"16","Mortsel",11029,1,11,11738,12724,24462,11717,12786,24503,21,-62,-41,356113686,103297929,27347,20397
"17","Niel",11030,1,11,4257,4416,8673,4236,4383,8619,21,33,54,102724086,26109522,23474,19446
"18","Ranst",11035,1,11,8872,8822,17694,8838,8764,17602,34,58,92,230494695,67134333,28779,21459
"19","Rumst",11037,1,11,7259,7311,14570,7241,7336,14577,18,-25,-7,199586172,55803205,25890,19770
"20","Schelle",11038,1,11,3806,3954,7760,3810,3891,7701,-4,63,59,101840962,28047463,27525,21202
"21","Schilde",11039,1,11,9583,10014,19597,9574,10029,19603,9,-15,-6,322395941,98215957,34058,21030
"22","Schoten",11040,1,11,16184,17074,33258,16104,17021,33125,80,53,133,439630992,123811541,27864,20693
"23","Stabroek",11044,1,11,8634,8753,17387,8594,8742,17336,40,11,51,243291448,70089985,28382,22402
"24","Wijnegem",11050,1,11,4233,4601,8834,4213,4606,8819,20,-5,15,117291420,32550587,26669,19565
"25","Wommelgem",11052,1,11,5900,6079,11979,5845,6038,11883,55,41,96,153493538,41890812,26069,20075
"26","Wuustwezel",11053,1,11,9067,9052,18119,9000,8967,17967,67,85,152,200259922,51614441,25048,20033
"27","Zandhoven",11054,1,11,6160,6092,12252,6116,6088,12204,44,4,48,156571141,44343995,27556,20968
"28","Zoersel",11055,1,11,9999,10441,20440,9936,10407,20343,63,34,97,289887028,93399872,30846,21736
"29","Zwijndrecht",11056,1,11,8883,9113,17996,8832,9064,17896,51,49,100,244841678,63989920,24832,19751
"30","Malle",11057,1,11,7045,7025,14070,7039,7040,14079,6,-15,-9,177128287,49792919,26993,20864
"31","Berlaar",12002,1,12,5145,5206,10351,5095,5182,10277,50,24,74,115956571,31574059,26081,21164
"32","Bonheiden",12005,1,12,6968,7363,14331,6924,7359,14283,44,4,48,226558422,69450631,31228,20496
"33","Bornem",12007,1,12,9870,10009,19879,9886,10072,19958,-16,-63,-79,255008300,71460492,27051,21251
"34","Duffel",12009,1,12,7794,8148,15942,7803,8183,15986,-9,-35,-44,203156019,56766680,26671,20583
"35","Heist-op-den-Berg",12014,1,12,18790,19144,37934,18725,18979,37704,65,165,230,435257229,116441471,25287,20399
"36","Lierre",12021,1,12,15953,16934,32887,15924,16796,32720,29,138,167,423288657,125831471,25978,19848
"37","Malines",12025,1,12,37612,39581,77193,37449,39418,76867,163,163,326,999965834,273108393,23605,18186
"38","Nijlen",12026,1,12,10312,10373,20685,10292,10339,20631,20,34,54,233490054,62238721,25300,20023
"39","Putte",12029,1,12,7754,7712,15466,7767,7704,15471,-13,8,-5,187567250,51073449,25740,20153
"40","Puurs",12030,1,12,7925,7981,15906,7898,7904,15802,27,77,104,211055090,60111992,28058,21274
"41","Sint-Amands",12034,1,12,3826,3856,7682,3797,3830,7627,29,26,55,93825008,26348558,27362,21027
"42","Sint-Katelijne-Waver",12035,1,12,9515,9807,19322,9461,9748,19209,54,59,113,260930083,74495820,28753,21044
"43","Willebroek",12040,1,12,11155,11676,22831,11099,11642,22741,56,34,90,274995661,74885470,25357,19989
"44","Arendonk",13001,1,13,6104,6080,12184,6092,6004,12096,12,76,88,127657092,31099773,23928,20319
"45","Baerle-Duc",13002,1,13,1130,1151,2281,1125,1129,2254,5,22,27,21219171,3909334,22989,18513
"46","Balen",13003,1,13,10027,9933,19960,9951,9823,19774,76,110,186,226082864,57970771,24051,19737
"47","Beerse",13004,1,13,8077,8137,16214,8048,8089,16137,29,48,77,202912268,55689063,27295,21508
"48","Dessel",13006,1,13,4396,4329,8725,4363,4287,8650,33,42,75,97561973,24235869,24336,20212
"49","Geel",13008,1,13,17387,17145,34532,17304,17124,34428,83,21,104,420885002,116208955,25725,20451
"50","Grobbendonk",13010,1,13,5373,5346,10719,5340,5284,10624,33,62,95,136893986,37901532,26125,19914
"51","Herentals",13011,1,13,12750,13102,25852,12693,13069,25762,57,33,90,322705724,85956540,23991,19141
"52","Herenthout",13012,1,13,4193,4212,8405,4184,4174,8358,9,38,47,94270843,24718329,24595,20120
"53","Herselt",13013,1,13,6976,6689,13665,6960,6637,13597,16,52,68,161614304,41957174,24651,19576
"54","Hoogstraten",13014,1,13,9388,9039,18427,9363,8968,18331,25,71,96,200406686,45658892,23083,18364
"55","Hulshout",13016,1,13,4465,4606,9071,4409,4546,8955,56,60,116,99320559,26196893,24911,20145
"56","Kasterlee",13017,1,13,9089,8743,17832,9013,8704,17717,76,39,115,212584221,57793714,26238,21094
"57","Lille",13019,1,13,7738,7619,15357,7725,7563,15288,13,56,69,179379757,47379206,25204,20256
"58","Meerhout",13021,1,13,4660,4615,9275,4649,4644,9293,11,-29,-18,108791133,27940624,24376,20120
"59","Merksplas",13023,1,13,4189,3893,8082,4114,3903,8017,75,-10,65,90540561,25038687,26700,21680
"60","Mol",13025,1,13,16141,16279,32420,16033,16210,32243,108,69,177,397174982,107386088,25939,20071
"61","Olen",13029,1,13,5580,5530,11110,5573,5469,11042,7,61,68,141830483,38708443,25509,19654
"62","Oud-Turnhout",13031,1,13,6285,6245,12530,6227,6182,12409,58,63,121,165508600,44215801,29093,21752
"63","Ravels",13035,1,13,6803,6629,13432,6797,6616,13413,6,13,19,136934989,31510040,25293,20446
"64","Retie",13036,1,13,5178,4900,10078,5106,4891,9997,72,9,81,111529012,28567866,25256,20893
"65","Rijkevorsel",13037,1,13,5333,5235,10568,5318,5187,10505,15,48,63,116312407,28001559,21942,18440
"66","Turnhout",13040,1,13,19387,20131,39518,19361,20056,39417,26,75,101,491395491,128722543,23441,18940
"67","Vorselaar",13044,1,13,3644,3674,7318,3643,3684,7327,1,-10,-9,86264551,22263671,23673,18655
"68","Vosselaar",13046,1,13,5108,5049,10157,5077,5021,10098,31,28,59,144914743,40795358,29991,21767
"69","Westerlo",13049,1,13,11401,11205,22606,11305,11091,22396,96,114,210,280194521,76243725,25982,21339
"70","Laakdal",13053,1,13,7450,7429,14879,7406,7368,14774,44,61,105,177217617,45361919,24535,20516
"71","Anderlecht",21001,2,21,45221,48013,93234,44819,47541,92360,402,472,874,832673192,208198889,21322,17196
"72","Auderghem",21002,2,21,13645,15507,29152,13596,15431,29027,49,76,125,401112086,121225631,27417,19701
"73","Berchem-Sainte-Agathe",21003,2,21,9321,10413,19734,9193,10407,19600,128,6,134,235458805,68755109,26006,19606
"74","Bruxelles",21004,2,21,71324,71732,143056,70328,70659,140987,996,1073,2069,1258758962,351647307,23290,17392
"75","Etterbeek",21005,2,21,19290,21813,41103,19371,21751,41122,-81,62,-19,413417505,122069012,23794,18477
"76","Evere",21006,2,21,15222,17656,32878,15262,17625,32887,-40,31,-9,362329130,97215949,22834,18062
"77","Forest",21007,2,21,22440,24995,47435,22474,24870,47344,-34,125,91,498917198,140135557,23511,18000
"78","Ganshoren",21008,2,21,9261,11372,20633,9129,11305,20434,132,67,199,240976682,67280446,24304,18891
"79","Ixelles",21009,2,21,37656,39463,77119,37119,38893,76012,537,570,1107,793224182,245584740,24773,18302
"80","Jette",21010,2,21,19460,22585,42045,19467,22426,41893,-7,159,152,468680785,129504534,23847,18857
"81","Koekelberg",21011,2,21,8448,9125,17573,8312,8965,17277,136,160,296,168459854,44080109,22186,17549
"82","Molenbeek-Saint-Jean",21012,2,21,38538,39774,78312,38120,39053,77173,418,721,1139,601489083,141965684,20007,15811
"83","Saint-Gilles",21013,2,21,22074,21659,43733,22071,21505,43576,3,154,157,354664815,91399979,19658,15329
"84","Saint-Josse-ten-Noode",21014,2,21,11812,11276,23088,11657,11184,22841,155,92,247,139955394,29178069,16826,13379
"85","Schaerbeek",21015,2,21,54222,56407,110629,54094,56118,110212,128,289,417,958572866,241430838,20167,15613
"86","Uccle",21016,2,21,34389,40617,75006,34374,40693,75067,15,-76,-61,1053824737,329654777,29492,18878
"87","Watermael-Boitsfort",21017,2,21,11211,13106,24317,11222,13105,24327,-11,1,-10,334710298,106728475,29573,21615
"88","Woluwe-Saint-Lambert",21018,2,21,21439,26042,47481,21242,26024,47266,197,18,215,607356494,187779151,27985,20610
"89","Woluwe-Saint-Pierre",21019,2,21,17418,20293,37711,17375,20346,37721,43,-53,-10,534900714,173603903,32864,22051
"90","Asse",23002,2,23,13978,14781,28759,13890,14765,28655,88,16,104,408922105,121741289,29468,21670
"91","Beersel",23003,2,23,11371,11943,23314,11302,11850,23152,69,93,162,337153316,102344515,30906,21653
"92","Bievene",23009,2,23,965,1013,1978,949,1013,1962,16,0,16,24970524,6844024,25585,18615
"93","Dilbeek",23016,2,23,18899,20428,39327,18609,20173,38782,290,255,545,587331510,178538915,31329,22680
"94","Gammerages",23023,2,23,3911,4068,7979,3858,4006,7864,53,62,115,108161992,30182608,27487,20336
"95","Gooik",23024,2,23,4422,4460,8882,4438,4467,8905,-16,-7,-23,125446220,36050264,28958,21051
"96","Grimbergen",23025,2,23,16002,17420,33422,16006,17306,33312,-4,114,110,521276665,162110269,31539,22841
"97","Hal",23027,2,23,16814,17694,34508,16675,17560,34235,139,134,273,450283080,126108746,26223,20070
"98","Herne",23032,2,23,3138,3213,6351,3139,3234,6373,-1,-21,-22,82080848,23586758,27852,20932
"99","Hoeilaart",23033,2,23,4894,5169,10063,4891,5132,10023,3,37,40,133875808,40899300,31228,21878
"100","Kampenhout",23038,2,23,5371,5580,10951,5309,5499,10808,62,81,143,154088873,47859855,32088,23571
"101","Kapelle-op-den-Bos",23039,2,23,4364,4522,8886,4330,4485,8815,34,37,71,124684409,36355374,28473,21374
"102","Liedekerke",23044,2,23,5822,6056,11878,5795,6024,11819,27,32,59,152614664,41055279,25624,19868
"103","Londerzeel",23045,2,23,8499,8783,17282,8494,8741,17235,5,42,47,238510665,69601106,28421,20982
"104","Machelen",23047,2,23,5898,6361,12259,5792,6269,12061,106,92,198,157848114,42880410,26655,21002
"105","Meise",23050,2,23,9029,9443,18472,9019,9430,18449,10,13,23,296848559,95701564,34537,24153
"106","Merchtem",23052,2,23,7237,7354,14591,7238,7288,14526,-1,66,65,196837180,58408664,29484,22075
"107","Opwijk",23060,2,23,5871,6173,12044,5808,6065,11873,63,108,171,156981057,45566906,29260,22028
"108","Overijse",23062,2,23,11659,12288,23947,11626,12205,23831,33,83,116,339382354,108175412,34424,22187
"109","Pepingen",23064,2,23,2146,2172,4318,2129,2173,4302,17,-1,16,56746213,16541086,29341,21351
"110","Sint-Pieters-Leeuw",23077,2,23,14921,15573,30494,14802,15582,30384,119,-9,110,402516487,113957806,27286,20914
"111","Steenokkerzeel",23081,2,23,5239,5413,10652,5187,5380,10567,52,33,85,159588786,48801906,32286,23408
"112","Ternat",23086,2,23,7153,7420,14573,7138,7366,14504,15,54,69,207567866,61689196,29969,22460
"113","Vilvorde",23088,2,23,17801,18992,36793,17471,18699,36170,330,293,623,460563464,129702378,26140,20224
"114","Zaventem",23094,2,23,13867,14578,28445,13564,14403,27967,303,175,478,380472604,114964636,30355,22372
"115","Zemst",23096,2,23,10356,10744,21100,10309,10705,21014,47,39,86,312811486,95809203,32172,23792
"116","Roosdaal",23097,2,23,5262,5439,10701,5199,5392,10591,63,47,110,145532438,42211396,28270,20765
"117","Drogenbos",23098,2,23,2228,2636,4864,2206,2576,4782,22,60,82,57066400,15004003,22592,17795
"118","Kraainem",23099,2,23,6264,6701,12965,6251,6655,12906,13,46,59,181496736,58301581,36299,23444
"119","Linkebeek",23100,2,23,2324,2450,4774,2324,2429,4753,0,21,21,70954683,22680474,30479,21291
"120","Rhode-Saint-Genese",23101,2,23,8716,9171,17887,8751,9179,17930,-35,-8,-43,282957965,91129013,34655,21013
"121","Wemmel",23102,2,23,6924,7601,14525,6895,7510,14405,29,91,120,228005280,72277572,32323,21821
"122","Wezembeek-Oppem",23103,2,23,6475,6994,13469,6482,7055,13537,-7,-61,-68,191435439,62287908,35950,23790
"123","Lennik",23104,2,23,4319,4413,8732,4328,4408,8736,-9,5,-4,128811484,39468852,31069,22594
"124","Affligem",23105,2,23,5753,5958,11711,5732,5924,11656,21,34,55,164770234,48584678,29235,22132
"125","Aarschot",24001,2,24,13625,14137,27762,13575,14073,27648,50,64,114,358326311,96924782,25058,19774
"126","Begijnendijk",24007,2,24,4618,4651,9269,4573,4590,9163,45,61,106,115879920,32360327,28270,21739
"127","Bekkevoort",24008,2,24,2938,2891,5829,2902,2847,5749,36,44,80,68108045,18423977,26317,20290
"128","Bertem",24009,2,24,4403,4609,9012,4402,4598,9000,1,11,12,128216727,40394364,32070,23018
"129","Bierbeek",24011,2,24,4575,4571,9146,4505,4511,9016,70,60,130,133483188,41764690,32926,23735
"130","Boortmeerbeek",24014,2,24,5682,5750,11432,5718,5738,11456,-36,12,-24,170859822,51943491,32032,22835
"131","Boutersem",24016,2,24,3733,3763,7496,3737,3766,7503,-4,-3,-7,101640968,30457866,30286,22890
"132","Diest",24020,2,24,11142,11418,22560,11102,11348,22450,40,70,110,277244832,75431157,25042,19908
"133","Geetbets",24028,2,24,2878,2870,5748,2903,2860,5763,-25,10,-15,65071594,16727935,24463,19300
"134","Haacht",24033,2,24,6550,6831,13381,6546,6790,13336,4,41,45,174438794,51098172,28578,21616
"135","Herent",24038,2,24,9314,9776,19090,9357,9754,19111,-43,22,-21,304124492,95991662,33420,23247
"136","Hoegaarden",24041,2,24,2980,3124,6104,2946,3104,6050,34,20,54,80870751,23791465,29028,22665
"137","Holsbeek",24043,2,24,4471,4512,8983,4456,4480,8936,15,32,47,123705278,37324327,31606,23637
"138","Huldenberg",24045,2,24,4450,4637,9087,4431,4620,9051,19,17,36,121478586,37813725,31668,22944
"139","Keerbergen",24048,2,24,6078,6243,12321,6024,6192,12216,54,51,105,195571098,63045818,35701,22875
"140","Kortenaken",24054,2,24,3739,3733,7472,3723,3716,7439,16,17,33,83843292,21337403,24645,19942
"141","Kortenberg",24055,2,24,8855,9118,17973,8741,9041,17782,114,77,191,259079443,82351738,32704,23994
"142","Landen",24059,2,24,7064,7394,14458,7027,7356,14383,37,38,75,186374663,51083865,26440,20762
"143","Louvain",24062,2,24,43989,45196,89185,44247,45404,89651,-258,-208,-466,1273429889,398806851,28322,21510
"144","Lubbeek",24066,2,24,6791,6802,13593,6750,6800,13550,41,2,43,212343417,67605013,35017,24616
"145","Oud-Heverlee",24086,2,24,5374,5368,10742,5318,5339,10657,56,29,85,169271271,53810704,36418,25120
"146","Rotselaar",24094,2,24,7423,7517,14940,7366,7430,14796,57,87,144,208830522,61405448,29388,21202
"147","Tervuren",24104,2,24,10031,10532,20563,9969,10451,20420,62,81,143,284522815,90712442,35570,22956
"148","Tirlemont",24107,2,24,15415,16320,31735,15380,16373,31753,35,-53,-18,406088113,110899001,25254,19615
"149","Tremelo",24109,2,24,6823,6848,13671,6785,6817,13602,38,31,69,178604981,56609760,28924,21396
"150","Leau",24130,2,24,3874,4037,7911,3844,3984,7828,30,53,83,93750109,25098206,24953,19720
"151","Linter",24133,2,24,3477,3484,6961,3451,3475,6926,26,9,35,87226350,23656523,26699,21053
"152","Montaigu-Zichem",24134,2,24,10810,10938,21748,10806,10959,21765,4,-21,-17,263172260,67717987,24653,20258
"153","Tielt-Winge",24135,2,24,4932,4952,9884,4927,4929,9856,5,23,28,124048210,35359973,27384,21147
"154","Glabbeek",24137,2,24,2560,2559,5119,2533,2558,5091,27,1,28,65258162,18395598,27805,21941
"155","Beauvechain",25005,2,25,3204,3197,6401,3130,3116,6246,74,81,155,87425712,26360004,29828,21072
"156","Braine-lAlleud",25014,2,25,17666,18937,36603,17556,18755,36311,110,182,292,528707250,160805674,31227,21673
"157","Braine-le-Chateau",25015,2,25,4576,4794,9370,4540,4789,9329,36,5,41,124651991,36110525,27390,19836
"158","Chaumont-Gistoux",25018,2,25,5317,5404,10721,5296,5378,10674,21,26,47,162720596,51283637,35968,23316
"159","Court-Saint-Etienne",25023,2,25,4532,4739,9271,4431,4664,9095,101,75,176,116500566,35212808,29995,21368
"160","Genappe",25031,2,25,6920,7145,14065,6940,7160,14100,-20,-15,-35,179723548,51992240,28183,20253
"161","Grez-Doiceau",25037,2,25,6050,6263,12313,5985,6208,12193,65,55,120,173839003,52088859,31763,21029
"162","Incourt",25043,2,25,2263,2234,4497,2207,2197,4404,56,37,93,53375772,15290814,27400,19444
"163","Ittre",25044,2,25,2871,3022,5893,2832,2998,5830,39,24,63,75877153,22430459,28557,20823
"164","Jodoigne",25048,2,25,5797,6182,11979,5721,6140,11861,76,42,118,143037404,40201685,26538,19302
"165","La Hulpe",25050,2,25,3518,3716,7234,3413,3655,7068,105,61,166,106573048,33695020,35348,22825
"166","Mont-Saint-Guibert",25068,2,25,3181,3155,6336,3149,3135,6284,32,20,52,89117760,27738861,31760,21647
"167","Nivelles",25072,2,25,11374,12685,24059,11386,12684,24070,-12,1,-11,321134780,93530696,27176,20058
"168","Perwez",25084,2,25,3553,3721,7274,3537,3706,7243,16,15,31,88930053,25531202,28313,20506
"169","Rixensart",25091,2,25,10230,11166,21396,10291,11241,21532,-61,-75,-136,323759558,103772252,34109,22716
"170","Tubize",25105,2,25,10676,11233,21909,10560,11120,21680,116,113,229,243987441,61659144,23081,18327
"171","Villers-la-Ville",25107,2,25,4673,4795,9468,4597,4741,9338,76,54,130,115529936,33427883,28547,20836
"172","Waterloo",25110,2,25,13790,15145,28935,13776,15110,28886,14,35,49,398685101,126400531,33582,22480
"173","Wavre",25112,2,25,15238,16541,31779,15157,16493,31650,81,48,129,435052159,125791075,27426,19123
"174","Chastre",25117,2,25,3202,3376,6578,3127,3314,6441,75,62,137,80011075,24221115,30261,22128
"175","Helecine",25118,2,25,1467,1499,2966,1433,1489,2922,34,10,44,36034332,9374751,24800,18815
"176","Lasne",25119,2,25,6805,7074,13879,6778,6999,13777,27,75,102,234177343,74624926,41602,22839
"177","Orp-Jauche",25120,2,25,3744,3945,7689,3709,3904,7613,35,41,76,90984404,24191073,25536,18876
"178","Ottignies-Louvain-la-Neuve",25121,2,25,14327,14785,29112,14226,14560,28786,101,225,326,348144959,105491048,28918,21518
"179","Ramillies",25122,2,25,2867,2875,5742,2847,2830,5677,20,45,65,66753786,17919408,26960,20583
"180","Rebecq",25123,2,25,4881,5142,10023,4816,5080,9896,65,62,127,117361121,31111678,24599,18727
"181","Walhain",25124,2,25,2932,2994,5926,2898,2949,5847,34,45,79,79608877,24336772,30007,21399
"182","Beernem",31003,3,31,7496,7055,14551,7486,7065,14551,10,-10,0,163518375,43889272,25219,20268
"183","Blankenberge",31004,3,31,8591,9452,18043,8580,9426,18006,11,26,37,192217566,46624791,21549,16853
"184","Bruges",31005,3,31,56565,60283,116848,56569,60111,116680,-4,172,168,1479111871,404906263,24662,19255
"185","Damme",31006,3,31,5494,5482,10976,5489,5488,10977,5,-6,-1,123163916,33492266,25537,19988
"186","Jabbeke",31012,3,31,6879,6807,13686,6869,6765,13634,10,42,52,172331387,48690138,28703,21662
"187","Oostkamp",31022,3,31,10616,10837,21453,10577,10794,21371,39,43,82,257228539,71839590,26248,20433
"188","Torhout",31033,3,31,9557,9547,19104,9447,9504,18951,110,43,153,220891205,60470713,25850,20064
"189","Zedelgem",31040,3,31,10888,10908,21796,10940,10979,21919,-52,-71,-123,252485131,67021832,25534,20387
"190","Zuienkerke",31042,3,31,1397,1332,2729,1418,1339,2757,-21,-7,-28,31710849,8795277,25450,20151
"191","Knokke-Heist",31043,3,31,16082,17577,33659,16010,17535,33545,72,42,114,478827354,133832159,29479,19132
"192","Dixmude",32003,3,32,7762,7810,15572,7745,7817,15562,17,-7,10,154415880,37828493,22732,18444
"193","Houthulst",32006,3,32,4421,4526,8947,4431,4501,8932,-10,25,15,84555708,18905197,21203,17718
"194","Koekelare",32010,3,32,4127,4073,8200,4143,4068,8211,-16,5,-11,87072784,21530166,23035,18498
"195","Kortemark",32011,3,32,5999,6066,12065,6032,6061,12093,-33,5,-28,126039499,30527725,23349,19224
"196","Lo-Reninge",32030,3,32,1678,1632,3310,1679,1643,3322,-1,-11,-12,29656519,6863529,22450,17709
"197","Ypres",33011,3,33,17102,17868,34970,17178,17937,35115,-76,-69,-145,391185321,100222053,24032,18748
"198","Messines",33016,3,33,489,480,969,472,478,950,17,2,19,8413477,1767675,19035,16382
"199","Poperinge",33021,3,33,9681,9814,19495,9600,9819,19419,81,-5,76,192689282,46911317,22882,19043
"200","Wervik",33029,3,33,8658,8842,17500,8679,8838,17517,-21,4,-17,192823998,44050924,20916,17590
"201","Zonnebeke",33037,3,33,5782,5765,11547,5794,5770,11564,-12,-5,-17,116901322,28442747,23583,19546
"202","Heuvelland",33039,3,33,4229,4029,8258,4241,4082,8323,-12,-53,-65,75370439,16749231,20509,16968
"203","Langemark-Poelkapelle",33040,3,33,3905,3848,7753,3873,3793,7666,32,55,87,79828196,20226339,23159,17983
"204","Vleteren",33041,3,33,1834,1785,3619,1809,1773,3582,25,12,37,33090389,7772725,21813,17774
"205","Anzegem",34002,3,34,6930,6955,13885,6960,6954,13914,-30,1,-29,166778198,45112643,25034,19842
"206","Avelgem",34003,3,34,4597,4747,9344,4529,4657,9186,68,90,158,102889989,25681885,23878,19917
"207","Deerlijk",34009,3,34,5570,5717,11287,5617,5753,11370,-47,-36,-83,132185927,34835229,25553,20895
"208","Harelbeke",34013,3,34,12934,13054,25988,12982,13067,26049,-48,-13,-61,310469000,77755970,23435,18895
"209","Courtrai",34022,3,34,36076,37798,73874,36311,37988,74299,-235,-190,-425,918625170,253525983,25402,19079
"210","Kuurne",34023,3,34,6203,6339,12542,6227,6368,12595,-24,-29,-53,146682452,38032145,25247,20300
"211","Lendelede",34025,3,34,2720,2709,5429,2722,2706,5428,-2,3,1,62669488,15275958,23091,19020
"212","Menin",34027,3,34,15761,16459,32220,15699,16415,32114,62,44,106,353756453,81062126,21414,17361
"213","Waregem",34040,3,34,17757,18219,35976,17754,18233,35987,3,-14,-11,419376596,113225024,26076,20928
"214","Wevelgem",34041,3,34,15445,15664,31109,15487,15651,31138,-42,13,-29,358817749,91608303,24939,20172
"215","Zwevegem",34042,3,34,11648,11933,23581,11583,11822,23405,65,111,176,286243776,74587242,25013,19515
"216","Espierres-Helchin",34043,3,34,987,1033,2020,964,1005,1969,23,28,51,19915825,4329709,19506,15186
"217","Bredene",35002,3,35,7381,7488,14869,7250,7392,14642,131,96,227,164102611,42382080,24204,19709
"218","Gistel",35005,3,35,5543,5662,11205,5519,5639,11158,24,23,47,125332549,32517996,24887,19636
"219","Ichtegem",35006,3,35,6745,6676,13421,6761,6671,13432,-16,5,-11,137114747,32615389,22637,18823
"220","Middelkerke",35011,3,35,8628,8920,17548,8559,8797,17356,69,123,192,180367561,44188089,22490,18281
"221","Ostende",35013,3,35,32846,35519,68365,32654,35351,68005,192,168,360,777327021,202751420,22676,18092
"222","Oudenburg",35014,3,35,4382,4469,8851,4340,4446,8786,42,23,65,97366532,25362938,25049,20132
"223","De Haan",35029,3,35,5703,6050,11753,5661,6005,11666,42,45,87,139152265,36786250,25140,18815
"224","Hooglede",36006,3,36,4983,4866,9849,4943,4870,9813,40,-4,36,110091365,28805904,26020,20532
"225","Ingelmunster",36007,3,36,5268,5357,10625,5288,5350,10638,-20,7,-13,122683886,29311596,21403,17341
"226","Izegem",36008,3,36,13047,13482,26529,13008,13451,26459,39,31,70,306156077,78175585,24712,20085
"227","Ledegem",36010,3,36,4602,4659,9261,4636,4668,9304,-34,-9,-43,106856729,25428209,21544,17201
"228","Lichtervelde",36011,3,36,4155,4169,8324,4139,4133,8272,16,36,52,89685653,22532944,24578,20034
"229","Moorslede",36012,3,36,5279,5356,10635,5278,5344,10622,1,12,13,110035596,26842210,22895,18912
"230","Roulers",36015,3,36,27299,28086,55385,27230,27995,55225,69,91,160,644081313,174112265,25262,19785
"231","Staden",36019,3,36,5448,5451,10899,5420,5446,10866,28,5,33,108089123,26341518,23719,19797
"232","Dentergem",37002,3,37,4087,3980,8067,4051,3950,8001,36,30,66,85216111,22329234,25392,20776
"233","Meulebeke",37007,3,37,5520,5463,10983,5516,5452,10968,4,11,15,124680063,29189511,21371,17120
"234","Oostrozebeke",37010,3,37,3653,3786,7439,3631,3768,7399,22,18,40,85894567,21262816,22729,18638
"235","Pittem",37011,3,37,3298,3258,6556,3311,3259,6570,-13,-1,-14,69318560,18324060,25317,20576
"236","Ruiselede",37012,3,37,2548,2524,5072,2557,2514,5071,-9,10,1,53111153,14163734,24947,19906
"237","Tielt",37015,3,37,9515,9739,19254,9526,9724,19250,-11,15,4,219185161,58886640,24987,19865
"238","Wielsbeke",37017,3,37,4437,4421,8858,4456,4449,8905,-19,-28,-47,102664760,25371261,21998,17545
"239","Wingene",37018,3,37,6474,6439,12913,6415,6395,12810,59,44,103,134557296,36680918,25071,19585
"240","Ardooie",37020,3,37,4631,4598,9229,4673,4614,9287,-42,-16,-58,100804957,25873256,24896,20320
"241","Alveringem",38002,3,38,2500,2396,4896,2465,2371,4836,35,25,60,43233996,9480665,20676,16970
"242","La Panne",38008,3,38,4748,5157,9905,4742,5151,9893,6,6,12,101354803,22852669,20672,16620
"243","Koksijde",38014,3,38,10170,10615,20785,10033,10431,20464,137,184,321,288248432,76750570,28152,19242
"244","Nieuport",38016,3,38,5267,5475,10742,5193,5388,10581,74,87,161,112210619,26657250,21955,17265
"245","Furnes",38025,3,38,5698,6136,11834,5718,6170,11888,-20,-34,-54,122265815,30068159,23078,18858
"246","Alost",41002,4,41,37537,39320,76857,37632,39303,76935,-95,17,-78,997957553,287369159,26192,20334
"247","Denderleeuw",41011,4,41,8375,8691,17066,8404,8661,17065,-29,30,1,225470227,61536203,25869,20591
"248","Grammont",41018,4,41,15265,15753,31018,15238,15728,30966,27,25,52,382839864,103016348,24942,19490
"249","Haaltert",41024,4,41,8422,8666,17088,8436,8651,17087,-14,15,1,222089170,60636887,26211,20472
"250","Herzele",41027,4,41,8200,8295,16495,8178,8286,16464,22,9,31,207190946,56430637,26220,20849
"251","Lede",41034,4,41,8303,8581,16884,8287,8559,16846,16,22,38,215100022,59659725,26318,20735
"252","Ninove",41048,4,41,17295,17849,35144,17088,17728,34816,207,121,328,444665753,127060616,25824,19891
"253","Sint-Lievens-Houtem",41063,4,41,4507,4727,9234,4470,4694,9164,37,33,70,110704008,29683720,25171,19900
"254","Zottegem",41081,4,41,11868,12613,24481,11822,12582,24404,46,31,77,335722107,92875201,27266,20963
"255","Erpe-Mere",41082,4,41,9419,9573,18992,9395,9587,18982,24,-14,10,254094174,71405081,27685,21033
"256","Berlare",42003,4,42,6888,7047,13935,6862,6987,13849,26,60,86,162842931,43070020,25173,20055
"257","Buggenhout",42004,4,42,6795,6912,13707,6768,6902,13670,27,10,37,178431596,50110086,27279,21081
"258","Termonde",42006,4,42,21033,21962,42995,21037,22010,43047,-4,-48,-52,532520727,146557779,25276,19978
"259","Hamme",42008,4,42,11409,11562,22971,11330,11492,22822,79,70,149,252148386,65196824,23732,19070
"260","Laarne",42010,4,42,5733,5826,11559,5738,5853,11591,-5,-27,-32,145213239,40821817,26307,20544
"261","Lebbeke",42011,4,42,8634,8847,17481,8565,8828,17393,69,19,88,219545722,58793574,26531,20188
"262","Waasmunster",42023,4,42,5155,5231,10386,5176,5253,10429,-21,-22,-43,141877835,42608788,30078,20747
"263","Wetteren",42025,4,42,11114,11908,23022,11111,11849,22960,3,59,62,283606563,76880994,24897,19906
"264","Wichelen",42026,4,42,5405,5676,11081,5365,5659,11024,40,17,57,137211259,37095577,25860,20825
"265","Zele",42028,4,42,10123,10129,20252,10184,10152,20336,-61,-23,-84,234371753,62183557,24312,19365
"266","Assenede",43002,4,43,6689,6764,13453,6695,6793,13488,-6,-29,-35,162775977,42494010,25764,20400
"267","Eeklo",43005,4,43,9513,9854,19367,9400,9730,19130,113,124,237,221298668,57065207,22928,18651
"268","Kaprijke",43007,4,43,3064,3031,6095,3063,3010,6073,1,21,22,72031589,19908923,26629,20616
"269","Maldegem",43010,4,43,11048,11028,22076,11059,11040,22099,-11,-12,-23,238827599,61137717,23773,19442
"270","Sint-Laureins",43014,4,43,3277,3242,6519,3316,3250,6566,-39,-8,-47,68900353,17086883,23491,19130
"271","Zelzate",43018,4,43,6096,6024,12120,6067,6026,12093,29,-2,27,146919789,38407223,24454,19967
"272","Aalter",44001,4,44,9333,9337,18670,9352,9310,18662,-19,27,8,224543249,62597195,26982,21193
"273","Deinze",44011,4,44,13736,14265,28001,13628,14178,27806,108,87,195,358173131,96541682,23462,18226
"274","De Pinte",44012,4,44,4932,5188,10120,4961,5155,10116,-29,33,4,163129397,52555235,34350,24352
"275","Destelbergen",44013,4,44,8376,8625,17001,8406,8611,17017,-30,14,-16,250135226,75639468,30881,21926
"276","Evergem",44019,4,44,15633,16208,31841,15469,16029,31498,164,179,343,398841068,109743383,26595,21132
"277","Gavere",44020,4,44,5880,6035,11915,5869,6008,11877,11,27,38,152728796,42277013,26922,21216
"278","Gand",44021,4,44,112348,117550,229898,111419,117062,228481,929,488,1417,2898954255,792667913,23373,18142
"279","Knesselare",44029,4,44,3947,3885,7832,3964,3888,7852,-17,-3,-20,86833010,22595563,24120,19635
"280","Lochristi",44034,4,44,9831,9913,19744,9735,9807,19542,96,106,202,244008410,71175787,28502,22380
"281","Lovendegem",44036,4,44,4535,4748,9283,4531,4744,9275,4,4,8,129852249,37836449,28747,21877
"282","Melle",44040,4,44,5096,5458,10554,5070,5445,10515,26,13,39,141913622,41156155,28208,22261
"283","Merelbeke",44043,4,44,10735,11334,22069,10712,11308,22020,23,26,49,304283968,88920556,28630,21796
"284","Moerbeke",44045,4,44,2874,2894,5768,2871,2914,5785,3,-20,-17,69481642,18422708,26111,21336
"285","Nazareth",44048,4,44,5397,5514,10911,5421,5496,10917,-24,18,-6,142302528,41325548,29238,21813
"286","Nevele",44049,4,44,5483,5609,11092,5415,5570,10985,68,39,107,126241480,35868111,27108,21485
"287","Oosterzele",44052,4,44,6552,6629,13181,6571,6624,13195,-19,5,-14,168957388,47612154,27698,21358
"288","Sint-Martens-Latem",44064,4,44,4076,4287,8363,4072,4272,8344,4,15,19,144784364,48288268,37134,23603
"289","Waarschoot",44072,4,44,3921,3974,7895,3925,3947,7872,-4,27,23,91446993,23771745,24829,20183
"290","Wachtebeke",44073,4,44,3380,3443,6823,3363,3448,6811,17,-5,12,87387997,23929895,26211,21425
"291","Zomergem",44080,4,44,3937,4083,8020,3998,4136,8134,-61,-53,-114,95618491,25397822,25621,20034
"292","Zulte",44081,4,44,7248,7302,14550,7283,7274,14557,-35,28,-7,175913732,44406105,22822,18395
"293","Kruishoutem",45017,4,45,4119,3979,8098,4105,3970,8075,14,9,23,94864412,26872343,27019,20227
"294","Audenarde",45035,4,45,13800,14377,28177,13720,14368,28088,80,9,89,353922411,94751133,25005,19843
"295","Renaix",45041,4,45,11601,12333,23934,11572,12312,23884,29,21,50,261401047,62568312,20794,16901
"296","Zingem",45057,4,45,3331,3372,6703,3302,3346,6648,29,26,55,80690741,22022439,26395,20964
"297","Brakel",45059,4,45,6632,6994,13626,6643,6986,13629,-11,8,-3,169734869,43967423,23900,19070
"298","Kluisbergen",45060,4,45,3030,3093,6123,3013,3090,6103,17,3,20,72025328,18597597,23599,18822
"299","Wortegem-Petegem",45061,4,45,2978,2975,5953,2983,2976,5959,-5,-1,-6,76928362,21938385,28598,21037
"300","Horebeke",45062,4,45,944,994,1938,931,978,1909,13,16,29,23499458,6402697,26374,20541
"301","Lierde",45063,4,45,3178,3218,6396,3165,3204,6369,13,14,27,79257260,21318597,26158,20846
"302","Maarkedal",45064,4,45,3103,3277,6380,3093,3273,6366,10,4,14,89334488,22662343,27294,18899
"303","Zwalm",45065,4,45,3841,3894,7735,3828,3883,7711,13,11,24,95610120,26012478,26677,20818
"304","Beveren",46003,4,46,22608,22826,45434,22475,22701,45176,133,125,258,588238237,160676445,26933,20826
"305","Kruibeke",46013,4,46,7402,7504,14906,7328,7447,14775,74,57,131,187403430,49524503,24414,18698
"306","Lokeren",46014,4,46,18449,19020,37469,18298,18822,37120,151,198,349,427931054,117463885,25150,20087
"307","Sint-Gillis-Waas",46020,4,46,8745,8926,17671,8629,8841,17470,116,85,201,214813572,55972517,24174,18730
"308","Saint-Nicolas",46021,4,46,33612,35421,69033,33508,35261,68769,104,160,264,839719933,224413468,23691,18763
"309","Stekene",46024,4,46,8368,8448,16816,8352,8458,16810,16,-10,6,197178653,51598692,24921,19760
"310","Tamise",46025,4,46,13009,13179,26188,12973,13107,26080,36,72,108,313325867,85488285,25682,19850
"311","Ath",51004,5,51,12863,13648,26511,12718,13517,26235,145,131,276,303010813,79737856,23814,18552
"312","Beloeil",51008,5,51,6527,6785,13312,6548,6848,13396,-21,-63,-84,133688647,33000765,22255,18137
"313","Bernissart",51009,5,51,5505,5988,11493,5501,5963,11464,4,25,29,114196783,24998779,18938,14552
"314","Brugelette",51012,5,51,1581,1652,3233,1612,1687,3299,-31,-35,-66,35771121,8790433,21772,17262
"315","Chievres",51014,5,51,2990,3099,6089,2950,3095,6045,40,4,44,67440470,16878988,23033,17878
"316","Ellezelles",51017,5,51,2711,2903,5614,2704,2893,5597,7,10,17,64321019,15896397,22608,17532
"317","Flobecq",51019,5,51,1523,1694,3217,1528,1718,3246,-5,-24,-29,36521513,9594280,23700,18415
"318","Frasnes-lez-Anvaing",51065,5,51,5361,5546,10907,5349,5557,10906,12,-11,1,115413576,28633383,22818,18245
"319","Chapelle-lez-Herlaimont",52010,5,52,6603,7370,13973,6646,7428,14074,-43,-58,-101,132552941,30182014,20456,16500
"320","Charleroi",52011,5,52,97327,103656,200983,97045,103544,200589,282,112,394,1908660704,428093728,19048,14978
"321","Chatelet",52012,5,52,16940,18579,35519,16926,18526,35452,14,53,67,330701775,71296791,19035,15383
"322","Courcelles",52015,5,52,14191,15305,29496,14220,15323,29543,-29,-18,-47,286856108,66354470,21222,17041
"323","Farciennes",52018,5,52,5327,5847,11174,5358,5882,11240,-31,-35,-66,90054157,18450164,18777,15716
"324","Fleurus",52021,5,52,10637,11589,22226,10586,11657,22243,51,-68,-17,225525069,52057776,20899,16442
"325","Fontaine-lEveque",52022,5,52,8037,8805,16842,8018,8806,16824,19,-1,18,156328032,35722879,20972,16871
"326","Gerpinnes",52025,5,52,5810,6234,12044,5782,6190,11972,28,44,72,169012627,48247391,27247,19412
"327","Manage",52043,5,52,10884,11241,22125,10764,11213,21977,120,28,148,211751242,48027405,21112,17206
"328","Montigny-le-Tilleul",52048,5,52,4853,5325,10178,4837,5394,10231,16,-69,-53,138388001,38818149,25383,19117
"329","Pont-a-Celles",52055,5,52,7757,8362,16119,7716,8265,15981,41,97,138,191414892,51112760,25025,19422
"330","Seneffe",52063,5,52,5241,5466,10707,5244,5470,10714,-3,-4,-7,129490140,34231590,23382,16905
"331","Aiseau-Presles",52074,5,52,5140,5592,10732,5207,5638,10845,-67,-46,-113,113666903,26589452,20945,16046
"332","Les Bons Villers",52075,5,52,4227,4518,8745,4232,4497,8729,-5,21,16,105223660,28719382,24741,18230
"333","Boussu",53014,5,53,9447,10537,19984,9454,10553,20007,-7,-16,-23,190483972,39653128,18309,14458
"334","Dour",53020,5,53,8080,8751,16831,8046,8698,16744,34,53,87,172531887,39833274,19318,14030
"335","Frameries",53028,5,53,9696,10874,20570,9711,10966,20677,-15,-92,-107,214403686,47157815,19169,14948
"336","Hensies",53039,5,53,3198,3402,6600,3192,3411,6603,6,-9,-3,63951090,14740657,20784,16218
"337","Jurbise",53044,5,53,4458,4967,9425,4437,4949,9386,21,18,39,112473646,31956243,27280,20866
"338","Lens",53046,5,53,1910,1994,3904,1867,1951,3818,43,43,86,41595133,10384536,22680,17431
"339","Mons",53053,5,53,43382,47610,90992,43344,47450,90794,38,160,198,947067033,244862137,22221,17187
"340","Quaregnon",53065,5,53,8932,9810,18742,8968,9831,18799,-36,-21,-57,170662130,36465839,19301,15637
"341","Quievrain",53068,5,53,3128,3447,6575,3137,3458,6595,-9,-11,-20,65370551,14539356,19809,15368
"342","Saint-Ghislain",53070,5,53,10551,11764,22315,10527,11661,22188,24,103,127,246665023,58224848,20865,15850
"343","Colfontaine",53082,5,53,9605,10501,20106,9601,10503,20104,4,-2,2,182348984,35994986,17654,13855
"344","Honnelles",53083,5,53,2453,2507,4960,2470,2514,4984,-17,-7,-24,59116030,14786578,23656,16880
"345","Quevy",53084,5,53,3773,3999,7772,3741,3991,7732,32,8,40,90311937,24324774,25157,18861
"346","Mouscron",54007,5,54,25330,27106,52436,25233,26981,52214,97,125,222,523890027,123043020,21844,17947
"347","Comines-Warneton",54010,5,54,8433,8953,17386,8451,8993,17444,-18,-40,-58,158991228,33459923,20321,16909
"348","Braine-le-Comte",55004,5,55,9780,10202,19982,9759,10107,19866,21,95,116,231878270,63709285,25248,19404
"349","Enghien",55010,5,55,5666,5906,11572,5570,5795,11365,96,111,207,142704753,40357852,26860,19417
"350","La Louviere",55022,5,55,36969,39911,76880,36953,39887,76840,16,24,40,759483491,170615693,19720,15415
"351","Lessines",55023,5,55,8503,9149,17652,8417,9081,17498,86,68,154,187644300,48171028,23609,18863
"352","Le Roeulx",55035,5,55,3892,4123,8015,3906,4078,7984,-14,45,31,99727007,30871202,29041,19811
"353","Silly",55039,5,55,3916,3990,7906,3881,3910,7791,35,80,115,96818690,28048458,28493,22070
"354","Soignies",55040,5,55,11923,13094,25017,11820,12981,24801,103,113,216,269441884,72208582,24847,19414
"355","Ecaussinnes",55050,5,55,4789,5059,9848,4763,5041,9804,26,18,44,105878460,27007097,23724,18773
"356","Anderlues",56001,5,56,5506,6006,11512,5467,5980,11447,39,26,65,102670542,22891501,20629,17061
"357","Beaumont",56005,5,56,3229,3430,6659,3257,3428,6685,-28,2,-26,63309790,15595798,22206,17367
"358","Binche",56011,5,56,15462,16812,32274,15468,16801,32269,-6,11,5,315079986,70534108,20795,16660
"359","Chimay",56016,5,56,4750,4992,9742,4765,5007,9772,-15,-15,-30,88307756,20375441,20971,16755
"360","Erquelinnes",56022,5,56,4641,4923,9564,4655,4902,9557,-14,21,7,93264992,19649642,19270,15611
"361","Froidchapelle",56029,5,56,1808,1797,3605,1741,1756,3497,67,41,108,30056216,6199202,18073,14008
"362","Lobbes",56044,5,56,2650,2798,5448,2677,2791,5468,-27,7,-20,61241423,15449089,22524,17734
"363","Merbes-le-Chateau",56049,5,56,1982,2019,4001,1982,2035,4017,0,-16,-16,37941027,8469742,19979,16216
"364","Momignies",56051,5,56,2536,2581,5117,2548,2613,5161,-12,-32,-44,42647832,8904195,18280,15187
"365","Thuin",56078,5,56,7162,7478,14640,7153,7473,14626,9,5,14,173651697,46081061,23965,18276
"366","Estinnes",56085,5,56,3632,3817,7449,3619,3797,7416,13,20,33,75622597,19349592,23871,18525
"367","Ham-sur-Heure-Nalinnes",56086,5,56,6538,6832,13370,6465,6794,13259,73,38,111,177955992,50453712,27386,20113
"368","Morlanwelz",56087,5,56,8801,9574,18375,8789,9619,18408,12,-45,-33,178815930,43101430,22087,17420
"369","Sivry-Rance",56088,5,56,2272,2315,4587,2244,2301,4545,28,14,42,45668707,10524265,19693,14763
"370","Antoing",57003,5,57,3686,3841,7527,3695,3866,7561,-9,-25,-34,75222253,18033403,21835,18042
"371","Celles",57018,5,57,2679,2756,5435,2679,2765,5444,0,-9,-9,53370210,12876803,22072,17829
"372","Estaimpuis",57027,5,57,4634,4923,9557,4655,4884,9539,-21,39,18,92456075,20488771,21883,17764
"373","Pecq",57062,5,57,2568,2725,5293,2576,2696,5272,-8,29,21,56152076,13504619,22398,17217
"374","Peruwelz",57064,5,57,8161,8630,16791,8155,8641,16796,6,-11,-5,150197699,35670674,21627,17770
"375","Rumes",57072,5,57,2412,2590,5002,2429,2584,5013,-17,6,-11,51368488,11286508,20168,16484
"376","Tournai",57081,5,57,32835,34608,67443,32733,34675,67408,102,-67,35,740880847,192303020,23258,17936
"377","Brunehaut",57093,5,57,3724,3911,7635,3701,3858,7559,23,53,76,72021550,16953067,22018,17678
"378","Leuze-en-Hainaut",57094,5,57,6339,6768,13107,6374,6739,13113,-35,29,-6,133726687,33553229,22859,18541
"379","Mont-de-lEnclus",57095,5,57,1630,1661,3291,1607,1648,3255,23,13,36,36105776,9086101,23816,18900
"380","Amay",61003,6,61,6358,6794,13152,6366,6797,13163,-8,-3,-11,137352409,34433899,22862,18404
"381","Burdinne",61010,6,61,1428,1348,2776,1432,1342,2774,-4,6,2,32453439,8627518,27112,20203
"382","Clavier",61012,6,61,2046,2091,4137,2050,2087,4137,-4,4,0,43334638,10932350,23929,18574
"383","Ferrieres",61019,6,61,2196,2240,4436,2171,2222,4393,25,18,43,45634007,11953337,24482,19934
"384","Hamoir",61024,6,61,1732,1842,3574,1702,1853,3555,30,-11,19,37582203,9605739,24014,19004
"385","Heron",61028,6,61,2156,2229,4385,2122,2221,4343,34,8,42,47186894,12265221,24666,19846
"386","Huy",61031,6,61,9584,10236,19820,9459,10143,19602,125,93,218,203944744,54159494,22666,17489
"387","Marchin",61039,6,61,2494,2580,5074,2493,2558,5051,1,22,23,55173241,15471575,25758,19559
"388","Modave",61041,6,61,1840,1880,3720,1850,1873,3723,-10,7,-3,41975762,11547753,25991,20336
"389","Nandrin",61043,6,61,2708,2793,5501,2697,2786,5483,11,7,18,71961220,21958757,30938,22500
"390","Ouffet",61048,6,61,1238,1239,2477,1264,1256,2520,-26,-17,-43,27631457,7068874,23923,18834
"391","Verlaine",61063,6,61,1745,1743,3488,1729,1753,3482,16,-10,6,41942043,11767410,28055,21954
"392","Villers-Le-Bouillet",61068,6,61,2949,3021,5970,2918,2941,5859,31,80,111,62694021,16662082,25270,20240
"393","Wanze",61072,6,61,6078,6454,12532,6038,6419,12457,40,35,75,144856300,39210562,25494,19421
"394","Anthisnes",61079,6,61,1969,1992,3961,1960,1992,3952,9,0,9,45856195,12439583,25140,20048
"395","Engis",61080,6,61,2731,2878,5609,2793,2908,5701,-62,-30,-92,56223193,13578283,21954,18124
"396","Tinlot",61081,6,61,1130,1158,2288,1096,1132,2228,34,26,60,25034720,6871091,26661,19951
"397","Ans",62003,6,62,12990,14348,27338,13062,14381,27443,-72,-33,-105,309775750,80545077,23734,18993
"398","Awans",62006,6,62,4163,4447,8610,4125,4417,8542,38,30,68,99221554,27132809,26424,21074
"399","Aywaille",62009,6,62,5196,5372,10568,5171,5323,10494,25,49,74,107120634,27167307,22914,18680
"400","Bassenge",62011,6,62,4031,4184,8215,4016,4174,8190,15,10,25,93161107,22830074,22448,17666
"401","Beyne-Heusay",62015,6,62,5591,6126,11717,5606,6114,11720,-15,12,-3,118500990,29781189,23456,19305
"402","Chaudfontaine",62022,6,62,9952,10849,20801,9957,10878,20835,-5,-29,-34,297554942,88251835,31135,21305
"403","Comblain-au-Pont",62026,6,62,2514,2780,5294,2496,2749,5245,18,31,49,52326583,12717282,21676,17730
"404","Dalhem",62027,6,62,3159,3230,6389,3116,3189,6305,43,41,84,75302147,20284501,23762,18280
"405","Esneux",62032,6,62,6386,6811,13197,6384,6831,13215,2,-20,-18,166680154,48878312,26669,20082
"406","Fleron",62038,6,62,7480,8405,15885,7498,8375,15873,-18,30,12,177797811,44405530,22803,17984
"407","Herstal",62051,6,62,17446,19186,36632,17330,19136,36466,116,50,166,365159313,81584028,20050,16545
"408","Juprelle",62060,6,62,4080,4207,8287,4027,4217,8244,53,-10,43,102828161,27898591,25726,20311
"409","Liege",62063,6,62,90542,95066,185608,89585,94889,184474,957,177,1134,1843741709,488683950,22099,17311
"410","Oupeye",62079,6,62,11333,12294,23627,11300,12299,23599,33,-5,28,269690099,66830668,22403,17852
"411","Saint-Nicolas",62093,6,62,10772,11929,22701,10781,11913,22694,-9,16,7,209131463,48239242,21099,17420
"412","Seraing",62096,6,62,28858,31947,60805,28852,31866,60718,6,81,87,562351504,131495264,20870,17139
"413","Soumagne",62099,6,62,7469,7674,15143,7445,7614,15059,24,60,84,169296387,45268515,25401,19682
"414","Sprimont",62100,6,62,6218,6576,12794,6189,6523,12712,29,53,82,147858783,41525094,26555,20136
"415","Vise",62108,6,62,8062,8750,16812,8144,8771,16915,-82,-21,-103,187041801,45053064,21163,16009
"416","Grace-Hollogne",62118,6,62,10547,11270,21817,10518,11256,21774,29,14,43,214346835,51124897,21823,18376
"417","Blegny",62119,6,62,6231,6429,12660,6207,6455,12662,24,-26,-2,158892051,42445202,23919,18616
"418","Flemalle",62120,6,62,11889,13335,25224,11946,13416,25362,-57,-81,-138,263387246,62672983,21673,17466
"419","Neupre",62121,6,62,4751,5022,9773,4770,4992,9762,-19,30,11,147285084,45763009,32306,23258
"420","Trooz",62122,6,62,3719,3915,7634,3728,3899,7627,-9,16,7,83891670,21967074,23976,19207
"421","Ambleve",63001,6,63,2668,2578,5246,2658,2541,5199,10,37,47,43229037,8673660,21337,18035
"422","Aubel",63003,6,63,1992,2056,4048,1982,2041,4023,10,15,25,42428749,11430283,25346,19952
"423","Baelen",63004,6,63,1971,2006,3977,1943,1982,3925,28,24,52,41583684,10997036,25844,21094
"424","Bullange",63012,6,63,2744,2606,5350,2757,2610,5367,-13,-4,-17,44999430,9552978,21216,18682
"425","Butgenbach",63013,6,63,2787,2770,5557,2785,2749,5534,2,21,23,50813898,10872861,20937,18068
"426","Dison",63020,6,63,6893,7101,13994,6821,6980,13801,72,121,193,128277776,27930761,19143,15278
"427","Eupen",63023,6,63,8695,9177,17872,8603,9172,17775,92,5,97,210048118,55457784,25594,19752
"428","Herve",63035,6,63,8139,8526,16665,8104,8510,16614,35,16,51,187144189,49940091,25945,20178
"429","Jalhay",63038,6,63,3927,3884,7811,3899,3830,7729,28,54,82,92561891,25645224,27410,21855
"430","La Calamine",63040,6,63,4980,5195,10175,4960,5203,10163,20,-8,12,92031788,20059286,23205,18921
"431","Lierneux",63045,6,63,1729,1634,3363,1709,1615,3324,20,19,39,30655623,7538549,22118,18290
"432","Limbourg",63046,6,63,2762,2799,5561,2754,2799,5553,8,0,8,58471408,15082273,23924,20100
"433","Lontzen",63048,6,63,2515,2537,5052,2488,2505,4993,27,32,59,49885908,11914294,24158,20109
"434","Malmedy",63049,6,63,5605,6035,11640,5579,5956,11535,26,79,105,121225231,30384768,23644,18774
"435","Olne",63057,6,63,1894,1914,3808,1906,1892,3798,-12,22,10,51644458,15323720,30559,22899
"436","Pepinster",63058,6,63,4602,4864,9466,4583,4815,9398,19,49,68,98075058,24897209,23758,19530
"437","Raeren",63061,6,63,4932,5001,9933,4883,4938,9821,49,63,112,91817645,19335189,26129,20175
"438","Saint-Vith",63067,6,63,4516,4579,9095,4508,4612,9120,8,-33,-25,82203058,17841666,23123,19006
"439","Spa",63072,6,63,5026,5543,10569,5020,5492,10512,6,51,57,109955531,27799193,22592,18399
"440","Stavelot",63073,6,63,3320,3351,6671,3295,3319,6614,25,32,57,66886445,16252809,22400,18071
"441","Stoumont",63075,6,63,1478,1467,2945,1467,1477,2944,11,-10,1,31615064,8198384,23629,18524
"442","Theux",63076,6,63,5660,5904,11564,5662,5833,11495,-2,71,69,131394145,35218657,25210,19607
"443","Verviers",63079,6,63,25496,27243,52739,25653,27363,53016,-157,-120,-277,516559435,130029204,22163,17771
"444","Waimes",63080,6,63,3315,3325,6640,3314,3304,6618,1,21,22,63583840,14473560,22255,18467
"445","Welkenraedt",63084,6,63,4447,4598,9045,4401,4538,8939,46,60,106,95189202,24894147,24221,20058
"446","Trois-Ponts",63086,6,63,1209,1223,2432,1195,1238,2433,14,-15,-1,24331324,6125575,23554,19412
"447","Burg-Reuland",63087,6,63,1968,1901,3869,1963,1876,3839,5,25,30,28031134,4253083,20981,17336
"448","Plombieres",63088,6,63,4724,4861,9585,4675,4832,9507,49,29,78,80628633,18597378,23043,19510
"449","Thimister-Clermont",63089,6,63,2673,2637,5310,2667,2630,5297,6,7,13,58142170,15676673,27361,21563
"450","Berloz",64008,6,64,1346,1378,2724,1308,1361,2669,38,17,55,29705313,7724237,24092,19750
"451","Braives",64015,6,64,2686,2831,5517,2688,2876,5564,-2,-45,-47,61343981,16157119,24616,20019
"452","Crisnee",64021,6,64,1303,1398,2701,1269,1373,2642,34,25,59,32257569,8960084,26098,20919
"453","Donceel",64023,6,64,1393,1393,2786,1395,1397,2792,-2,-4,-6,32749369,9078229,26844,21631
"454","Fexhe-le-Haut-Clocher",64025,6,64,1504,1532,3036,1513,1539,3052,-9,-7,-16,35814987,9817465,26929,20963
"455","Geer",64029,6,64,1353,1396,2749,1324,1366,2690,29,30,59,30532383,8355516,25701,19886
"456","Hannut",64034,6,64,6753,7183,13936,6668,7098,13766,85,85,170,158605965,50855727,26665,19890
"457","Lincent",64047,6,64,1444,1512,2956,1424,1517,2941,20,-5,15,33469070,8502565,24165,18893
"458","Oreye",64056,6,64,1641,1758,3399,1640,1745,3385,1,13,14,39551354,10626382,25716,19954
"459","Remicourt",64063,6,64,2423,2578,5001,2430,2544,4974,-7,34,27,61461684,16594598,25408,19931
"460","Saint-Georges-sur-Meuse",64065,6,64,3174,3334,6508,3074,3234,6308,100,100,200,71602160,18457702,23569,18453
"461","Waremme",64074,6,64,6579,7161,13740,6529,7099,13628,50,62,112,163874228,45065863,25266,19719
"462","Wasseiges",64075,6,64,1183,1229,2412,1181,1218,2399,2,11,13,27084571,6795182,24848,18617
"463","Faimes",64076,6,64,1730,1663,3393,1660,1632,3292,70,31,101,38266187,10416959,26537,21174
"464","As",71002,7,71,3701,3705,7406,3643,3620,7263,58,85,143,86272513,21507845,21666,17464
"465","Beringen",71004,7,71,20299,20323,40622,20149,20130,40279,150,193,343,435515855,103170093,22287,18477
"466","Diepenbeek",71011,7,71,8897,8789,17686,8845,8748,17593,52,41,93,218278420,58873361,25334,20413
"467","Genk",71016,7,71,31393,32205,63598,31306,32044,63350,87,161,248,704876990,170885704,21176,16603
"468","Gingelom",71017,7,71,3846,3890,7736,3830,3866,7696,16,24,40,95608029,24125158,23206,17797
"469","Halen",71020,7,71,4214,4232,8446,4213,4195,8408,1,37,38,97990738,24512368,23681,18949
"470","Hasselt",71022,7,71,33805,35452,69257,33650,35288,68938,155,164,319,932322289,260113650,24504,19053
"471","Herck-la-Ville",71024,7,71,5790,5831,11621,5779,5802,11581,11,29,40,148201959,39558540,23262,18039
"472","Bourg-Leopold",71034,7,71,7120,7069,14189,7033,7059,14092,87,10,97,163136325,40552851,22718,19125
"473","Lummen",71037,7,71,6851,6783,13634,6856,6765,13621,-5,18,13,164693561,42515522,24673,19646
"474","Nieuwerkerken",71045,7,71,3251,3280,6531,3226,3267,6493,25,13,38,77174147,18791468,21443,16949
"475","Opglabbeek",71047,7,71,4718,4634,9352,4701,4608,9309,17,26,43,106444890,26530778,23384,19661
"476","Saint-Trond",71053,7,71,18669,19168,37837,18515,19104,37619,154,64,218,472193825,121324391,21753,16803
"477","Tessenderlo",71057,7,71,8181,8338,16519,8135,8255,16390,46,83,129,205053598,54789275,25979,20708
"478","Zonhoven",71066,7,71,9867,9742,19609,9871,9728,19599,-4,14,10,236599569,62664589,24170,19402
"479","Zutendaal",71067,7,71,3478,3399,6877,3456,3378,6834,22,21,43,81944625,21747538,23731,19322
"480","Ham",71069,7,71,4825,4777,9602,4764,4735,9499,61,42,103,113743777,30926354,26010,20304
"481","Heusden-Zolder",71070,7,71,15348,15254,30602,15328,15279,30607,20,-25,-5,328300862,80908127,23413,18905
"482","Bocholt",72003,7,72,6091,6125,12216,6044,6081,12125,47,44,91,119141837,28276351,23329,20108
"483","Bree",72004,7,72,7121,7215,14336,7071,7134,14205,50,81,131,154821540,38998590,24509,20309
"484","Kinrooi",72018,7,72,6121,5804,11925,6123,5808,11931,-2,-4,-6,114172758,26366250,23886,20516
"485","Lommel",72020,7,72,15817,15719,31536,15766,15626,31392,51,93,144,340267934,88502116,23676,19317
"486","Maaseik",72021,7,72,11840,11724,23564,11739,11660,23399,101,64,165,253925091,63223270,24543,19853
"487","Neerpelt",72025,7,72,8026,7952,15978,7971,7894,15865,55,58,113,174947865,44433005,25296,20020
"488","Overpelt",72029,7,72,6687,6479,13166,6628,6455,13083,59,24,83,141249405,34943941,25004,20588
"489","Peer",72030,7,72,7990,7735,15725,7922,7645,15567,68,90,158,164102049,41758020,24515,20936
"490","Hamont-Achel",72037,7,72,6993,6720,13713,7026,6723,13749,-33,-3,-36,135634100,30375081,23519,19251
"491","Hechtel-Eksel",72038,7,72,5762,5620,11382,5705,5542,11247,57,78,135,123193852,30430551,24005,19794
"492","Houthalen-Helchteren",72039,7,72,14923,14798,29721,14811,14701,29512,112,97,209,322477561,81257495,23981,19347
"493","Meeuwen-Gruitrode",72040,7,72,6460,6070,12530,6468,6071,12539,-8,-1,-9,135039129,34742226,24683,20950
"494","Dilsen-Stokkem",72041,7,72,9438,9392,18830,9404,9317,18721,34,75,109,190729437,47866596,23524,19711
"495","Alken",73001,7,73,5585,5458,11043,5521,5440,10961,64,18,82,138535933,36728028,23816,18709
"496","Bilzen",73006,7,73,14804,14958,29762,14712,14886,29598,92,72,164,345041745,86940011,23447,18778
"497","Looz",73009,7,73,4971,5078,10049,4942,5080,10022,29,-2,27,118895796,32571339,24811,19536
"498","Heers",73022,7,73,3342,3324,6666,3331,3314,6645,11,10,21,73980063,17901412,22276,18362
"499","Herstappe",73028,7,73,45,41,86,45,42,87,0,-1,-1,1096964,287522,27424,18582
"500","Hoeselt",73032,7,73,4626,4607,9233,4650,4594,9244,-24,13,-11,105417088,27374613,23866,19138
"501","Kortessem",73040,7,73,4070,3992,8062,4081,3982,8063,-11,10,-1,97553430,27770886,25538,19448
"502","Lanaken",73042,7,73,12330,12051,24381,12344,12033,24377,-14,18,4,247367728,58366972,25119,19966
"503","Riemst",73066,7,73,7909,7865,15774,7923,7878,15801,-14,-13,-27,169546099,41187822,23347,18045
"504","Tongres",73083,7,73,14505,15067,29572,14471,15117,29588,34,-50,-16,344717761,91316538,24358,19419
"505","Wellen",73098,7,73,3416,3367,6783,3421,3339,6760,-5,28,23,78622767,20572088,24865,20282
"506","Maasmechelen",73107,7,73,17948,18162,36110,17885,18082,35967,63,80,143,353164219,83210371,21546,17773
"507","Fourons",73109,7,73,2156,2132,4288,2163,2110,4273,-7,22,15,39734450,9008846,23484,18946
"508","Arlon",81001,8,81,12809,13009,25818,12742,12913,25655,67,96,163,245884365,49078320,27771,21302
"509","Attert",81003,8,81,2235,2234,4469,2161,2186,4347,74,48,122,36730193,6269551,30033,22550
"510","Aubange",81004,8,81,7303,7616,14919,7326,7561,14887,-23,55,32,117282505,17082281,23518,19748
"511","Martelange",81013,8,81,754,753,1507,716,745,1461,38,8,46,12039686,1875940,22213,17425
"512","Messancy",81015,8,81,3555,3594,7149,3513,3585,7098,42,9,51,61154921,9213363,27156,21277
"513","Bastogne",82003,8,82,6952,7086,14038,6907,7072,13979,45,14,59,121697058,23550771,21358,16542
"514","Bertogne",82005,8,82,1433,1410,2843,1420,1391,2811,13,19,32,23165142,4209240,19582,15444
"515","Fauvillers",82009,8,82,959,960,1919,964,941,1905,-5,19,14,16392719,2669350,22033,15171
"516","Houffalize",82014,8,82,2338,2313,4651,2326,2308,4634,12,5,17,40545607,8551614,20655,16007
"517","Vielsalm",82032,8,82,3571,3719,7290,3568,3691,7259,3,28,31,70030055,15998755,22001,17801
"518","Vaux-sur-Sure",82036,8,82,2281,2235,4516,2250,2200,4450,31,35,66,35879240,6327787,20123,16074
"519","Gouvy",82037,8,82,2348,2342,4690,2339,2331,4670,9,11,20,41331667,8516550,21426,17024
"520","Sainte-Ode",82038,8,82,1107,1157,2264,1110,1151,2261,-3,6,3,21513502,4473604,20013,14832
"521","Durbuy",83012,8,83,5097,5216,10313,4997,5133,10130,100,83,183,101962239,21954409,18270,14463
"522","Erezee",83013,8,83,1451,1417,2868,1449,1417,2866,2,0,2,28562094,6526472,18991,14604
"523","Hotton",83028,8,83,2479,2569,5048,2452,2561,5013,27,8,35,47789105,10234098,18530,15044
"524","La Roche-en-Ardenne",83031,8,83,2100,2125,4225,2065,2118,4183,35,7,42,36625520,7514347,18573,15007
"525","Marche-en-Famenne",83034,8,83,8245,8521,16766,8173,8584,16757,72,-63,9,177995077,41719906,20387,15898
"526","Nassogne",83040,8,83,2450,2447,4897,2438,2474,4912,12,-27,-15,47291992,11451356,23575,19088
"527","Rendeux",83044,8,83,1101,1157,2258,1117,1144,2261,-16,13,-3,21242211,4281998,17172,13547
"528","Tenneville",83049,8,83,1255,1248,2503,1257,1265,2522,-2,-17,-19,25006951,5533983,21840,17618
"529","Manhay",83055,8,83,1561,1522,3083,1555,1502,3057,6,20,26,26993064,6375502,21769,17780
"530","Bertrix",84009,8,84,4020,4137,8157,3981,4107,8088,39,30,69,76534652,17461027,21681,17845
"531","Bouillon",84010,8,84,2658,2808,5466,2628,2745,5373,30,63,93,50354775,11085163,20345,16327
"532","Daverdisse",84016,8,84,650,689,1339,652,686,1338,-2,3,1,12109329,2503495,19722,16560
"533","Herbeumont",84029,8,84,775,772,1547,763,769,1532,12,3,15,13597926,2957934,22003,17677
"534","Leglise",84033,8,84,1981,1933,3914,1933,1909,3842,48,24,72,36659386,5653878,22742,18368
"535","Libin",84035,8,84,2228,2307,4535,2164,2295,4459,64,12,76,43081912,10053338,23262,18590
"536","Neufchateau",84043,8,84,3117,3242,6359,3097,3248,6345,20,-6,14,64550048,13732867,23802,18668
"537","Paliseul",84050,8,84,2435,2557,4992,2450,2549,4999,-15,8,-7,44503384,9957924,21202,17574
"538","Saint-Hubert",84059,8,84,2787,2932,5719,2768,2901,5669,19,31,50,58649794,13419130,22540,18241
"539","Tellin",84068,8,84,1120,1159,2279,1123,1154,2277,-3,5,2,22862691,5484795,23234,18505
"540","Wellin",84075,8,84,1437,1493,2930,1416,1483,2899,21,10,31,27402998,6271046,21047,16811
"541","Libramont-Chevigny",84077,8,84,4743,4942,9685,4689,4855,9544,54,87,141,96699097,22565076,24524,19341
"542","Chiny",85007,8,85,2488,2452,4940,2443,2421,4864,45,31,76,48734829,9118364,22625,18711
"543","Etalle",85009,8,85,2651,2567,5218,2603,2543,5146,48,24,72,47383912,9309352,27791,21987
"544","Florenville",85011,8,85,2693,2812,5505,2701,2820,5521,-8,-8,-16,52929466,10803858,22128,17196
"545","Meix-devant-Virton",85024,8,85,1343,1355,2698,1318,1357,2675,25,-2,23,25818109,5735428,23906,19607
"546","Musson",85026,8,85,1976,2121,4097,1969,2088,4057,7,33,40,33954583,5954244,24802,20907
"547","Saint-Leger",85034,8,85,1583,1600,3183,1594,1582,3176,-11,18,7,40294559,5148356,28257,21698
"548","Tintigny",85039,8,85,1751,1808,3559,1716,1801,3517,35,7,42,31858080,6128867,23546,19257
"549","Virton",85045,8,85,5365,5714,11079,5339,5733,11072,26,-19,7,112527086,23789830,24753,19978
"550","Habay",85046,8,85,3779,3801,7580,3749,3782,7531,30,19,49,88081675,12608782,28331,21714
"551","Rouvroy",85047,8,85,984,974,1958,986,967,1953,-2,7,5,20597057,3959969,22684,17837
"552","Anhee",91005,9,91,3380,3515,6895,3407,3548,6955,-27,-33,-60,70599313,18192497,22914,18176
"553","Beauraing",91013,9,91,3969,4309,8278,3906,4282,8188,63,27,90,76153073,17737361,21721,17727
"554","Bievre",91015,9,91,1550,1545,3095,1567,1579,3146,-17,-34,-51,26843271,5806555,19840,16383
"555","Ciney",91030,9,91,7107,7629,14736,7142,7648,14790,-35,-19,-54,153687435,42227773,23619,18636
"556","Dinant",91034,9,91,6138,6668,12806,6129,6638,12767,9,30,39,119475094,29976226,21978,17653
"557","Gedinne",91054,9,91,2108,2282,4390,2078,2252,4330,30,30,60,39888308,8725768,21138,17510
"558","Hamois",91059,9,91,3333,3318,6651,3300,3314,6614,33,4,37,67101755,17262784,24392,19937
"559","Havelange",91064,9,91,2311,2487,4798,2267,2480,4747,44,7,51,44607654,10729131,22337,17893
"560","Houyet",91072,9,91,2194,2262,4456,2180,2259,4439,14,3,17,42234138,10047080,22334,17985
"561","Onhaye",91103,9,91,1534,1557,3091,1521,1548,3069,13,9,22,29341689,7281639,23195,18942
"562","Rochefort",91114,9,91,5910,6043,11953,5919,6002,11921,-9,41,32,113688684,27388276,21939,18224
"563","Somme-Leuze",91120,9,91,2237,2258,4495,2170,2188,4358,67,70,137,40449140,9031816,23114,18006
"564","Yvoir",91141,9,91,4031,4245,8276,3949,4171,8120,82,74,156,92453295,24704952,25554,20111
"565","Hastiere",91142,9,91,2603,2575,5178,2567,2563,5130,36,12,48,44438592,9225159,19777,16179
"566","Vresse-sur-Semois",91143,9,91,1392,1443,2835,1396,1458,2854,-4,-15,-19,25155313,5476912,19745,16002
"567","Andenne",92003,9,92,11731,12463,24194,11570,12300,23870,161,163,324,232327041,57812263,22764,18289
"568","Assesse",92006,9,92,3088,3096,6184,3062,3084,6146,26,12,38,75983440,21265668,26992,21198
"569","Eghezee",92035,9,92,6902,7096,13998,6895,7071,13966,7,25,32,162141901,43870160,26152,20428
"570","Floreffe",92045,9,92,3617,3746,7363,3589,3704,7293,28,42,70,85983838,22846437,23746,18559
"571","Fosses-la-Ville",92048,9,92,4589,4575,9164,4570,4520,9090,19,55,74,97347773,24633536,22508,17270
"572","Gesves",92054,9,92,3046,3105,6151,2982,3038,6020,64,67,131,67868092,18930898,26285,20437
"573","Mettet",92087,9,92,5766,5983,11749,5781,5902,11683,-15,81,66,120459849,29563894,22127,17674
"574","Namur",92094,9,92,50945,55522,106467,50639,55203,105842,306,319,625,1227873808,341909524,25019,19255
"575","Ohey",92097,9,92,2066,2161,4227,2073,2141,4214,-7,20,13,40267782,10369085,24012,19772
"576","Profondeville",92101,9,92,5508,5724,11232,5432,5684,11116,76,40,116,128994824,36075968,26740,20834
"577","Sombreffe",92114,9,92,3670,3811,7481,3594,3796,7390,76,15,91,86048377,22258542,23351,17882
"578","Sambreville",92137,9,92,12905,14069,26974,12881,14070,26951,24,-1,23,292501143,66917576,20223,15733
"579","Fernelmont",92138,9,92,3269,3383,6652,3240,3355,6595,29,28,57,73030853,20480526,27200,20986
"580","Jemeppe-sur-Sambre",92140,9,92,8715,9202,17917,8672,9162,17834,43,40,83,186706676,48418902,25071,19929
"581","La Bruyere",92141,9,92,4052,4158,8210,3999,4095,8094,53,63,116,103802772,29341242,28455,21537
"582","Gembloux",92142,9,92,10669,10818,21487,10592,10749,21341,77,69,146,261823821,82976177,28241,21085
"583","Cerfontaine",93010,9,93,2220,2244,4464,2206,2241,4447,14,3,17,40950249,9696223,22016,17960
"584","Couvin",93014,9,93,6543,6859,13402,6508,6880,13388,35,-21,14,113320702,25537744,20683,17166
"585","Doische",93018,9,93,1380,1409,2789,1382,1410,2792,-2,-1,-3,25633880,5566409,20589,16925
"586","Florennes",93022,9,93,5227,5415,10642,5239,5458,10697,-12,-43,-55,106850530,25825806,22045,18189
"587","Philippeville",93056,9,93,4047,4141,8188,4011,4053,8064,36,88,124,79111701,18225894,21052,17279
"588","Walcourt",93088,9,93,8460,8919,17379,8383,8863,17246,77,56,133,190770807,48999715,23993,19168
"589","Viroinval",93090,9,93,2690,2956,5646,2718,2951,5669,-28,5,-23,48645440,10561690,19750,16394
In [28]:
df_belgium = pd.read_csv(path_target, index_col='Commune')
df_belgium = df_belgium.drop(['Unnamed: 0'],  axis=1)
df_belgium.head()
Out[28]:
INS Province Arrondiss Men04 Women04 Tot04 Men03 Women03 Tot03 Diffmen Diffwom DiffTOT TaxableIncome Totaltaxation averageincome medianincome
Commune
Aartselaar 11001 1 11 6971 7169 14140 7010 7243 14253 -39 -74 -113 242104077 74976114 33809 23901
Anvers 11002 1 11 223677 233642 457319 221767 232405 454172 1910 1237 3147 5416418842 1423715652 22072 17226
Boechout 11004 1 11 6027 5927 11954 6005 5942 11947 22 -15 7 167616996 50739035 29453 21613
Boom 11005 1 11 7640 8066 15706 7535 7952 15487 105 114 219 186075961 46636930 21907 17537
Borsbeek 11007 1 11 4948 5328 10276 4951 5322 10273 -3 6 3 143225590 40564374 26632 20739
In [29]:
dictionnaire = {1: 'Anv.', 2: 'Brab.', 3: 'Fl.occ.',
                4: 'Fl.or.', 5: 'Hainaut', 6: 'Liège',
                7: 'Limb.', 8: 'Lux.', 9: 'Namur'}
df_belgium = df_belgium.replace({'Province': dictionnaire})
df_belgium.head()
Out[29]:
INS Province Arrondiss Men04 Women04 Tot04 Men03 Women03 Tot03 Diffmen Diffwom DiffTOT TaxableIncome Totaltaxation averageincome medianincome
Commune
Aartselaar 11001 Anv. 11 6971 7169 14140 7010 7243 14253 -39 -74 -113 242104077 74976114 33809 23901
Anvers 11002 Anv. 11 223677 233642 457319 221767 232405 454172 1910 1237 3147 5416418842 1423715652 22072 17226
Boechout 11004 Anv. 11 6027 5927 11954 6005 5942 11947 22 -15 7 167616996 50739035 29453 21613
Boom 11005 Anv. 11 7640 8066 15706 7535 7952 15487 105 114 219 186075961 46636930 21907 17537
Borsbeek 11007 Anv. 11 4948 5328 10276 4951 5322 10273 -3 6 3 143225590 40564374 26632 20739

Barplots

Afficher la moyenne ou la médiane par région.

In [30]:
plt.figure()
fig_barplot = sns.barplot(x='Province', y='medianincome', data=df_belgium)

Échelle logarithmique sur l'axe des ordonnées

In [31]:
plt.figure()
fig_barplot = sns.barplot(x='Province', y='medianincome', data=df_belgium)
fig_barplot.set_yscale('log')

Boxplots

Visualiser la médiane, les quantiles 1/4 et 3/4, 1.5 inter-quartiles et outliers? voir e.g. : http://www.itse.be/statistique2010/co/233_Cours_boxplot.html

In [32]:
plt.figure()
fig_boxplot = sns.boxplot(x='Province', y='medianincome', data=df_belgium)
In [33]:
plt.figure()
sns.violinplot(x='Province', y='medianincome', data=df_belgium)
Out[33]:
<matplotlib.axes._subplots.AxesSubplot at 0x7fb46a19f828>

Scatter plots (french: graphique de dispersion)

Corrélations entre la moyenne et la median des revenus

In [34]:
fig2 = plt.figure(figsize=(6, 6))
plt.plot(df_belgium['medianincome'],
         df_belgium['averageincome'], '.', label='villes')
plt.plot(df_belgium['medianincome'],
         df_belgium['medianincome'], label='bissectrice')
plt.xlabel('Médiane impôt sur le revenu')
plt.ylabel('Moyenne impôt sur le revenu')
plt.xlim((0, 30000))  # Démarre l'axe des x a 0 et fini a 30000
plt.ylim((0, 50000))  # Démarre l'axe des y a 0 et fini a 30000
plt.legend()
Out[34]:
<matplotlib.legend.Legend at 0x7fb46a0e70b8>
In [35]:
if saving:
    fig2.savefig("belgianmunicipalities.pdf", bbox_inches='tight')

Remarque: la moyenne tire toujours la richesse d'une ville vers le haut par rapport à la médiane (un seul foyer riche ne change pas la médiane, mais peut potentiellement changer la moyenne drastiquement).

Scatterplot avancé

Cette fois on va afficher les points par couleur selon la région pour observer à une granularité plus précise

In [36]:
g = sns.lmplot(x='medianincome', y='averageincome',
           data=df_belgium, fit_reg=False, hue='Province')
g.fig.set_figheight(6)
g.fig.set_figwidth(7)
# plt.plot(df['medianincome'], df['medianincome'])
plt.xlabel('Médiane impôt sur le revenu')
plt.ylabel('Moyenne impôt sur le revenu')
plt.xlim((0, 30000))  # Démarre l'axe des x a 0 et fini a 30000
plt.ylim((0, 50000))  # Démarre l'axe des y a 0 et fini a 30000
Out[36]:
(0, 50000)
In [37]:
if saving:
    g.savefig("belgianmunicipalities_clean.pdf", bbox_inches='tight')

Fonction de densité

kde: est l'abbréviation de "Kernel Density Estimation"

In [38]:
plt.figure()
plt.xlim(12000, 25000)
cdf_plot=sns.kdeplot(df_belgium['medianincome'], cumulative=False)

Fonction de répartition (version lisse)

In [39]:
plt.figure()
plt.xlim(12000, 25000)
cdf_plot=sns.kdeplot(df_belgium['medianincome'], cumulative=True)

Fonction de répartition (version constante par morceaux)

In [40]:
n_counts, bin_edges = np.histogram(
    df_belgium['medianincome'], bins=df_belgium['medianincome'].count())
cdf = np.cumsum(n_counts)  # cdf not normalized, despite above
scale = 1.0 / cdf[-1]
ncdf = scale * cdf
fig_cdf = plt.figure(figsize=(7, 5))
plt.plot(np.sort(df_belgium['medianincome']), ncdf)
plt.xlim(12000, 25000)
plt.title('Fonction de répartition empirique:\n revenus médians belges')
Out[40]:
Text(0.5, 1.0, 'Fonction de répartition empirique:\n revenus médians belges')
In [41]:
if saving:
    fig_cdf.savefig("belgianmunicipalities_median_cdf.pdf", bbox_inches='tight')
In [42]:
df_belgium_1 = df_belgium[df_belgium["Province"] == "Anv."]
n_counts, bin_edges = np.histogram(
    df_belgium_1['medianincome'], bins=df_belgium_1['medianincome'].count())
cdf = np.cumsum(n_counts)  # cdf not normalized, despite above
scale = 1.0 / cdf[-1]
ncdf = scale * cdf
fig_cdf_anv = plt.figure(figsize=(7, 5))
plt.plot(np.sort(df_belgium_1['medianincome']), ncdf)
plt.title(
    "Fonction de répartition empirique: \n revenus médians de la province d'Anvers")
plt.xlim(12000, 25000)
Out[42]:
(12000, 25000)
In [43]:
if saving:
    fig_cdf_anv.savefig("belgianmunicipalities_anvers_cdf.pdf", bbox_inches='tight')

Apparté: Quantiles et autres statistiques élémentaires

Quantiles

In [44]:
np.percentile(df_belgium['averageincome'],
              [100 / 4, 100 / 2, 100 * 3 / 4])
Out[44]:
array([22684., 24753., 26933.])
In [45]:
np.percentile(df_belgium['medianincome'],
              [100 / 4, 100 / 2, 3 * 100 / 4])
Out[45]:
array([18137., 19636., 20826.])
In [46]:
quantiles =  np.percentile(df_belgium['medianincome'], [25, 75])
quantiles[1] - quantiles[0]
Out[46]:
2689.0
In [47]:
quantiles =  np.percentile(df_belgium['averageincome'], [25, 75])
quantiles[1] - quantiles[0]
Out[47]:
4249.0

Dispersion

In [48]:
np.var(df_belgium['medianincome'])
Out[48]:
4014584.7996575553
In [49]:
np.std(df_belgium['medianincome'])
Out[49]:
2003.6428822665869