La visualisation de données est l’art et la science de représenter visuellement des informations complexes et abstraites à l’aide d’éléments visuels. Son objectif principal est de synthétiser l’information présente dans un ensemble de données afin de faciliter la compréhension des enjeux de celle-ci pour une analyse ultérieure. La visualisation de données permet, entre autres, de mettre en évidence des tendances, des corrélations ou des anomalies qui pourraient être difficiles voire impossibles à saisir simplement en examinant des données brutes, ces dernières nécessitant une certaine mise en contexte pour porter du sens.
La visualisation de données joue un rôle crucial dans le processus d’analyse de données en fournissant des moyens visuels pour explorer, interpréter et communiquer des informations. Elle facilite la communication entre experts de la données, décideurs et grand public, en permettant de raconter des histoires basées sur les données de manière plus convaincante et engageante.
La visualisation de données a une place à part dans l’ensemble des techniques de la data science. Elle intervient à tous les stades du processus de production de la donnée, de l’amont (analyse exploratoire) à l’aval (restitution à des publics multiples) et peut, si elle est bien construite, permettre de saisir de manière intuitive la structure des données ou les enjeux de son analyse.
Art de la synthèse, la visualisation de données
est également l’art de raconter une histoire et
peut même, lorsqu’elle est bien construite, prétendre
au rang de production artistique.
La dataviz est un métier en soi dont on trouve de
plus en plus de praticiens dans les titres de presse
ou dans des entreprises
spécialisées (Datawrapper
par exemple).
Sans prétendre construire des visualisations aussi riches que celles des spécialistes, tout data scientist se doit d’être en mesure de pouvoir produire rapidement quelques visualisations permettant de synthétiser les jeux de données à sa disposition. Une visualisation claire et lisible tout en restant simple peut être meilleure qu’un discours pour faire passer un message. Je recommande notamment ce post de blog d’Eric Mauvière qui revient sur deux graphiques dans une publication récente du Service statistique du Ministère de la Santé (DREES) et montre la manière dont on peut améliorer le message transmis par des figures :
De même qu’un discours, une visualisation est une communication pour laquelle un locuteur - la personne construisant la visualisation - cherche à transmettre une information à un récepteur - éventuellement la même personne que le locuteur puisqu’une visualisation peut être construite pour soi-même dans une analyse exploratoire. Il n’est donc pas surprenant qu’à l’époque où la sémiologie occupait une part importante dans les débats intellectuels, notamment autour de la figure de Roland Barthes, le concept de sémiologie graphique ait émergé autour de la personne de Jacques Bertin (Bertin 1967; Palsky 2017). Cette approche permet de réfléchir sur la pertinence des techniques mises en oeuvre pour transmettre un message graphique et de nombreuses visualisations, si elles suivaient quelques-unes de ces règles, pourraient être améliorées à peu de frais. L’Insee a publié, il y a quelques années, un guide de sémiologie graphique très utile qu’il est intéressant de consulter de temps en temps (Insee 2018).
Pour revenir à notre cours,
nous présenterons dans cette partie quelques librairies
et visualisations basiques en Python
permettant de
partir sur de bonnes bases. Les ressources pour
approfondir et progresser dans l’art de la visualisation
ne manquent pas, comme cet ouvrage (Wilke 2019).
L’écosystème Python
L’écosystème Python
pour la valorisation de données est très riche et
très éclaté.
Il est
possible de consacrer des livres entiers à celui-ci (Dale 2022).
Python
propose
de nombreuses librairies pour produire de manière rapide et relativement
simple des visualisations de données1.
Les librairies graphiques se distinguent principalement en deux familles:
- Les librairies de représentations figées. Celles-ci ont plutôt vocation à être intégrées
dans des publications figées type PDF ou documents texte. Nous présenterons
principalement
Matplotlib
etSeaborn
mais il en existe d’autres, commePlotnine
. - Les librairies de représentations dynamiques. Celles-ci sont adaptées à des représentations
web et offrent la possibilité aux lecteurs d’agir sur la représentation graphique affichée.
Les librairies qui proposent ces fonctionnalités reposent généralement sur
JavaScript
, l’écosystème du développement web, pour lequel elles offrent un point d’entrée viaPython
. Nous évoquerons principalementPlotly
etFolium
dans cette famille mais il existe de nombreux autres frameworks dans ce domaine2.
Dans le domaine de la visualisation, ce cours adopte le parti pris d’explorer quelques librairies centrales à partir d’un nombre restreint d’exemples en répliquant des graphiques qu’on peut trouver sur le site d’open data de la mairie de Paris. La meilleure école pour la visualisation est la pratique sur des jeux de données.
Les applications de visualisation
Cette partie du cours se focalise sur des représentations synthétiques simples. Elle n’évoque pas (encore ?) la construction d’applications de visualisation de données où un ensemble de graphiques se mettent à jour de manière synchrone en fonction d’actions d’utilisateurs.
Ceci dépasse en effet le cadre d’un cours d’introduction car cela implique
de maîtriser des concepts plus complexes comme l’interaction entre une page
web et un serveur (local). Néanmoins, j’ai déjà construit
avec Romain Avouac
un tutoriel 101 très détaillé sur Streamlit
(permettant de créer une application type Yuka
)
pour une formation à l’Insee.
Résumé de cette partie
Cette partie est divisée en deux et chaque chapitre est lui-même dual, selon qu’on s’intéresse aux représentations figées ou dynamiques :
- Dans un premier temps, nous évoquerons des
représentations graphiques standards (histogrammes, diagrammes
en barre…) pour synthétiser certaines informations quantitatives ;
- Les représentations fixes reposeront sur
Pandas
,Matplotlib
etSeaborn
- Les graphiques réactifs s’appuieront sur
Plotly
- Les représentations fixes reposeront sur
- Dans un deuxième temps, nous présenterons les représentations
cartographiques:
- Les cartes fixes avec
Geopandas
ouGeoplot
- Les cartes réactives avec
Folium
(adaptationPython
de la librairieLeaflet.js
)
- Les cartes fixes avec
Références utiles
La visualisation de données est un art qui s’apprend, au début, principalement par la pratique. Néanmoins, il n’est pas évident de produire des visualisations lisibles et ergonomiques et il est utile de s’inspirer d’exemples de spécialistes (les grands titres de presse disposent d’excellentes visualisations).
Voici quelques ressources utiles sur ces sujets :
Datawrapper
propose un excellent blog sur les bonnes pratiques de visualisation, notamment avec les articles de Lisa Charlotte Muth. Je recommande notamment cet article sur les couleurs ou celui-ci sur les textes ;- Le blog d’Eric Mauvière ;
- “La Sémiologie graphique de Jacques Bertin a cinquante ans” ;
- Les visualisations trending sur
Observable
; - Le New York Times (les rois de la dataviz) revient tous les ans sur les meilleures visualisations de l’année dans la veine du data scrollytelling. Voir par exemple la rétrospective de l’année 2022.
Et quelques références supplémentaires, citées dans cette introduction :
Footnotes
Pour être honnête,
Python
est sur ce point un peu moins agréable queR
qui bénéficie de l’incontournable librairieggplot2
.N’étant pas construite sur la grammaire des graphiques, la principe librairie de graphiques en
Python
qu’estMatplotlib
est plus fastidieuse à utiliser queggplot2
.seaborn
, que nous présenterons, facilite un peu le travail de représentation graphique mais, là encore, il est difficile de faire plus malléable et universel queggplot2
.La librairie
plotnine
vise à proposer une implémentation similaire àggplot
pour les utilisateurs dePython
. Son développement est à suivre.↩︎A cet égard, je recommande vivement de suivre l’actualité de la dataviz sur la plateforme
Observable
qui tend à rapprocher les communautés des spécialistes de la dataviz et des analystes de données. La librairiePlot
pourrait devenir un nouveau standard dans les prochaines années, sorte d’intermédiaire entreggplot
etd3
.↩︎
Citation
@book{galiana2023,
author = {Galiana, Lino},
title = {Python Pour La Data Science},
date = {2023},
url = {https://pythonds.linogaliana.fr/},
doi = {10.5281/zenodo.8229676},
langid = {en}
}