Cette partie présente les outils pour visualiser des données avec Python, qu’il s’agisse de graphiques figés (matplotlib, seaborn, geoplot…) ou de visualisation réactives (plotly, folium, etc.)

Author

Lino Galiana

Published

July 16, 2023

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 :

Figure 1 originale

Figure 1 modifiée

Figure 1: Décomposition du revenu disponible d’une personne seule en juillet 2022, selon son salaire brut

Figure 2 originale

Figure 2 modifiée

Figure 2: Evolution du revenu disponible d’une personne seule entre juillet 2017 et juillet 2022, selon son niveau de salaire brut

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 et Seaborn mais il en existe d’autres, comme Plotnine.
  • 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 via Python. Nous évoquerons principalement Plotly et Folium 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 et Seaborn
    • Les graphiques réactifs s’appuieront sur Plotly
  • Dans un deuxième temps, nous présenterons les représentations cartographiques:
    • Les cartes fixes avec Geopandas ou Geoplot
    • Les cartes réactives avec Folium (adaptation Python de la librairie Leaflet.js)

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 :

Et quelques références supplémentaires, citées dans cette introduction :

Bertin, Jacques. 1967. Sémiologie Graphique. Paris: Mouton/Gauthier-Villars.
Dale, Kyran. 2022. Data Visualization with Python and JavaScript. " O’Reilly Media, Inc.".
Insee. 2018. “Guide de Sémiologie Cartographique.”
Palsky, Gilles. 2017. “La sémiologie Graphique de Jacques Bertin a Cinquante Ans.” Visions Carto (En Ligne).
Wilke, Claus O. 2019. Fundamentals of Data Visualization: A Primer on Making Informative and Compelling Figures. O’Reilly Media.
Back to top

Footnotes

  1. Pour être honnête, Python est sur ce point un peu moins agréable que R qui bénéficie de l’incontournable librairie ggplot2.

    N’étant pas construite sur la grammaire des graphiques, la principe librairie de graphiques en Python qu’est Matplotlib est plus fastidieuse à utiliser que ggplot2.

    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 que ggplot2.

    La librairie plotnine vise à proposer une implémentation similaire à ggplot pour les utilisateurs de Python. Son développement est à suivre.↩︎

  2. 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 librairie Plot pourrait devenir un nouveau standard dans les prochaines années, sorte d’intermédiaire entre ggplot et d3.↩︎

Citation

BibTeX 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}
}
For attribution, please cite this work as:
Galiana, Lino. 2023. Python Pour La Data Science. https://doi.org/10.5281/zenodo.8229676.