Confus sur quel outil de visualisation utiliser ? J’ai décomposé pour vous les avantages et les inconvénients de chaque bibliothèque
Photo d’oxana v sur Unsplash
Ce guide a été mis à jour avec des exemples plus approfondis. Vous pouvez trouver la dernière version du blog ici.
Si vous débutez avec la visualisation Python, vous pouvez être submergé par le nombre de bibliothèques et d’exemples :
Matplotlib
Seaborn
Plotly
Bokeh
Altair
Folium
Si vous avez un DataFrame qui attend d’être visualisé, laquelle choisir ? Certaines bibliothèques pourraient être meilleures dans des cas spécifiques que les autres. Cet article montrera les avantages et les inconvénients de chacune. À la fin de cet article, vous devriez être en mesure de distinguer les différentes caractéristiques de chaque bibliothèque et avoir plus de facilité à choisir la bibliothèque optimale.
Nous le ferons en utilisant un jeu de données échantillon et en l’explorant à l’aide de chaque bibliothèque, en nous concentrant sur quelques attributs spécifiques :
Interactivité
Voulez-vous que votre visualisation soit interactive ?
Certaines bibliothèques, comme Matplotlib, rendent les visualisations sous forme d’images ; elles sont donc bonnes pour expliquer des concepts (dans un article, un diaporama ou une présentation).
D’autre part, des bibliothèques comme Altair, Bokeh et Plotly vous permettent de créer des graphiques interactifs dans lesquels vos utilisateurs peuvent plonger et explorer eux-mêmes
Syntaxe et flexibilité
Comment la syntaxe de chaque bibliothèque diffère-t-elle ? Les bibliothèques de plus bas niveau telles que Matplotlib vous permettent de faire tout ce que vous pourriez concevoir – mais au prix d’une API plus complexe. Certaines bibliothèques telles qu’Altair sont très déclaratives, ce qui facilite la mise en correspondance avec vos données.
Type de données et de visualisation
Travaillez-vous avec un cas d’utilisation spécialisé, tel qu’un tracé géographique, avec de grandes données, ou en utilisant un type de tracé qui n’est pris en charge que par une certaine bibliothèque ?
Données
Pour faciliter la comparaison, je vais utiliser les données réelles que je gratte sur Github dans cet article :
Je vais intégrer les visualisations de chaque bibliothèque en utilisant Datapane, qui est un framework et une API Python pour la publication et le partage de rapports Python. Si vous voulez voir plus d’exemples du monde réel, consultez les rapports contribués par les utilisateurs dans la galerie Datapane.
Pour suivre l’article, vous pouvez soit télécharger le fichier csv à partir d’ici, soit obtenir les données directes à partir du Blob de Datapane.
import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()
N’oubliez pas de vous connecter à Datapane avec votre jeton au préalable si vous voulez utiliser le Blob. Cela devrait prendre moins d’une minute
Matplotlib
Matplotlib est probablement la bibliothèque Python la plus courante pour visualiser des données. Toute personne qui s’intéresse à la science des données a probablement utilisé Matplotlib au moins une fois.
Pros
Facile de voir la propriété des données
Lorsqu’on analyse des données, avoir un aperçu rapide de la distribution peut être idéal.
Par exemple, si je veux avoir un aperçu rapide de la distribution des 100 utilisateurs ayant le plus de followers, utiliser Matplotlib est généralement suffisant.
Même si l’axe des x de Matplotlib n’a pas l’air bon, nous avons une meilleure compréhension de la distribution des données en regardant le graphique.
2. Peut tracer n’importe quoi
Matplotlib est très polyvalent, ce qui signifie qu’il peut tracer tout type de graphique que vous pourriez imaginer. Le site web de Matplotlib contient une documentation très complète et divers graphiques dans la galerie, ce qui permet de trouver facilement des tutoriels pour n’importe quel graphique fou auquel vous pouvez penser.
Un texte comme celui-ci :
Cons
Matplotlib peut tracer n’importe quoi, mais il peut être complexe de tracer des graphes non basiques ou d’ajuster les graphes pour qu’ils soient beaux.
Même si le tracé est assez bon pour visualiser la distribution, si vous voulez représenter vos données à d’autres, vous devrez fixer l’axe des x, l’axe des y, ce qui demande beaucoup d’efforts. C’est parce que Matplotlib a une interface extrêmement bas niveau.
Takeaway : Matplotlib peut tracer n’importe quoi mais les tracés complexes peuvent nécessiter beaucoup plus de codes que d’autres bibliothèques
Seaborn est une bibliothèque de visualisation de données Python basée sur Matplotlib. Elle fournit un wrapper de plus haut niveau sur la bibliothèque qui la rend plus facile à utiliser.
Pros
Moins de code
Il fournit une interface de plus haut niveau pour des tracés similaires. En d’autres termes, seaborn fournit généralement des tracés similaires à ceux de matplotlib, mais avec moins de code et une conception plus agréable.
Nous utilisons les mêmes données que précédemment pour dessiner une carte thermique similaire du graphique.
Nous obtenons une meilleure carte thermique sans définir l’étiquette x et y !
Rendre plus jolis les tracés utilisés couramment
Beaucoup de gens optent pour seaborn lorsqu’il s’agit de tracés populaires tels que le bar plot, le box plot, le count plot, les histogrammes, etc… non seulement parce qu’ils pourraient être créés avec moins de code mais aussi parce qu’ils sont beaucoup plus jolis. Comme nous pouvons le voir dans notre exemple ci-dessus, les couleurs ont également un meilleur aspect que celui par défaut de Matplotlib.
Cons
Seaborn est plus contraint et n’a pas une collection aussi large que matplotlib
Takeaway : Seaborn est une version de plus haut niveau de Matplotlib. Même si elle n’a pas une collection aussi large que Matplotlib, seaborn rend les graphiques populaires tels que le diagramme à barres, le diagramme en boîte, la carte thermique, etc… jolis en moins de code.
Plotly
La bibliothèque de graphiques Python de Plotly facilite la création de graphiques interactifs de qualité publication. Elle peut également créer des graphiques similaires à ceux de Matplotlib et seaborn, tels que des diagrammes linéaires, des diagrammes de dispersion, des diagrammes de surface, des diagrammes à barres, etc.
Pros
Like R
Si vous êtes un fan des graphiques dans R et que ses fonctionnalités vous manquent lorsque vous passez à Python, Plotly vous donne les mêmes graphiques de qualité en utilisant Python !
Mon préféré est Plotly Express parce qu’il rend vraiment facile et il est encore plus rapide de créer de grands tracés à partir d’une seule ligne de Python.
Facile de créer des tracés interactifs
Plotly facilite également la création de tracés interactifs. Les tracés interactifs ne sont pas seulement jolis, mais ils permettent également aux spectateurs de regarder plus facilement chaque point de données.
Souvenez-vous du tracé en barres que nous avons précédemment avec matplotlib ? Voyons ce que cela donne avec Plotly
Avec environ les mêmes lignes de code, nous produisons un tracé interactif que nous pourrions passer votre souris sur chaque barre pour voir quel utilisateur et le nombre de followers la barre représente. Cela signifie que le consommateur de votre visualisation peut l’explorer lui-même.
3. Des tracés complexes rendus faciles
Avec Plotly, certains tracés qui sont habituellement difficiles à créer peuvent être créés facilement.
Par exemple, si nous voulions créer une carte pour visualiser les emplacements des utilisateurs de Github, nous pouvons trouver leurs latitudes et longitudes comme indiqué ici, et ensuite utiliser ces données pour repérer les emplacements des utilisateurs sur la carte comme ceci
Avec quelques lignes de codes, les emplacements de tous les utilisateurs sont magnifiquement représentés sur une carte. La couleur des bulles représente le nombre de fourchettes et la taille représente le nombre total d’étoiles
Takeaway : Plotly est formidable pour créer des graphiques interactifs et de qualité publication avec peu de lignes de code.
Altair
Altair est une bibliothèque déclarative de visualisation statistique pour Python basée sur vega-lite, ce qui la rend idéale pour les parcelles qui nécessitent beaucoup de transformation statistique.
Pros
1. Grammaire de visualisation simple
La grammaire utilisée pour créer la visualisation est facile à comprendre. Il suffit de mentionner les liens entre les colonnes de données vers les canaux d’encodage et le reste du tracé est géré automatiquement. Cela semble abstrait, mais c’est une grande affaire lorsque vous travaillez avec des données, et cela rend la visualisation des informations vraiment rapide et intuitive.
Par exemple, avec les données du titanic ci-dessus, nous aimerions compter le nombre de personnes dans chaque classe, tout ce dont nous avons besoin est d’utiliser count()
dans l’axe des ordonnées
2. Facile de transformer les données
Altair rend également très facile de transformer les données tout en créant le graphique
Par exemple, si nous aimerions trouver l’âge moyen de chaque sexe dans le titanic, au lieu de faire la transformation à l’avance comme Plotly, nous pourrions effectuer la transformation dans le code pour créer le graphique.
Nous pourrions également nous assurer que la classe est une donnée nominale (donnée catégorielle sans ordre). en utilisant :N
ou s’assurer que la moyenne_âge est une donnée quantitative (mesures de valeurs telles que des nombres) en utilisant :Q
Voir une liste complète des transformations de données ici
3. Facilité de liaison des tracés
Altair vous permet également de faire des liaisons impressionnantes entre les tracés, comme l’utilisation d’une sélection d’intervalle pour filtrer le contenu d’un histogramme joint.
Par exemple, si nous voulons visualiser le nombre de personnes dans chaque classe dans l’intervalle que nous sélectionnons un graphique à points entre l’âge et le tarif, nous pourrions faire quelque chose comme ceci.
En faisant glisser notre souris pour sélectionner l’intervalle dans le diagramme de dispersion, nous pourrions voir le changement dans le graphique à barres ci-dessous. Lorsqu’il est combiné avec les transformations et les calculs de tout à l’heure, cela signifie que vous pouvez créer des graphiques extrêmement interactifs qui effectuent des calculs à la volée – sans même avoir besoin d’un serveur Python en cours d’exécution !
Cons
À moins que vous ne spécifiiez un style personnalisé, les graphiques simples tels que le diagramme à barres n’ont pas le même style que seaborn ou Plotly. Altair ne recommande pas non plus les ensembles de données avec plus de 5000 échantillons et recommande plutôt d’agréger vos données avant la visualisation.
Takeaway : Altair est idéal pour les graphiques sophistiqués pour montrer des statistiques. Altair ne peut pas gérer les données supérieures à 5000 échantillons et certains graphiques simples ne sont pas aussi stylisés par rapport à Plotly ou Seaborn.
Bokeh
Bokeh est une bibliothèque de visualisation interactive flexible qui cible les navigateurs web pour la représentation.
Pros
Version interactive de Matplotlib
Si nous allons faire un classement parmi les bibliothèques de visualisation interactive ci-dessus, Bokeh sera probablement classé premier en ce qui concerne la similitude avec Matplotlib.
Matplotlib peut créer n’importe quel tracé car c’est une bibliothèque de visualisation de bas niveau. Bokeh peut être à la fois utilisé comme une interface de haut niveau ou de bas niveau ; ainsi, il peut créer de nombreux tracés sophistiqués que Matplotlib crée mais avec moins de lignes de code et une résolution plus élevée.
Par exemple , le tracé en cercle de Matplotlib
Pourrait également être créé… avec une meilleure résolution et plus d’utilité en utilisant Bokeh
2. Lien entre les parcelles
Bokeh rend également très facile le lien entre les parcelles. La modification appliquée dans un plot sera appliquée à un autre plot avec une variable similaire.
Par exemple, si nous créons 3 graphes côte à côte et que nous voulons observer leur relation, nous pourrions utiliser le brossage lié
ColumnDataSource
permet de partager les données entre les graphes. Ainsi, lorsque nous appliquons le changement à un tracé, les autres tracés sont également modifiés en conséquence.
Cons
Parce que Bokeh est une bibliothèque qui a en quelque sorte une interface de niveau intermédiaire, il faut souvent moins de code que Matplotlib mais plus de code pour produire le même tracé que Seaborn, Altair ou Plotly.
Par exemple, pour créer le même tracé de comptage en utilisant des données titanesques, outre la nécessité de transformer les données à l’avance, nous devons également définir la largeur de la barre et la couleur si nous voulons que le graphique soit joli
Si nous n’avons pas ajouté de largeur pour le graphique à barres, le graphique ressemblerait à ceci
Donc, nous devons ajuster manuellement les dimensions pour rendre le graphique plus joli
Si vous voulez créer un joli graphique à barres en moins de code, cela pourrait être l’inconvénient de Bokeh par rapport à d’autres bibliothèques
Takeaway : Bokeh est la seule bibliothèque dont l’interface va du bas au haut, ce qui permet de produire facilement des graphiques à la fois polyvalents et élégants. Cela a toutefois un coût : il faut généralement plus de code à Bokeh pour créer les tracés avec une qualité similaire à celle des autres bibliothèques.
Folium
Folium facilite la visualisation des données sur une carte à feuillets interactive. La bibliothèque dispose d’un certain nombre de tilesets intégrés provenant d’OpenStreetMap, Mapbox et Stamen
Pros
Facile de créer une carte avec des marqueurs
Même si Plotly, Altair, et Bokeh nous permettent également de créer des cartes, Folium utilise une carte de rue ouverte pour vous donner une sensation plus proche d’une carte Google avec un minimum de code
Souvenez-vous comment nous avons créé la carte pour visualiser les emplacements des utilisateurs de Github en utilisant Plotly ? Nous pourrions rendre la carte encore plus jolie avec Folium
L’emplacement initial à Brooklyn, NY. Zoom arrière pour voir d’autres emplacements sur la carte. Avec quelques lignes de codes, nous avons créé une véritable carte montrant les emplacements des utilisateurs.
2. Ajouter un emplacement potentiel
Si nous voulons ajouter des emplacements potentiels d’autres utilisateurs, Folium facilite la tâche en permettant aux utilisateurs d’ajouter des marqueurs
Cliquez sur la carte pour voir un nouvel emplacement généré juste là où vous cliquez.
3. plugins
Folium a un certain nombre de plugins que vous pouvez utiliser avec votre carte – y compris un plugin pour Altair. Et si nous voulons voir la carte thermique du total des étoiles des utilisateurs de Github dans le monde pour identifier où il y a un nombre élevé de top utilisateurs de Github avec un nombre élevé du total des étoiles ? La carte thermique dans les plugins Folium vous permet de faire exactement cela.
Zoomer pour voir l’image complète de la carte thermique.
Takeaway : Folium vous permet de créer une carte interactive avec peu de lignes de codes. Il vous donne une expérience proche de celle d’une carte Google.
Conclusion
Congratulation ! Vous venez d’apprendre à connaître six outils de visualisation différents pour votre visualisation. J’espère que cet article vous donne une idée de ce que fait chaque bibliothèque et quand utiliser quoi. Saisir les caractéristiques clés de chaque bibliothèque vous permettra de tirer plus rapidement la bonne bibliothèque selon vos besoins.
Si vous ne savez toujours pas quelle bibliothèque utiliser pour vos données, choisissez-en une que vous trouvez suffisamment bonne. Ensuite, si le code est trop long ou si le graphique ne se révèle pas aussi bon que vous l’imaginez, essayez simplement avec une autre bibliothèque !
N’hésitez pas à forker et à jouer avec le code de cet article dans ce repo Github.
J’aime écrire sur les concepts de base de la science des données et jouer avec différents algorithmes et outils de science des données. Vous pourriez vous connecter avec moi sur LinkedIn et Twitter.
Star ce repo si vous voulez vérifier les codes pour tous les articles que j’ai écrits. Suivez-moi sur Medium pour rester informé de mes derniers articles de science des données comme ceux-ci :
.