Card image

Les prochaines élections en Big Data


Olivier Banville
vendredi, 15 juin 2018


Le lundi 1er Octobre prochain auront lieu les 42e élections générales du Québec. Jusque-là, les militants vont travailler jour et nuit afin de préparer le terrain pour leur victoire, les sondeurs vont nous bombarder de chiffres et les analystes nous mitrailler de prédictions. Comme je déteste la vie, je me suis demandé si je ne pouvais pas me lancer à pleine tête dans ce brouhaha en apportant mes propres idées, mes propres techniques, afin de tenter, comme beaucoup avant moi, l’impossible: faire des prédictions justes et réalistes. Sauf qu’analyser des sondages, tout le monde fait ça. Il faut être plus original.

J’ai eu l’idée en voyant Influence Communication se faire ramasser par d’ex-employés dans les médias: techniques louches, coefficients douteux. Mais moi, ce que j’ai aimé, c’est l’idée d’accumuler et d’analyser les articles de nouvelles afin de déterminer non seulement la popularité de certaines idées, de certains candidats, mais aussi de noter les grandes lignes de l’action médiatique avant et pendant une campagne.

Je vais utiliser le Fût Politique comme plateforme pour ce projet, entre autre parce que c’est le meilleur podcast au monde (si on ignore le malheureux silence radio qui nous frappe depuis quelques moi), mais aussi parce que le site web que j’ai construit de toute pièce est parfaitement adapté pour publier des cartes dynamiques et des graphiques de données.

Je vois un peu ce projet comme du big data open source. En effet, j’essaierai de rendre disponible le plus de données possibles, mais j’écouterai aussi les idées et suggestions afin de construire des modèles d’analyse plus précis, ou du moins plus intéressants.

Attention: il y aura des discussions peut-être plus techniques, mais j’essaierai d’être le plus descriptif possible quand le contenu portera sur du code ou des algorithmes.

Je propose donc de m’attaquer à cet éléphant par étapes. Il faudra d’abord créer une base de données contenant les circonscriptions, candidats et partis afin de savoir quoi chercher. Ensuite, il faudra traverser les sites web de nouvelles et comprendre leur contenu en cherchant de quoi, ou qui, on parle. Ça sonne difficile, mais la plupart des médias québécois ont des fils RSS qui nous simplifieront la vie. Finalement, il faudra trouver d’élégantes façons de présenter ces données sous forme de tableaux et cartes, tout en réfléchissant sur les meilleures méthodes d’analyses.

Un gros projet, vous dites?

La première étape

Si mon objectif est d’accumuler les articles de nouvelle politique et de décortiquer son contenu, il faut d’abord savoir quoi chercher. Des partis, des candidats, des régions, des sujets; on parle de tout, dans une élection.

 

Il faut donc construire une base de données qui contiendrait ou permettrait de contenir la totalité de ce qu’on recherche ou accumule. C’est aussi une belle occasion d’apprendre le nom de toutes les circonscriptions, quelque chose que je remets sans cesse à plus tard.

Pour les plus techniques:
On crée une BD sqlite avec python et peewee (parce que je n’ai pas envie de faire de SQL) puis on la remplie, si possible, avec requests et lxml ou selenium.
Pour les semi-techniques:
On utilise du SQL pour poser des questions à une base de données, mais ce langage est un peu archaïque selon moi. Avec la librairie peewee, on peut coder ces demandes directement en python, qui selon moi est bien plus efficace.

Il y a 17 régions administratives au Québec. J’ai appris ça au secondaire et j’avais oublié le nombre. Le site web d’élection Québec nous permet de trouver les circonscriptions pour chaque région, mais j’étais un peu lâche. J’ai donc tenté d’automatiquement récupérer les données à partir de wikipédia plutôt qu’entrer ces données manuellement.

(╯°□°)╯︵ ┻━┻

Je vous annonce que la page wikipédia des circonscriptions par région administrative n’a pas une structure facilement utilisable pour coder un “scraper” et récupérer les données. Après deux heures, j’ai décidé d’entrer les circonscriptions à la main: ce qui prendra une heure. Vient le temps de vérifier la base de données. Toutes les 133 circonscriptions sont présentes!

(╯°□°)╯︵ ┻━┻

Oui, je sais. Il y a 125 circonscriptions provinciales au Québec. Johnson, Mégantic et d’autres sont en double! Mais pourquoi? Aujourd’hui, j’ai appris que les régions administratives ne sont pas délimitées par les circonscriptions, comme j’ai toujours cru que c’était le cas. Pire, une circonscription ne semble pas “assignée” à une région en particulier, même si elle en couvre plusieurs. J’ai malheureusement codé ma base de données en supposant une seule région par circonscription, alors, pour l’instant, il est temps de jouer à Dieu, ou du moins, au directeur général des élections: en regardant les cartes électorales, j’ai sélectionné la région qui englobe la majorité de chaque circonscription en double. Maintenant, chaque circonscription à une seule région.

Pour les plus techniques:
La structure de la base de données est la suivante:
Région: nom(caractères), clé (caractères), numéro
Circonscription: nom(caractères), clé (caractères), numéro, région, nombre d’électeurs(à zéro pour l’instant)
Pensez-vous qu’il manque des données importantes ou intéressantes? Peut-être avez vous des idées de structure pour les partis politiques et les candidats?

Voilà pour un premier article. Aujourd’hui, on a créé une base de données contenant les régions administratives et les circonscriptions électorales. La prochaine étape sera d’ajouter les partis politiques et les candidats. Ensuite, on construira le système qui fouillera les internets pour des nouvelles politiques et comparera les termes avec les noms des partis ou candidats. Si vous avez des idées ou des questions, passez faire un tour sur la page facebook du Fût Politique!