Catégories
e-business

Masterclass : utiliser ChatGPT pour l’analyse de données

Depuis l’introduction de son Code interpreter, qui développe et exécute à la volée un programme Python, ChatGPT s’est fait une réputation d’assistant idéal pour traiter nos tableaux de données, suivis de production ou tableaux de bord…
L’apparition récente de la variante ChatGPT o1 va encore davantage pousser l’utilité de notre nouvel assistant à des niveaux inédits.

Mais dans l’immédiat, faisons l’essai avec ce cas métier réel.

Je reçois chaque début de mois, avec quelques jours de décalage, le tableau Excel de suivi d’une coupe sur plusieurs lots d’une forêt de pins maritimes.

Spontanément, j’ai tenté de tirer des calculs et des tendances en donnant le fichier Excel en pièce jointe à ChatGPT. Le résultat a été déplorable, je ne suis arrivé à rien. En effet, le fichier était structuré avec :

  • un onglet par mois
  • quelques lignes d’entête, dont la 5e contient le nom des colonnes
  • le tableau d’un mois a été rempli en plusieurs fois, les dates ont des formats différents, certains colonnes ne sont pas complètes, certaines lignes vides ou incomplètes
  • il y a parfois des totaux, des cellules avec un calcul…
    Comme je l’ai appris et compris à cette occasion : difficile dans ces conditions, de tirer quoi que ce soit de cohérent d’un tableur utilisé pour faire de la mise en page.
Le tableur d’origine

Ce ne sont pas des données : ce sont des informations. Et encore.

L’examen des lignes montre une structure simple représentant le poids de grumes de pins maritime emporté par chaque chargement de camion sur les lots acquis par l’exploitant :

  • date : il peut y avoir plusieurs lignes avec la même date
  • libellé du lot « Lot 20 », « Lot 19 » etc.
  • nom du représentant des propriétaires (le même pour tout le fichier)
  • n° du BL (donnée interne à l’exploitant) = une ligne par BL
  • nom de l’abatteuse (donnée interne à l’exploitant)
  • immatriculation du camion grumier
  • essence d’arbre (la même pour tout le fichier)
  • poids net : la donnée intéressante

Avant d’aller plus loin, pourquoi vouloir analyser ces données ? Quelles information voulons-nous en tirer ?

Parmi les analyses possibles, deux nous intéressent :

  • Volume ou poids des lots : cette donnée nous permettra d’évaluer le volume de production et pourra être utilisée pour calculer la rentabilité ou pour la planification logistique ;
  • La date de chaque opération est enregistrée, ce qui permet une analyse temporelle de l’activité et de la productivité.

Pour rendre le fichier exploitable, un retraitement est nécessaire.

Le tableur d’origine avec des trucs comme ça

J’importe le fichier dans Google Sheet (par préférence personnelle : ce n’est pas indispensable).
Depuis chaque onglet je copie juste les données, que je vais coller, à la suite des autres, dans le premier onglet du fichier (que je renomme « tonnages par BL »). Ouf !
Je supprime les lignes superflues en haut de tableau pour que la ligne 1 contiennent les libellés de colonnes (noms de champs)
Je supprime toute mise en forme.
Tri par dates, pour enlever les lignes vides.
Remplacement des quelques n° de BL et n° d’immatriculation par la mention « manquant ».
Suppression de la colonne « Mois » ambiguë (2023 ou 2024 ?) et redondante puisqu’on a la date exacte.
En filtrant les données dans Sheets, j’observe que les libellés de lots ne sont pas parfaits (« Lot 18 » et « Lot18 ») ; je corrige à la main.

J’obtiens un fichier propre de 1659 lignes de données.

Un tableau de données prêt pour ChatGPT

À noter qu’une utilisation avancée de Code Interpreter permettrait de programmer tous ces nettoyages, une fois les défauts possibles identifiés. C’est pourquoi un premier traitement manuel a du sens.

