Makina Blog
Superset, l'outil de DataViz de AirBnB
Superset est un outil développé par AirBnB. Son objectif consiste à faciliter la prise de décision au sein d'une entreprise, en simplifiant l'accès à ses données. Superset permet notamment de regrouper les informations fournies par différentes sources, de créer des graphiques interactifs et de les partager sous forme de tableaux de bord.
Mise en place
La procédure d'installation de Superset n'est pas très complexe. Afin de pouvoir tester rapidement l'application, j'ai :
- installé Superset avec pip ;
- créé un compte administrateur ;
- initialisé la base de donnée où Superset regroupera l'ensemble des informations ;
- créé les roles par défauts ;
- lancé le serveur
Le tout, en cinq petites instructions :
# installation pip install superset # compte administrateur fabmanager create-admin --app superset # base de donnée superset db upgrade # initialisation superset init # c'est parti ! superset runserver
Ajouter ses propres données
Superset permet de charger quelques données de démo, mais j'ai trouvé plus intéressant de travailler sur mes propres données, stockée dans des fichiers csv. La première étape consiste à créer une base de donnée. Je me suis contentée d'une base de donnée Sqlite3, que je suis venue enrichir avec les données fournies par le National Center for Environnmental Information (NOAA de son petit nom). NOAA met ses données à disposition au format csv. C'est la bibliothèque Pandas qui va me permettre de créer une table à partir de chaque fichier csv.
import sqlite3 import pandas as pd # créer la base de donnée conn = sqlite3.connect('superset.db') # charger les données météorologique pour l'année 2016, au Texas texas_2016 = pd.read_csv('noaa _Texas_2016.csv') # créer la table correspondante texas_2016.to_sql('texas_2016', conn) # se déconnecter conn.close()
Ensuite il suffit d'aller dans l'onglet Sources, de sélectionner Bases de données, de cliquer sur le bouton vert permettant d'ajouter une nouvelle base de données et de renseigner les champs : :
- Base de données : le nom de votre base
- URI SQLAlchemy : le chemin vers votre base (dans mon cas il s'agit du chemin absolu vers ma base sqlite3 devant lequel j'ajoute le prefixe sqlite:///)
Vous pouvez tester la connexion pour vérifier que votre base est correctement détectée et appuyer sur le bouton Save en bas de la page. Remarquer que ma table texas_2016 a bien été retrouvée.
Récupérer les données de ma table
Il me reste ensuite à venir ajouter les tables qui m'intéressent. Dans l'onglet Sources, je sélectionne Table. Pour le moment Superset n'a aucun enregistrement. Je dois en créer un, à partir de la table texas_2016.
Un premier graphique très simple
Une fois votre table enregistrée, il va vous falloir l'éditer et aller dans Lister les colonnes. Pour chaque colonne, vous allez devoir préciser comment l'utiliser dans les graphiques générés par Superset. Par exemple, est-il possible de grouper les données en fonction de cette colonne ? Doit-on conserver les valeurs distinctes ? Doit-on calculer la somme de ces données ? etc.
Une fois validée, Superset vous permet alors de créer un graphique. L'un des graphiques les plus simples est la vue tabulaire, vous permettant d'afficher un ou plusieurs attributs de vos données.
Utiliser des fonds de carte avec MapBox
Mes données météorologiques pour le Texas correspondent à la moyenne annuelle de relevés de températures par différentes stations. Je vais donc souhaiter pouvoir afficher les différentes stations sur une carte.
Superset utilise les fonds de carte de MapBox. Il va donc vous falloir créer un compte Mapbox et récupérer un jeton (token) associé à ce dernier, puis le fournir à Superset via un fichier de configuration.
Je peux ensuite produire une visualisation plus parlante des températures enregistrées par chaque station, en plaçant ces dernières sur une carte et en les représentant par un point dont la taille varie en fonction de la température.
Attention, pour que votre affichage soit correct, il faut que vos données soient groupées au moins selon la latitude, la longitude et la température. Selon le niveau de zoom plusieurs stations peuvent être regroupées. Dans ce cas, elles apparaissent sous la forme d'un point légèrement transparent. La température affichée (en degrés Farenheit) pour cet ensemble de station est la température médiane. Nous aurions pu choisir d'afficher la moyenne ou la somme des températures des stations regroupées.
Les tâches pour lesquelles Superset est très bon
Conçu pour mutualiser différentes sources de données, Superset gère un très grand nombre de bases de données. Une fois les différentes bases connectées, l'ensemble des tables qu'elles contiennent devient accessible. Pour créer un graphique il suffit de sélectionner une table, de choisir un type de graphique, de définir les données de la table qui vont venir l'alimenter et de générer la visualisation.
Je peux par exemple afficher le nombre de naissance par département en France soit sous la forme d'un diagramme en camembert :
Soit sous la forme d'une carte (ce qui est quand même plus lisible) :
Une quarantaine de graphiques est disponible. Une fois vos graphiques créés, vous pouvez en combiner plusieurs dans un tableau de bord, ce qui permet d'avoir une vue d'ensemble sur une thématique particulière.
Les graphiques proposés par Superset sont classes, l'interface web est très confortable à utiliser, la création de tableaux de bord intuitive et rapide. Superset va en plus gérer tout seul la cohérence d'un graphique à l'autre, en attribuant la même couleur pour deux mesures identiques.
Là où ça coince
Superset est génial … tant que vous restez dans ce qu'il sait bien faire. Dès qu'il s'agit de croiser les données de différentes tables, ça commence à coincer. Autre souci, même si Superset propose une grande variété de graphiques, il est difficile de s'en servir pour proposer une visualisation personnalisée. Par exemple, lorsque j'affiche le nombre de naissance par département sous forme de carte, les palettes de couleurs sont extrêmement limitées. Et ce n'est pas qu'une question d'esthétique : la couleur apporte elle aussi de l'information. En utilisant une palette de bleu comme sur la seconde figure, il n'est pas évident que le bleu foncé corresponde à des départements ayant un taux de naissance important. Et pourtant, il s'agit de la palette adaptée. Les autres auraient plutôt tendance à induire en erreur, comme ce dégradé du jaune vers le rouge, où les départements à forte natalité ressemblent à des zones critiques.
Alors Superset qu'est ce que j'en fais ?
Superset est un outil plein de qualités : facile à installer, léger, intuitif il permet de créer rapidement des infographies qui claquent et ce, même lorsque les données proviennent de différentes sources. Il est parfait pour un usage interne afin d'aiguiller les décisions des employés d'une entreprise. Pour le DataScientist qui souhaite explorer des données, le fait de devoir ajouter celle-ci dans une base et ensuite de la charger avec Superset est un petit peu complexe, mais l'utilisation de Pandas permet de faciliter grandement cette étape. Là où Superset montre ses limites, c'est dans la création de visualisations précises (on regrettera qu'aussi peu de palettes de couleur soient disponibles) ou pour croiser les données de différentes tables. En ce qui me concerne, pour ces deux tâches, je préfère me tourner vers d'autres solutions.
Aller plus loin
Si cet article vous a intéressé, pourquoi ne pas venir parler de visualisation de données lors de l'une de nos deux formations : en Python Scientifique ou en Machine Learning ou en deep Learning ainsi que la valorisation des données dormantes avec le ML.
Formations associées
Formations IA / Data Science
Formation Initiation au Python scientifique
À distance (FOAD) Du 2 au 6 décembre 2024
Voir la formationFormations IA / Data Science
Formation Machine Learning
À distance (FOAD) Du 25 au 29 novembre 2024
Voir la formationFormations IA / Data Science
Formation Mise en place de projets Deep Learning avec Keras
Toulouse Du 19 au 21 mars 2025
Voir la formationActualités en lien
Comment réussir son projet de machine learning ?
Voici quelques retours d'expérience et des indications pour vous aider à réussir vos projets de machine learning
Machine Learning : classer automatiquement vos données à l'import
Comment utiliser des algorithmes de machine learning pour importer correctement des données dans vos projets de DataScience ?
Initiation au Machine Learning avec Python - La théorie
Dans ce tutoriel en 2 parties nous vous proposons de découvrir les bases de l'apprentissage automatique et de vous y initier avec le langage Python. Cette première partie se veut non technique et présente les concepts du Machine Learning, les différents types d'apprentissage et leurs principaux algorithmes. Il situe enfin Python dans cet univers en présentant les nombreuses librairies à votre disposition pour aborder cette discipline.