Vous aurez peut-être remarqué le mot-dièse #python sur le bord de ce blog. Comme il n'est pas uniquement là pour faire joli, il était grand temps de rédiger un petit billet pour répondre à cette simple question : pourquoi Python ?
Parce qu'il faut éviter l'éparpillement...
Ca fait un peu plus de cinq ans que je m'exerce au journalisme de données, de manière plus ou moins soutenue. Durant ces cinq ans, j'ai eu l'occasion de muscler diverses compétences hors journalisme classique, parmi lesquelles :
- la maîtrise de différents langages informatiques, la base étant le duo HTML/CSS, mais plus profondément le Javascript avec la librairie D3
- l'utilisation systématique de logiciels tableurs comme LibreOffice Calc ou Microsoft Excel, qui suppose par ricochet la connaissance des nombreuses formules permettant de manipuler des données
- des lectures diverses et variées, par exemple sur les statistiques ou la géographie. Certains langages associés, comme le projet R, peuvent aussi s'inviter à la fête
Et plus on avance, plus le risque de s'éparpiller devient grand. C'est d'autant plus vrai que le journalisme de données implique de ne pas tout maîtriser à la perfection, tout en évitant de s'enfermer dans un domaine de compétences précis. Aïe...
Mais voilà que débarque le langage de programmation Python, avec des promesses proches d'une épiphanie. Oui oui, rien que ça !
...et ce langage tend vers l'exhaustivité
Un des principaux intérêts de Python est qu'il permet d'envisager n'importe quel projet informatique. On peut aussi bien créer un site web avec Django que programmer un jeu avec Pygame.
Côté journalisme de données, on peut imaginer un projet mené de A à Z en Python avec par exemple :
- une collecte de données via Scrapy
- une analyse et un reformatage de ces données en utilisant la librairie Pandas
- la création d'une ou plusieurs visualisations grâce à Bokeh ou matplotlib
Des outils très divers invoqués grâce à un seul et même langage ! Et il y a évidemment des choses plus pointues, comme ce florilège de librairies géographiques.
Bref, ce n'est pas pour rien que le Python est plébiscité par les utilisateurs du Raspberry Pi, ce nano-ordinateur aux 1 001 usages.
Mais ne brûlons pas les étapes, nous aurons l'occasion de reparler framboises dans un prochain article :-) !
Parce que c'est simple à apprendre (et à comprendre)
Evidemment, on pourrait trouver des librairies Javascript équivalentes pour les usages décrits précédemment (encore que pour l'analyse des données, j'ai quelques doutes).
Mais là arrive un très gros avantage du Python : c'est ultra simple. En commençant à me pencher dessus, j'ai regretté de ne pas avoir appris le code par ce langage.
Cette simplicité est en partie liée à la syntaxe du langage, épurée au possible. Pour le mesurer, il suffit de reprendre ce comparatif proposé sur la page Wikipedia du Python.
A ma gauche, une fonction factorielle définie en C :
int factorielle(int n) {
if (n < 2) {
return 1;
} else {
return n * factorielle(n - 1);
}
}
A ma droite, la même en Python :
def factorielle(n):
if n < 2:
return 1
else:
return n * factorielle(n - 1)
Aucun point-virgule, aucune accolade, et une obligation stricte d'indentation sinon la fonction plante. Difficile de faire plus propre !
Et même si je n'ai pas encore trouvé le temps de m'y consacrer autant que ce que je voulais, mon petit bagage en Python me permet de faire de plus en plus de choses.
Par exemple, ce blog. Je ne voulais pas me farder le paramétrage d'un Wordpress, ni exporter mes articles sur un service propriétaire comme Medium.
Je suis donc tombé sur Pelican, un module Python en licence GNU permettant de générer un blog juste en :
- paramétrant des pages "modèles" pour l'ensemble du site (HTML et CSS en force)
- écrire des fichiers Markdown disposés dans plusieurs dossiers
- utiliser une ligne de Python pour transformer les fichiers md en pages HTML, avec arborescence et tout le toutim
De l'Open Source, un espace à moi, pas d'usine à gaz à gérer pour mon contenu... En clair : le rêve !
Parce que ça ne peut que s'améliorer
Un dernier mot sur les visualisations de données. En comparaison des rendus de D3js, les librairies Python ne sont pas encore des rivales de taille.
Ceci dit, les choses ne vont qu'en s'améliorant, j'en veux pour preuve cet échantillon de code qui permet de générer une carte choroplèthe interactive en... moins de 50 lignes de code !
C'est un pari strictement perso, mais j'ai l'intuition que le Python va devenir de plus en plus courant en journalisme de données pour ces quelques raisons !