À partir de là, on peut discuter avec les données.
C’est à dire poser nos questions à ChatGPT sur les données.

ChatGPT — joindre un fichier

Nouveau chat, Joindre un fichier (le trombone au début du champ de dialogue)

Histoire de m’assurer que nous sommes sur la même longueur d’onde, je lui demande `Que représente ce tableau de données ?

On le voit actionner Code interpreter :

initier le dialogue

On est d’accord. Pas besoin d’ajouter du contexte ou de l’aider à interpréter le contenu des données.

Pour entrer dans le vif du sujet, commencer simple :

Fais un tableau des fréquences absolues et relatives de tonnage par lot.
Quel est le tonnage total
Conventions : 
- utiliser la virgule décimale
- exprimer les fréquences relatives en % avec 2 décimales
Exemple :
LOT   |  Tonnes |  %
LOTxx | xxx,xx  | xx,xx%

Le résultat de ce prompt :

premières analyses

Noter que le chat propose de télécharger ce tableau, qui pourrait être importé dans Excel ou Sheets.

On avance : je lui demande quel serait la représentation graphique la plus appropriée pour rendre compte de cette donnée. Il me conseille le diagramme en barres horizontale. Je n’ai plus qu’à le lui réclamer.

ChatGPT — diagramme barres

Je vais m’intéresser plus précisément au Lot 20, pour des raisons personnelles (mes arbres).

filtre les data pour ne conserver que le lot 20

Puis Propose moi un diagramme qui rende compte de l'évolution des tonnages par mois. Visualise dans le même diagramme le nombre de transports par mois
ChatGPT — diagramme lot 20 tonnages

La légende : « Voici le diagramme représentant l’évolution des tonnages par mois ainsi que le nombre de transports pour le Lot 20. Les barres bleues indiquent le tonnage total, tandis que la ligne rouge montre le nombre de transports effectués chaque mois. Cela permet de visualiser la relation entre le volume transporté et la fréquence des transports »

Analysons plus précisément la productivité des camions ayant participé au transport des bois.

Toujours seulement sur le lot 20, détermine quels sont les 10 camions qui ont fait le plus de rotations .
Rend un tableau de la forme :
Transporteur   |   Nb rotations |  Tonnage total transporté |  Tonnage moyen par rotation
Tri sur le tonnage
Fais un graphique de ces données
ChatGPT — diagramme lot 20 tonnages par camion

Le résultat permet visuellement de découvrir que l’un des 10 camions les plus utilisés présente un tonnage par rotation notablement inférieur aux autres. Demandons à ChatGPT de nous aider à réfléchir à cette différence.

Que peut on dire de la différence de tonnage par rotation du camion GJ490GG ?

ChatGPT produit alors une analyse détaillée présentant les différentes hypothèses explicatives. Que je vous épargne ici. Vous avez le principe.

Résumons :

  1. nettoyer les données (la première fois, à la main)
  2. importer le fichier dans une conversation ChatGPT
  3. valider que ChatGPT déduit le contexte correctement, sinon, l’y aider en explicitant le contexte, la signification des données
  4. demander des statistiques, des représentations graphiques et surtout…
  5. demander des analyses, des raisonnements, des « pourquoi ? » ou « qu’est-ce qui peut expliquer ? »…

Vous avez sous la main un super stagiaire data-engineer pour l’analyse de données.

Voici la fin de cette démonstration. Nous nous sommes cantonnés à des statistiques descriptives simples. Bien sûr il est possible d’aller beaucoup plus loin dans l’analyse : ChatGPT assisté de son Code Interpreter possède tous les outils d’analyse de données :

  • travailler avec plusieurs feuilles
  • appliquer des formules et des fonctions aux données
  • analyse des séries chronologiques
  • transformation des données
  • opérations conditionnelles

La seule limite est votre besoin !

Toute la conversation sur ChatGPT