IAMaîtriser l'IA générative Plan du corpus

05 — Analyse exploratoire et insights

Le danger n'est pas que l'IA se trompe. C'est qu'elle formule une conclusion élégante à partir d'un chiffre qu'elle n'a jamais vu.

Temps de lecture : 18 min | Niveau : Intermédiaire

Ce que tu sauras faire après

  • Cadrer une question business avant d'écrire la moindre ligne de code.
  • Faire générer du code pandas exploitable, adapté à ton jeu de données réel.
  • Faire interpréter des résultats sans laisser le modèle inventer de conclusion.
  • Reconnaître les quatre formes d'insight inventé et les bloquer dans ton prompt.
  • Dérouler une analyse complète en cinq étapes, avec un template par étape.

1. Le piège central : la conclusion inventée

Un modèle de langage produit une suite de mots vraisemblable. Face à un tableau de résultats, il va écrire une conclusion qui sonne comme une conclusion d'analyste. Le style sera parfait. Le contenu peut être totalement détaché des chiffres.

Les quatre formes que ça prend, par ordre de fréquence :

FormeExemple typiqueComment la bloquer
Causalité inventée« La baisse est due au changement de tarif »Exiger : corrélation ou causalité, et sur quelle preuve
Chiffre non calculé« Une hausse d'environ 12 % » alors que le tableau dit 7,4 %Exiger que chaque chiffre cité existe dans les données fournies
Segment non observé« Les clients premium sont plus fidèles » sans colonne segmentExiger la colonne source de chaque affirmation
Extrapolation« Cette tendance devrait se poursuivre »Interdire toute projection non demandée

Les garde-fous documentés

La doc Anthropic donne trois techniques directement applicables.

Autoriser le « je ne sais pas » :

« Allow Claude to say "I don't know": Explicitly give Claude permission to admit uncertainty. This simple technique can drastically reduce false information. »

Ancrer dans des citations :

« Use direct quotes for factual grounding: For tasks involving long documents (>20k tokens), ask Claude to extract word-for-word quotes first before performing its task. »

Vérifier par citation, et retirer ce qui n'est pas appuyé :

« After drafting, review each claim in your press release. For each claim, find a direct quote from the documents that supports it. If you can't find a supporting quote for a claim, remove that claim from the press release and mark where it was removed with empty \[\] brackets. »

Microsoft ajoute la même idée, côté restriction à la source :

« Give the model an "out" […] when asking a question over a piece of text, you might include something like "respond with 'not found' if the answer isn't present". »

Traduction pour la data : chaque affirmation doit citer la ligne du tableau de résultats qui l'appuie. Sans ligne citée, l'affirmation est retirée. C'est la seule discipline qui tient dans la durée.


2. Étape 1 — Cadrer la question business

C'est l'étape que tout le monde saute, et c'est celle qui coûte le plus cher quand elle est sautée.

  • Question mal cadrée : « pourquoi les ventes baissent ? »
  • Question cadrée : « le CA TTC du réseau physique en France a-t-il baissé de plus de 5 % entre juillet 2026 et août 2026, à périmètre constant, et quels magasins contribuent le plus à cette baisse ? »

Les cinq éléments d'une question cadrée :

  1. L'indicateur exact : CA TTC, pas « les ventes ».
  2. La période : dates de début et de fin, explicites.
  3. Le périmètre : quels magasins, quels pays, quels produits. Et à périmètre constant ou non.
  4. Le point de comparaison : contre le mois précédent, contre N-1, contre l'objectif.
  5. La décision derrière : à quoi servira la réponse. Ça détermine le niveau de détail nécessaire.

L'IA est excellente pour t'aider à cadrer, justement parce que tu as du mal à formuler. Utilise-la en mode questionnement : donne ta question floue, demande-lui de te poser les questions manquantes.

AVANT / APRÈS

AVANT :

Analyse mes ventes, je veux comprendre ce qui se passe.

APRÈS :

Je dois répondre à une question de mon directeur commercial, mais elle est
floue : "pourquoi les ventes baissent ?".

Aide-moi à la transformer en question analysable.
Pose-moi UNE PAR UNE les questions dont tu as besoin pour préciser :
l'indicateur exact, la période, le périmètre, le point de comparaison,
et la décision qui sera prise avec la réponse.

Ne propose aucune analyse tant que les cinq points ne sont pas fixés.
Quand ils le sont, reformule la question en une seule phrase précise.

Pourquoi c'est mieux : tu n'as pas besoin de savoir formuler. Tu réponds à des questions fermées, et la formulation sort toute seule à la fin.


3. Étape 2 — Générer du code pandas utile

Le modèle a besoin de la forme réelle de ton DataFrame, pas de son nom.

Ce qu'il faut coller dans le prompt :

# Ce que tu colles : le résultat, pas la commande
df.dtypes
# commande_id       object
# magasin_code      object
# date_commande     datetime64[ns]
# montant_ttc       float64
# statut            object

df.head(3)
# (colle 3 lignes réelles, anonymisées si besoin)

df.shape
# (1482903, 5)

Les méthodes pandas de base, telles que documentées, dont tu auras besoin dans presque toutes les analyses :

df.head(), df.tail(3)          # inspection
df.describe()                  # résumé statistique
df.dtypes, df.columns, df.index

df.groupby("A")[["C", "D"]].sum()   # agrégation
df.groupby(["A", "B"]).sum()        # agrégation multi-clés

df1.dropna(how="any")          # supprimer les lignes incomplètes
df1.fillna(value=5)            # remplir les manquants
pd.isna(df1)                   # masque des manquants

pd.merge(left, right, on="key")     # jointure façon SQL
pd.concat(pieces)                   # empilement de lignes

Trois exigences à mettre systématiquement dans le prompt pour du code pandas d'analyse :

  1. Afficher la volumétrie après chaque filtre. Une analyse qui passe de 1,4 million à 200 lignes sans que personne ne le remarque, ça arrive tous les jours.
  2. Nommer les résultats intermédiaires. df_aout, df_par_magasin. Pas df2, df3.
  3. Ne jamais écraser df. Le DataFrame d'origine reste intact, pour pouvoir tout recomparer.

4. Étape 3 — Interpréter sans halluciner

C'est ici que tu mets tes garde-fous. Règle absolue : tu colles le tableau de résultats, et tu interdis toute affirmation non appuyée sur une ligne de ce tableau.

AVANT

Voici mes résultats par magasin, qu'est-ce que tu en conclus ?
[tableau]

Tu recevras une belle prose, avec des causes inventées et des chiffres arrondis au hasard.

APRÈS

<resultats>
magasin | ca_aout | ca_juillet | evolution_pct | nb_bons_aout | nb_bons_juillet
03      | 184 220 | 241 890    | -23.8         | 1 204        | 1 512
07      | 312 440 | 318 100    | -1.8          | 2 040        | 2 061
12      |  98 110 | 141 330    | -30.6         |   612        |   890
19      | 205 700 | 199 400    | +3.2          | 1 388        | 1 342
</resultats>

<ce_que_je_sais>
- Période : août 2026 contre juillet 2026, CA TTC, périmètre constant.
- Le magasin 12 a été fermé pour travaux du 5 au 19 août.
- Aucune autre information sur les autres magasins.
</ce_que_je_sais>

Règles strictes :
1. Chaque affirmation doit citer entre crochets la ou les lignes du tableau
   qui l'appuient. Exemple : "le magasin 12 recule de 30,6 % [ligne 12]".
2. Tous les chiffres que tu cites doivent apparaître tels quels dans le tableau.
   Aucun chiffre recalculé de tête.
3. Distingue explicitement CONSTAT (visible dans les chiffres) et
   HYPOTHESE (explication possible, non prouvée par les données).
4. N'affirme aucune cause. Si tu proposes une cause, marque-la HYPOTHESE
   et indique la donnée supplémentaire qui permettrait de la vérifier.
5. Si une question ne peut pas être tranchée avec ce tableau, écris
   "non déterminable avec les données fournies".

Rends : 3 constats maximum, puis 3 hypothèses maximum, puis les données
manquantes à aller chercher.

Pourquoi c'est mieux : la règle 1 rend la sortie auditable en dix secondes. La règle 3 sépare ce qui est vrai de ce qui est plausible. La règle 5 donne l'issue de secours, ce qui évite le remplissage.

Le contrôle croisé

Deuxième garde-fou, plus lourd mais imparable, recommandé par Anthropic sous le nom de best-of-N verification :

« Best-of-N verification: Run Claude through the same prompt multiple times and compare the outputs. Inconsistencies across outputs could indicate hallucinations. »

En pratique : relance le même prompt d'interprétation dans une conversation neuve. Si les deux lectures divergent sur un point, ce point est fragile. Applique ça aux analyses qui partent en comité de direction.


5. Étape 4 — Formuler l'insight

Un insight, ce n'est pas un constat. C'est un constat plus une conséquence plus une action possible.

NiveauExemple
Chiffre« Le magasin 12 fait 98 110 euros en août. »
Constat« Le magasin 12 recule de 30,6 % contre juillet. »
Insight« Le magasin 12 recule de 30,6 %, dont l'essentiel s'explique par 15 jours de fermeture. Hors magasin 12, le réseau recule de 6,1 %. La question à traiter est donc le recul du reste du réseau, pas la fermeture. »

L'insight retire du bruit. Il dit au lecteur où regarder. C'est ça qu'on attend de toi, pas un tableau de plus.

Formulation demandée au modèle : une phrase de constat chiffré, une phrase de conséquence, une phrase d'action ou de question ouverte. Trois phrases. Pas plus.


6. Étape 5 — Vérifier avant de livrer

Reprends les trois questions du README de la section :

  1. D'où vient le chiffre ?
  2. La volumétrie est-elle cohérente ?
  3. Puis-je le recalculer autrement ?

Ajoute-en une quatrième, propre à l'analyse exploratoire :

  1. Est-ce que je saurais défendre ce chiffre en réunion ? Si quelqu'un demande « pourquoi 6,1 % et pas 6,4 % ? », est-ce que tu peux répondre ? Si non, tu n'as pas fini.

🧰 Le template d'analyse en 5 étapes

À dérouler dans l'ordre, une étape par échange. Ne saute pas d'étape.

Étape 1 — Cadrer

Ma question de départ, telle qu'on me l'a posée : "[QUESTION_FLOUE]".

Aide-moi à la cadrer. Pose-moi UNE PAR UNE les questions nécessaires pour fixer :
1. l'indicateur exact et sa définition ;
2. la période et la période de comparaison ;
3. le périmètre (entités, produits, pays), et s'il est constant ou non ;
4. la granularité du résultat attendu ;
5. la décision qui sera prise avec la réponse.

Ne propose aucune analyse avant que les 5 points soient fixés.
Termine par la question reformulée en une seule phrase précise.

Étape 2 — Explorer les données

<question_cadree>
[COLLE_LA_QUESTION_REFORMULEE_A_L_ETAPE_1]
</question_cadree>

<structure_donnees>
df.dtypes :
[COLLE_LE_RESULTAT]

df.head(3) :
[COLLE_3_LIGNES_REELLES_ANONYMISEES]

df.shape : [COLLE_LE_RESULTAT]
</structure_donnees>

Écris le code pandas d'exploration qui prépare cette analyse :
- contrôles préalables : valeurs manquantes, doublons sur [CLE], bornes de dates ;
- affichage de la volumétrie AVANT et APRES chaque filtre ;
- noms de variables explicites, jamais df2 / df3 ;
- ne jamais réassigner `df` : garde l'original intact.

Commente chaque bloc en français, en une ligne.
Si une colonne nécessaire à la question n'est pas dans la structure fournie,
dis-le au lieu de l'inventer.

Étape 3 — Calculer

<question_cadree>
[COLLE_LA_QUESTION]
</question_cadree>

<colonnes_disponibles>
[COLLE_LA_LISTE_APRES_NETTOYAGE]
</colonnes_disponibles>

Écris le code pandas qui calcule la réponse.
Exigences :
- une étape = un bloc = une variable nommée ;
- affiche la volumétrie à chaque étape ;
- termine par un DataFrame de résultat prêt à être collé dans un prompt
  d'interprétation ;
- ajoute un bloc de contrôle : un recalcul du total par une deuxième méthode,
  et une comparaison des deux.

Le bloc de contrôle n'est pas optionnel : c'est lui qui attrape les erreurs
de jointure.

Étape 4 — Interpréter

<resultats>
[COLLE_LE_TABLEAU_DE_RESULTATS_COMPLET]
</resultats>

<ce_que_je_sais>
[PERIODE_PERIMETRE_INDICATEUR]
[EVENEMENTS_CONNUS_QUI_PEUVENT_EXPLIQUER_UN_ECART]
[CE_QUE_JE_N_AI_PAS_COMME_INFORMATION]
</ce_que_je_sais>

Règles strictes :
1. Chaque affirmation cite entre crochets la ligne du tableau qui l'appuie.
2. Tous les chiffres cités apparaissent tels quels dans le tableau.
3. Sépare CONSTAT (visible dans les chiffres) et HYPOTHESE (non prouvée).
4. Aucune cause affirmée. Une hypothèse s'accompagne de la donnée
   supplémentaire qui permettrait de la vérifier.
5. Aucune projection ni extrapolation.
6. Si une question n'est pas tranchable ici, écris
   "non déterminable avec les données fournies".

Rends : 3 constats maximum, 3 hypothèses maximum, puis la liste des données
à aller chercher.

Étape 5 — Formuler et vérifier

<constats_valides>
[COLLE_LES_CONSTATS_QUE_TU_AS_VERIFIES_TOI_MEME]
</constats_valides>

<destinataire>
[PROFIL_EX_DIRECTEUR_COMMERCIAL_NON_TECHNIQUE]
</destinataire>

<decision_attendue>
[CE_QUE_LE_DESTINATAIRE_DOIT_POUVOIR_DECIDER]
</decision_attendue>

Formule l'insight principal en exactement 3 phrases :
1. le constat chiffré ;
2. sa conséquence concrète ;
3. l'action ou la question ouverte qui en découle.

Puis liste séparément, sous <limites>, ce que cette analyse NE dit PAS,
et les 2 objections les plus probables en réunion avec la réponse à donner.

N'utilise que les constats fournis. N'ajoute aucun chiffre nouveau.

A retenir

  • Cadre la question avant de coder : indicateur, période, périmètre, comparaison, décision.
  • Colle la structure réelle du DataFrame (dtypes, head, shape), sinon le code produit ne tournera pas.
  • Exige une citation de ligne pour chaque affirmation : sans ligne citée, l'affirmation dégage.
  • Sépare toujours CONSTAT et HYPOTHESE, et interdis les causes affirmées.
  • Donne au modèle le droit d'écrire « non déterminable avec les données fournies ».
  • Pour une analyse qui part en comité : relance l'interprétation dans une conversation neuve et compare.

Sources

Corpus personnel de formation · genere le 26/09/2026 · source : 05-analyse-exploratoire-et-insights.md