Trouver la seconde date avec Tableau Prep
En matière d’analytique, il est souvent nécessaire de déterminer la date à laquelle un second événement se produit, par exemple quand un client effectue un deuxième achat (devenant ainsi un client récurrent), ou quand un conducteur enfreint pour la seconde fois le code de la route. Il est facile de trouver la date d’un premier événement, il s’agit simplement de la date minimum. Trouver la seconde date est plus ardu.
Dans ce didacticiel en deux parties, nous allons organiser des données d’infractions routières et répondre aux questions suivantes :
Quelle était la durée, en jours, entre la première et la seconde infraction pour chaque conducteur ?
Comparez les montants des amendes pour la première et la seconde infraction. Sont-ils corrélés ?
Quel conducteur a eu la plus grosse amende ? Lequel a eu l’amende la plus faible ?
Combien de conducteurs ont commis plusieurs types d’infractions ?
Quel était le montant moyen de l’amende pour les conducteurs n’ayant jamais effectué de stage de conduite obligatoire ?
Dans Ia première étape, nous allons utiliser Tableau Prep Builder pour restructurer les données en vue de notre analyse. Dans la seconde étape, Analyse avec la seconde date dans Tableau Desktop, nous passerons à l’analyse dans Tableau Desktop.
L’objectif de ce didacticiel est de présenter divers concepts dans le contexte d’un scénario de la vie réelle et d’explorer les options, en déterminant de manière non prescriptive quelle est la plus adaptée. Au terme de ce didacticiel, vous devriez mieux appréhender l’incidence de la structure des données sur les calculs et l’analyse, et être familiarisé avec divers aspects de Tableau Prep et les calculs dans Tableau Desktop.
Remarque : pour effectuer les tâches décrites dans ce didacticiel, vous aurez besoin de Tableau Prep Builder (installé ou via la navigateur) et des données téléchargées. Pour la deuxième partie, vous aurez également besoin de Tableau Desktop installé.
L’ensemble de données est intitulé Traffic Violations.xlsx. Il est recommandé de l’enregistrer dans le dossier Mon dossier Tableau Prep > Sources de données.
Pour installer Tableau Prep Builder et Tableau Desktop avant de poursuivre ce didacticiel, consultez le Guide de déploiement de Tableau Desktop et Tableau Prep(Le lien s’ouvre dans une nouvelle fenêtre). Sinon, vous pouvez télécharger les versions d’évaluation gratuites de Tableau Prep(Le lien s’ouvre dans une nouvelle fenêtre) et Tableau Desktop(Le lien s’ouvre dans une nouvelle fenêtre).
Les données
Pour cet exemple, nous allons examiner des données d’infractions routières. Chaque infraction est une ligne. Le conducteur, la date, le type d’infraction, l’obligation ou non pour le conducteur de suivre un stage de conduite, et le montant de l’amende sont enregistrés.
Structure souhaitée des données
Les données sont actuellement structurées de manière à ce que chaque infraction soit une ligne. Un conducteur ayant commis plusieurs infractions apparaît sur plusieurs lignes, et il n’est pas facile de distinguer s’il s’agit de sa première ou de sa seconde infraction.
Pour analyser les récidivistes, nous souhaitons un ensemble de données qui distingue les dates de première et seconde infraction, les informations associées à chacune de ces infractions, et où chaque ligne est un conducteur.
Restructuration des données
Comment utiliser Tableau Prep à cette fin ? Nous allons créer le flux par étapes en récupérant la date de la première infraction, puis de la seconde, et en organisant l’ensemble de données final comme souhaité. Assurez-vous que vous avez téléchargé le fichier Excel (Traffic Violations.xlsx) pour bien suivre le didacticiel.
Agrégation initiale pour la date de la 1ère infraction
Tout d’abord, nous allons nous connecter au fichier Traffic Violations.xlsx.
Ouvrez Tableau Prep Builder.
Dans l’écran de démarrage, cliquez sur Se connecter aux données.
Dans le volet Connexions, cliquez sur Microsoft Excel. Accédez à l’emplacement où vous avez enregistré Traffic Violations.xlsx et cliquez sur Ouvrir.
La feuille Infractions devrait apparaître automatiquement dans le volet Flux.
Pour plus d’informations sur la connexion aux données, consultez Se connecter aux données.
Ensuite, nous devons identifier la date de la première infraction pour chaque conducteur. Pour cela, nous utiliserons l’étape Agrégation, en créant un mini-ensemble de données comportant les champs Driver ID (ID de conducteur) et Minimum Infraction Date (Date minimum de l’infraction).
Lorsque vous utilisez une étape d’agrégation dans Tableau Prep, tout champ définissant ce qui constitue une ligne est un Champ groupé. (Pour nous, il s’agit de Driver ID.) Tous les champs qui seront agrégés et présentés au niveau des champs groupés correspondent à un Champ agrégé. (Pour nous, il s’agit de Infraction Date).
Dans le volet Flux, sélectionnez Infractions, cliquez sur l’icône plus et sélectionnez Agrégation.
Faites glisser Driver ID vers la zone Champs groupés.
Faites glisser Infraction Date vers la zone Champs agrégés. L’agrégation par défaut est CNT (total). Cliquez sur CNT et modifiez l’agrégation sur Minimum.
Ceci identifie la date la plus petite (la plus ancienne), qui est la date de la première infraction par conducteur.
Pour plus d’informations sur les agrégations, consultez Nettoyer et organiser les données.
Dans le volet Flux, sélectionnez Agrégation 1, cliquez sur l’icône plus et sélectionnez Étape de nettoyage afin que nous puissions nettoyer la sortie de l’agrégation.
Dans le volet Profil, double-cliquez sur le nom du champ Infraction Date et modifiez-le sur 1st Infraction Date (Date de la 1ère infraction).
À ce stade, le flux et le volet Profil devraient se présenter ainsi :
Dans le volet Profil de cette étape de nettoyage, nous pouvons voir que nos données se composent maintenant de 39 lignes et seulement 2 champs. Tous les champs non utilisés pour le regroupement ou l’agrégation sont perdus. Par contre, nous voulons conserver une partie des informations d’origine. Nous pourrions soit ajouter ces champs au regroupement ou à l’agrégation (ce qui changerait le niveau de détail ou nécessiterait l’agrégation des données), soit lier ce mini-ensemble de données aux données d’origine (essentiellement en ajoutant une nouvelle colonne aux données d’origine pour le champ 1st Infraction Date). Procédons à la jointure.
Dans le volet Flux, sélectionnez Infractions, cliquez sur l’icône plus et sélectionnez Étape de nettoyage.
Assurez-vous de survoler l’étape Infractions directement, et non pas la ligne entre cette étape et l’étape d’agrégation. Si la nouvelle étape de nettoyage est insérée entre les deux plutôt qu’un embranchement, utilisez la flèche Annuler dans la barre d’outils et réessayez. Le menu devrait indiquer Ajouter, et non pas Insérer.
Votre flux est alors associé à toutes les données d’origine. Nous allons lier les résultats de l’agrégation à cette copie des données complètes. En effectuant une jointure avec Driver ID, nous ajoutons la date minimum depuis notre agrégation dans les données d’origine.
Sélectionnez l’étape Nettoyer 2 et faites-la glisser sur l’étape Nettoyer 1, puis déposez-la sur Lier.
La configuration de jointure par défaut devrait être correcte : une jointure interne sur Driver ID = Driver ID.
Pour plus d’informations sur les jointures, consultez Lier vos données.
Étant donné que certains champs risquent d’être dupliqués lors d’une jointure (par exemple les champs dans la clause de jointure), il est souvent utile de nettoyer les champs superflus avant d’effectuer une jointure.
Dans le volet Flux, sélectionnez Jointure 1, cliquez sur l’icône plus et sélectionnez Étape de nettoyage.
Dans le volet Profil, faites un clic droit ou Ctrl-clic (MacOS) sur la fiche de Driver ID-1, et sélectionnez Supprimer.
Pour modifier l’ordre du champ, faites glisser la fiche 1st Infraction Date entre Driver ID et Infraction Date où vous voyez apparaître la ligne noire.
À ce stade, le flux devrait se présenter ainsi :
En examinant la grille des données ci-dessous, nous pouvons voir notre nouvel ensemble de données combinées. Nous avons la date d’infraction minimum (à savoir la première date) pour chaque conducteur ajouté à chaque ligne de l’ensemble de données.
Seconde agrégation pour la date de la 2nde infraction
Nous devons également déterminer la date de la seconde infraction. Pour cela, nous souhaitons filtrer à toute ligne où la date d’infraction est égale à la date minimum (en supprimant donc la première date). Nous pouvons alors prendre le minimum des dates restantes en utilisant une autre étape d’agrégation, ce qui nous laisse avec la seconde date, que nous allons renommer pour plus de clarté.
Remarque : nous souhaitons utiliser les données telles qu’elles sont actuellement dans Nettoyer 3 ultérieurement dans le flux. Nous allons donc ajouter une autre étape de nettoyage pour obtenir la date de la seconde infraction. L’état actuel des données dans l’étape Nettoyer 3 sera ainsi disponible ultérieurement.
Dans le volet Flux, sélectionnez Nettoyer 3, cliquez sur l’icône plus et sélectionnez Étape de nettoyage.
Dans la barre d’outils du volet Profil, choisissez Filtrer les valeurs. Créez un filtre
[Infraction Date] != [1st Infraction Date]
.Supprimez le champ 1st Infraction Date.
Dans le volet Flux, sélectionnez Nettoyer 4, cliquez sur l’icône plus et sélectionnez Agréger.
Faites glisser Driver ID vers la zone Champs groupés. Faire glisser Infraction Date vers la zone Champs agrégés et modifiez l’agrégation sur Minimum.
Dans le volet Flux, sélectionnez Agréger 2, cliquez sur l’icône plus et sélectionnez Étape de nettoyage. Renommez Infraction Date en 2nd Infraction Date.
À ce stade, le flux devrait se présenter ainsi :
La date de la seconde infraction est maintenant identifiée pour chaque conducteur. Pour associer toutes les autres informations avec chaque infraction (type, amende, stage de conduite obligatoire), nous devons à nouveau les lier à l’ensemble de données tout entier.
Sélectionnez l’étape Nettoyer 5 et faites-la glisser sur l’étape Nettoyer 3, puis déposez-la sur Lier.
À nouveau, la configuration de jointure par défaut devrait être correcte : une jointure interne sur Driver ID = Driver ID.
Dans le volet Flux, sélectionnez Jointure 2, cliquez sur l’icône plus et sélectionnez Étape de nettoyage. Supprimez les champs Driver ID-1 et 1st Infraction Date puisqu’ils ne sont plus nécessaires.
À ce stade, le flux devrait se présenter ainsi :
Créer des ensembles de données entiers pour les 1ères et 2ndes infractions
Avant de poursuivre, prenons du recul et considérons tous les éléments dont nous disposons et comment nous souhaitons les faire fonctionner ensemble. Ce que nous recherchons au final est un ensemble de données qui se présente comme ceci, avec une colonne pour Driver ID, puis des colonnes pour la date, le type, le stage de conduite obligatoire et le montant de l’amende pour les 1ères et 2ndes infractions.
Comment y parvenir ?
Dans l’étape Nettoyer 3, nous avons notre ensemble de données complet avec une colonne qui répète la date de la première infraction pour chaque conducteur.
Nous souhaitons éliminer toutes les autres lignes pour un conducteur qui ne correspondent pas à la première infraction, créant ainsi un ensemble de données comportant uniquement les premières infractions. C’est-à-dire que nous souhaitons conserver uniquement les informations pour un conducteur donné lorsque 1st Infraction Date = Infraction Date. Une fois que nous avons appliqué un filtre pour conserver uniquement la ligne de la première infraction, nous pouvons supprimer le champ Infraction Date et mettre de l’ordre dans les noms des champs.
De même, après la seconde agrégation et jointure, nous avons notre ensemble de données complet avec une colonne pour la seconde date d’infraction.
Nous pouvons appliquer un filtre similaire 2nd Infraction Date = Infraction Date pour conserver uniquement la ligne d’information pour la 2nde infraction de chaque conducteur. À nouveau, nous pouvons également renommer Infraction Date qui est maintenant redondant et mettre un peu d’ordre dans les noms des champs.
Nous allons commencer avec l’ensemble de données des premières infractions.
Dans le volet Flux, sélectionnez Nettoyer 3, cliquez sur l’icône plus et sélectionnez Étape de nettoyage.
Comme à l’étape 10 ci-dessus, nous voulons ajouter une branche pour la nouvelle étape de nettoyage, et non pas l’insérer entre Nettoyer 3 et Nettoyer 4.
Avec cette nouvelle étape Nettoyer sélectionnée, dans le volet Profil, cliquez sur Filtrer des valeurs dans la barre d’outils. Créez un filtre
[1st Infraction Date] = [Infraction Date]
.Supprimez le champ Infraction Date.
Renommez les champs Infraction Type, Traffic School et Fine Amount de manière à ce qu’ils commencent par « 1st ».
Double-cliquez sur le nom Nettoyer 7 sous l’étape dans le volet Flux et renommez-le Robust 1st.
Occupons-nous maintenant de l’ensemble de données des secondes infractions.
Dans le volet Flux, sélectionnez Nettoyer 6, après la dernière jointure.
Cliquez sur Filtrer les valeurs dans la barre d’outils. Créez un filtre
[2nd Infraction Date] = [Infraction Date]
.Supprimez le champ Infraction Date.
Renommez les champs Infraction Type, Traffic School et Fine Amount de manière à ce qu’ils commencent par « 2nd ».
Double-cliquez sur le nom Nettoyer 6 sous l’étape dans le volet Flux et renommez-le Robust 2nd.
À ce stade, le flux devrait se présenter ainsi :
Créer l’ensemble de données complet
Nous disposons maintenant de ces deux ensembles de données bien organisés avec des informations complètes sur les premières et secondes infractions par conducteur. Nous allons pouvoir les lier à nouveau ensemble sur Driver ID et obtenir la structure de données recherchée.
Sélectionnez Robust 2nd et faites-le glisser sur Robust 1st, en le déposant sur Lier.
La configuration de jointure par défaut devrait être correcte, sous la forme Driver ID = Driver ID.
Nous ne souhaitons pas déposer les conducteurs qui n’ont pas commis de seconde infraction, donc nous allons effectuer une jointure gauche. Dans la zone Type de jointure, cliquez sur la zone sans ombrage du diagramme à côté de Robust 1st, pour la transformer en jointure Gauche.
Dans le volet Flux, sélectionnez Jointure 3, cliquez sur l’icône plus et sélectionnez Étape de nettoyage. Supprimez le champ en double Driver ID-1.
Les données sont dans l’état souhaité, donc nous pouvons créer une sortie et passer à l’analyse.
Dans le volet Flux, sélectionnez Nettoyer 6 que vous venez d’ajouter, cliquez sur l’icône plus et sélectionnez Ajouter une sortie.
Dans le volet Sortie, modifiez le Type de sortie sur .csv puis cliquez sur Parcourir. Entrez Driver Infractions comme nom, et choisissez l’emplacement souhaité avant de cliquer sur Accepter pour enregistrer.
Cliquez sur le bouton Exécuter le flux au bas du volet pour générer votre sortie. Cliquez sur Terminé dans la boîte de dialogue d’état pour fermer la boîte de dialogue.
Conseil : pour plus d’informations sur les fichiers de sortie et l’exécution d’un flux, consultez Enregistrer et partager votre travail.
Le flux final devrait se présenter comme suit :
Remarque : vous pouvez télécharger le fichier de flux terminé pour vérifier votre travail : Driver Infractions.tflx
Récapitulatif
Pour la première étape de ce didacticiel, notre objectif était de prendre notre ensemble de données d’origine et de le préparer pour l’analyse relative aux premières et secondes infractions. Le processus consiste en trois phases :
Identifier les dates de premières et secondes infractions :
Créer une agrégation qui conserve Driver ID et MIN Infraction Date. Liez cette agrégation avec l’ensemble de données d’origine pour créer un « ensemble de données intermédiaire » comportant la date de la première infraction (minimum) répétée pour chaque ligne.
Dans une nouvelle étape, filtrez toutes les lignes où 1st Infraction Date est identique à Infraction Date. À partir de cet ensemble de données filtré, créez une agrégation qui conserve Driver ID et MIN Infraction date. Liez avec l’ensemble de données intermédiaire issu de la première étape. Cette opération identifie la date de la seconde infraction.
Créer des ensembles de données propres pour les premières et secondes infractions :
Revenez en arrière et créez une branche à partir de l’ensemble de données intermédiaire et appliquez un filtre de manière à conserver uniquement les lignes où 1st Infraction Date est identique à Infraction Date. Un ensemble de données limité à la première infraction est alors créé. Mettez-y de l’ordre en supprimant tous les champs inutiles, et renommez tous les champs souhaités (à l’exception de Driver ID) pour indiquer qu’ils concernent la première infraction. Voici l’ensemble de données Robust 1st.
Mettez de l’ordre dans l’ensemble de données relatif à la date de la seconde infraction. Nettoyez les résultats de la jointure de l’étape 2 en appliquant un filtre de manière à conserver uniquement les lignes où 2nd Infraction Date est identique à Infraction Date. Supprimez tous les champs inutiles, et renommez tous les champs souhaités (à l’exception de Driver ID) pour indiquer qu’ils concernent la seconde infraction. Voici l’ensemble de données Robust 2nd.
Combiner les données de premières et secondes infractions en un seul ensemble de données :
Liez les ensembles de données Robust 1st et Robust 2nd en veillant à conserver tous les enregistrements de Robust 1st pour éviter de perdre les conducteurs n’ayant pas commis de seconde infraction.
Ensuite, nous souhaitons explorer l’analyse de ces données dans Tableau Desktop.
Remarque : nous tenons à remercier Ann Jackson pour sa rubrique Workout Wednesday Do Customers Spend More on Their First or Second Purchase?(Le lien s’ouvre dans une nouvelle fenêtre) et Andy Kriebel pour son astuce Tableau Prep Returning the First and Second Purchase Dates(Le lien s’ouvre dans une nouvelle fenêtre) qui ont fourni l’inspiration initiale pour ce didacticiel. Si vous cliquez sur ces liens, vous quitterez le site Web de Tableau. Tableau décline toute responsabilité quant au degré d’exactitude ou d’actualité des pages gérées par des fournisseurs externes. Contactez les propriétaires si vous avez des questions relatives au contenu.