Makina Blog

Le blog Makina-corpus

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 :

  1. installé Superset avec pip ;
  2. créé un compte administrateur ;
  3. initialisé la base de donnée où Superset regroupera l'ensemble des informations ;
  4. créé les roles par défauts ;
  5. 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:///)
Ajouter une base de donnée

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.

Sauvegarde une base de donné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.

Sauvegarder une table

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.

Un exemple de configuration possible

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.

Un exemple de vue tabulaire

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.

Le résultat, avec un fond de carte Mapbox

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 :

superset birth

Soit sous la forme d'une carte (ce qui est quand même plus lisible) :

superset carte

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.

superset

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.

superset_carte2

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

Toulouse Du 28 au 30 mai 2024

Voir la formation

Formations IA / Data Science

Formation Machine Learning

Nantes Du 2 au 4 avril 2024

Voir la formation

Formations IA / Data Science

Formation Mise en place de projets Deep Learning avec Keras

Toulouse Du 20 au 22 mars 2024

Voir la formation

Actualités en lien

Image
projet-machine-learning
29/04/2018

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

Voir l'article
Image
machine-learnin-données-à-l'import.
22/02/2018

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 ?

Voir l'article
Image
2rever
30/05/2017

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.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus