Analyse de données avancée : fichiers, graphiques et tableurs
Uploadez un CSV de ventes mal formaté et ChatGPT écrira et exécutera du vrai Python dans un sandbox pour le nettoyer, le mettre en graphique et vous rendre un fichier propre accompagné d'un graphique prêt à publier. C'est Advanced Data Analysis (anciennement Code Interpreter) : un environnement Python live rattaché à votre conversation. Ce n'est pas le modèle qui devine le contenu de vos données à partir du texte. C'est le modèle qui exécute du code sur votre fichier réel et qui lit la sortie.
Cette leçon fait passer un fichier de l'état brut à l'état fini, et vous montre exactement comment récupérer les données nettoyées et les graphiques.
Ce qu'est réellement l'analyse de données avancée
Quand vous joignez un fichier, ChatGPT peut démarrer un sandbox Linux temporaire avec Python, pandas, matplotlib, numpy et compagnie préinstallés. Il écrit du code, l'exécute, voit les erreurs ou les résultats, et itère, sans que vous touchiez à un terminal.
Quelques propriétés à garder en tête :
- Le sandbox est éphémère. Les fichiers et variables vivent le temps de la session et expirent après une période d'inactivité. Téléchargez ce que vous voulez conserver.
- Il n'y a pas d'accès internet dans le sandbox par défaut. Il ne peut pas faire de
pip installarbitraire ni appeler des APIAPIApplication Programming Interface : une interface standardisée qui permet aux applications de communiquer et d'échanger des données sans connaître leur fonctionnement interne respectif.Voir la définition complète →. Il travaille avec ce qui est embarqué et ce que vous uploadez. - Il gère
.csv,.xlsx,.json,.parquet, les images, les PDF et les archives zip. Pour les tableurs, plusieurs feuilles sont accessibles.
Présentation officielle : **Advanced Data Analysis dans le centre d'aide OpenAI**.
L'exemple : un vrai CSV de ventes mal formaté
Imaginez q3_sales.csv exporté d'un CRMCRMCustomer Relationship Management : logiciel et stratégie pour gérer et analyser les interactions clients tout au long de leur cycle de vie.Voir la définition complète →. Il est cassé de façon réaliste :
- Une colonne
Revenuedu genre"$1,240.50"(chaîne de caractères, avec symboles et virgules). OrderDatedans des formats mélangés :2025-07-03et07/14/2025.- Une colonne
Regionavec"north","North "et"NORTH". - Des lignes de commande dupliquées et quelques
CustomerIDvides.
Vous n'avez pas besoin de décrire tout cela d'entrée. Laissez ChatGPT l'inspecter d'abord.
Étape 1 : profilez avant de transformertransformerUn Transformer est une architecture de réseau de neurones qui utilise le self-attention pour traiter des séquences en parallèle. Elle est au cœur de la plupart des modèles de langage et d'IA générative actuels.Voir la définition complète →
Uploadez le fichier et commencez par un prompt de diagnostic, pas par une commande de nettoyage :
Charge ce CSV. Montre-moi le nombre de lignes et de colonnes, les dtypes, le nombre de valeurs nulles par colonne, le nombre de lignes dupliquées et 5 lignes d'exemple. Ne change rien pour l'instant.
ChatGPT exécute quelque chose de proche de ceci et vous répond :
import pandas as pd
df = pd.read_csv("q3_sales.csv")
print(df.shape)
print(df.dtypes)
print(df.isna().sum())
print("duplicate rows:", df.duplicated().sum())
df.sample(5, random_state=0)Vous raisonnez maintenant à partir de faits. Vous voyez que Revenue est un object (du texte), que CustomerID a 6 valeurs nulles et qu'il y a 14 lignes dupliquées. Cette étape de profiling est le plus gros levier de qualité. Sautez-la et vous obtenez du code vraisemblable qui gère mal vos cas limites, en silence.
Étape 2 : nettoyez avec des règles explicites
Donnez le nettoyage sous forme de spécification numérotée. La précision empêche ici le modèle de supprimer « pour vous aider » des lignes que vous voulez garder.
Nettoie les données avec ces règles, et après chaque étape affiche combien de lignes ont changé : 1. Retire les$et les virgules deRevenue, convertis en float. 2. ParseOrderDateen datetime, convertis les valeurs non parsables en NaT et indique combien. 3. NormaliseRegionen title case et supprime les espaces superflus. 4. Supprime les lignes entièrement dupliquées. 5. Laisse en place les lignes avec unCustomerIDmanquant, mais ajoute un flag booléenmissing_customer. Enregistre le résultat sousq3_sales_clean.csv.
Un analyste data senior écrirait pour l'essentiel ceci :
import pandas as pd
df = pd.read_csv("q3_sales.csv")
before = len(df)
df["Revenue"] = (df["Revenue"].str.replace(r"[$,]", "", regex=True).astype(float))
df["OrderDate"] = pd.to_datetime(df["OrderDate"], format="mixed", errors="coerce")
unparsed = df["OrderDate"].isna().sum()
df["Region"] = df["Region"].str.strip().str.title()
df = df.drop_duplicates()
df["missing_customer"] = df["CustomerID"].isna()
df.to_csv("q3_sales_clean.csv", index=False)
print(f"rows: {before} -> {len(df)}, unparsed dates: {unparsed}")ChatGPT vous montrera la sortie affichée (« rows: 1014 -> 1000, unparsed dates: 3 ») et vous donnera un lien de téléchargement pour q3_sales_clean.csv. Cliquez dessus pour sauvegarder le fichier nettoyé. Ce lien pointe vers le sandbox, alors récupérez-le avant l'expiration de la session.
Une remarque sur la confiance : lisez le code
Vous pouvez et devez déplier les blocs de code que ChatGPT exécute. S'il a converti 3 dates en NaT, demandez lesquelles. La discipline qui compte : traitez le modèle comme un analyste junior rapide dont vous vérifiez le travail par échantillonnage, pas comme un oracle. Quand des chiffres alimentent une décision, demandez-lui d'afficher les comptages intermédiaires à chaque étape (comme ci-dessus) pour que la transformation soit auditable.
Étape 3 : des graphiques réellement diffusables
Maintenant la partie amusante. Demandez l'analyse et le graphique d'un coup :
À partir des données nettoyées, donne-moi le chiffre d'affaires mensuel total sous forme de graphique en ligne. Nomme les axes, ajoute un titre, formate l'axe des y en devise et utilise un style épuré. Puis enregistre-le en PNG 300 DPI téléchargeable.
Une version propre de ce qui s'exécute :
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
monthly = (df.set_index("OrderDate").resample("ME")["Revenue"].sum())
fig, ax = plt.subplots(figsize=(9, 5))
ax.plot(monthly.index, monthly.values, marker="o", linewidth=2)
ax.set_title("Q3 2025 Monthly Revenue")
ax.set_xlabel("Month")
ax.set_ylabel("Revenue")
ax.yaxis.set_major_formatter(mticker.FuncFormatter(lambda x, _: f"${x:,.0f}"))
fig.tight_layout()
fig.savefig("monthly_revenue.png", dpi=300)Vous obtenez le graphique rendu dans la conversation plus un monthly_revenue.png téléchargeable. Itérez en langage naturel : « passe en barres », « ajoute des étiquettes de données sur chaque point », « éclate par Region en small multiples ». Chaque demande réexécute le code sur le même DataFrame en mémoire, vous ne réuploadez donc rien.
Une contrainte bien réelle : matplotlib rend ici le texte avec le jeu de polices par défaut, donc les emoji et certaines écritures non latines peuvent ne pas s'afficher. Si un graphique nécessite des polices de marque spécifiques, c'est le travail de vos propres outils, pas du sandbox.
Tableaux croisés dynamiques et exports multi-feuilles
Le travail sur tableur est un point fort. Demandez un tableau croisé et un export Excel formaté :
Construis un tableau croisé du Revenue total par Region (lignes) et Month (colonnes). Écris-le dans q3_summary.xlsx avec les données brutes nettoyées sur une seconde feuille nommée « data ».pivot = pd.pivot_table(df, values="Revenue", index="Region",
columns=df["OrderDate"].dt.strftime("%Y-%m"),
aggfunc="sum", fill_value=0)
with pd.ExcelWriter("q3_summary.xlsx") as writer:
pivot.to_excel(writer, sheet_name="summary")
df.to_excel(writer, sheet_name="data", index=False)La sortie est un vrai .xlsx à deux feuilles, prêt à glisser dans une présentation ou un email.
ChatGPT Advanced Data Analysis Full Tutorial
Rendre tout cela reproductible
Une analyse ponctuelle, c'est bien. Le levier vient de la réutilisation.
Instructions personnalisées et Projects
Si vous faites cela chaque semaine, vos standards ne doivent pas vivre dans votre tête. Mettez-les là où ChatGPT les lit à chaque fois. Dans un Project, définissez des instructions du type : « Quand j'uploade des données de ventes, profile toujours en premier, affiche toujours les comptages de lignes après chaque transformation, formate les devises sur les graphiques et exporte les graphiques en 300 DPI. » Les fichiers que vous ajoutez à un Project y sont cantonnés, votre travail commercial reste donc séparé du reste.
Un Custom GPT pour votre équipe
Encapsulez tout le workflow dans un Custom GPT pour que vos collègues obtiennent une sortie cohérente sans écrire de prompts. Inscrivez la règle du profiling d'abord et votre style de graphique maison dans ses instructions. Advanced Data Analysis est une capacité que vous activez pour le GPT. Un coéquipier non technique uploade un CSV et obtient exactement votre pipelinepipelineL'ensemble des opportunités commerciales actives réparties selon les étapes du processus de vente, avec leur valeur potentielle cumulée et leur probabilité de conclusion.Voir la définition complète → d'analyse.
Tâches planifiées et agent ChatGPT
Pour du reporting récurrent, les tâches planifiées peuvent déclencher une conversation à une fréquence donnée (« chaque lundi à 9h »). Le hic : une tâche planifiée ne peut pas aller chercher un fichier frais sur votre ordinateur. Associez-la à un Connector (Google Drive, SharePoint, etc.) pour que la source du fichier soit accessible, ou utilisez l'agent ChatGPT, qui peut naviguer et opérer dans son propre environnement virtuel pour récupérer et traiter les données. Choisissez l'outil selon que les données sont déjà dans la conversation ou qu'elles doivent être récupérées.
Vérification des acquis
1. Quelle est la distinction fondamentale entre Advanced Data Analysis et le modèle qui se contente de lire vos données sous forme de texte ?
2. Pourquoi faut-il télécharger les données nettoyées et les graphiques que vous voulez conserver d'une session ?
3. Pourquoi la leçon recommande-t-elle de commencer par un prompt de diagnostic (profiling) plutôt que par une commande de nettoyage immédiate ?
4. Sélectionnez TOUTES les affirmations qui décrivent correctement l'environnement sandbox utilisé par Advanced Data Analysis.
Sélectionnez toutes les réponses correctes.
5. Sélectionnez TOUS les problèmes de qualité de données illustrés par l'exemple de CSV de ventes mal formaté.
Sélectionnez toutes les réponses correctes.
Quand passer à l'API
Le sandbox du chat est parfait pour l'exploration et les rapports ad hoc. C'est le mauvais outil pour un pipeline qui doit tourner sans surveillance, interroger une base de données et ne jamais halluciner un nom de colonne. Pour cela, passez à l'API OpenAI.
La même capacité « le modèle écrit et exécute du Python » existe sous la forme de l'outil Code Interpreter dans la Responses API. Vous joignez un fichier, activez l'outil, et le modèle exécute du code dans un conteneur managé, en renvoyant à la fois l'analyse et les ID de fichiers générés que vous pouvez télécharger de façon programmatique.
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-5",
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}],
input="Clean the attached sales CSV, then return total revenue by region as a table.",
)
print(resp.output_text)Empruntez la voie de l'API quand vous avez besoin de planification sur votre propre infrastructure, de sorties structurées que vous pouvez valider, ou d'une intégration dans une application existante. Utilisez le chat quand un humain est dans la boucle et que vous voulez itérer visuellement. Ils partagent le même moteur ; la différence, c'est le contrôle contre la commodité.
Si votre sortie doit s'insérer dans un système en aval, combinez ceci avec les structured outputs pour que le résumé revienne en JSON validé par un schémamaUtiliser un logiciel pour automatiser les tâches et campagnes marketing répétitives, afin de personnaliser à grande échelle sur des canaux comme l'email, le web et le social.Voir la définition complète → plutôt qu'en prose. C'est ce qui transforme « une belle analyse » en « des données auxquelles un autre programme peut faire confiance ».
Pièges classiques
- Faire confiance au premier graphique. Confirmez toujours le nombre de lignes derrière un agrégat. Un filtre que vous avez oublié peut discrètement diviser vos totaux par deux.
- Perdre des fichiers à l'expiration. Téléchargez immédiatement les sorties
.csvet.png. Le sandbox n'est pas un espace de stockage. - Prompts de nettoyage vagues. « Nettoie ça » invite à des suppressions de lignes silencieuses. Spécifiez chaque règle et demandez les comptages avant/après.
- Supposer un accès internet. Le sandbox ne peut pas récupérer une URL ni installer un package exotique. Si vous avez besoin d'une bibliothèque externe, les données doivent venir avec vous, ou utilisez l'API avec un conteneur que vous contrôlez.
- Fichiers énormes. Des uploads très volumineux peuvent épuiser la mémoire. Pour des données de plusieurs millions de lignes, échantillonnez d'abord, prototypez la logique, puis exécutez le job complet via l'API.
À retenir
- Profilez avant de transformer. Demandez d'abord la shape, les dtypes, les valeurs nulles et les doublons, pour que le nettoyage repose sur des faits, pas sur des hypothèses.
- Spécifiez le nettoyage sous forme de règles numérotées et exigez les comptages de lignes avant/après à chaque étape pour garder la transformation auditable.
- Téléchargez immédiatement les fichiers nettoyés et les graphiques : le sandbox est éphémère et hors ligne, sans stockage persistant.
- Encodez vos standards dans un Project ou un Custom GPT pour que le workflow profiling d'abord, devises formatées, 300 DPI se répète sans avoir à re-prompter.
- Passez à l'outil Code Interpreter de la Responses API quand vous avez besoin d'exécutions sans surveillance, d'accès à une base de données ou de JSON structuré auquel vos autres systèmes peuvent faire confiance.
À faire, tiré de cette leçon
Ces actions sont compilées dans le plan d'action du rôle.
- Profilez la structure des données, les valeurs nulles et les doublons avant de transformer, en exigeant le nombre de lignes avant/après
- Téléchargez les fichiers et graphiques du sandbox immédiatement après chaque exécution d'analyse