Traiter des données : CSV, Excel, images
Traiter des donnees : CSV, Excel, images
Code Interpreter excelle dans le traitement de fichiers. Uploadez un CSV, un Excel ou une image, et le modele ecrit le code Python pour les analyser, les transformer et produire des resultats exploitables.
Traitement de fichiers CSV
Analyse exploratoire
from openai import OpenAI
client = OpenAI()
with open("clients_2025.csv", "rb") as f:
fichier = client.files.create(file=f, purpose="assistants")
response = client.responses.create(
model="gpt-5.3",
input=[{
"role": "user",
"content": [
{"type": "text", "text": (
"Analyse ce fichier CSV : "
"1. Nombre de lignes et colonnes "
"2. Types de donnees de chaque colonne "
"3. Valeurs manquantes par colonne "
"4. Statistiques descriptives des colonnes numeriques "
"5. Les 5 premieres lignes"
)},
{"type": "input_file", "file_id": fichier.id}
]
}],
tools=[{"type": "code_interpreter"}]
)
print(response.output_text)
Nettoyage et transformation
response = client.responses.create(
model="gpt-5.3",
input=[{
"role": "user",
"content": [
{"type": "text", "text": (
"Nettoie ce CSV : "
"- Supprime les doublons "
"- Remplis les valeurs manquantes (mediane pour les nombres, "
" mode pour les categories) "
"- Normalise les noms de villes (majuscule initiale) "
"- Convertis les dates au format ISO "
"- Exporte le resultat en CSV nettoye"
)},
{"type": "input_file", "file_id": fichier.id}
]
}],
tools=[{"type": "code_interpreter"}]
)
# Recuperer le fichier nettoye
for item in response.output:
if item.type == "code_interpreter_call":
for result in item.results:
if hasattr(result, "files"):
for f in result.files:
contenu = client.files.content(f.file_id)
with open("clients_nettoye.csv", "wb") as out:
out.write(contenu.read())
Traitement de fichiers Excel
Code Interpreter gere nativement les fichiers Excel grace a openpyxl :
with open("budget_2026.xlsx", "rb") as f:
fichier_excel = client.files.create(file=f, purpose="assistants")
response = client.responses.create(
model="gpt-5.3",
input=[{
"role": "user",
"content": [
{"type": "text", "text": (
"Ce fichier Excel contient plusieurs onglets. "
"1. Liste tous les onglets disponibles "
"2. Pour chaque onglet, donne un resume du contenu "
"3. Fais un tableau croise dynamique : total des depenses "
" par departement et par trimestre "
"4. Exporte le resultat dans un nouveau fichier Excel"
)},
{"type": "input_file", "file_id": fichier_excel.id}
]
}],
tools=[{"type": "code_interpreter"}]
)
Fusionner plusieurs fichiers
# Upload de plusieurs fichiers
fichiers_ids = []
for nom in ["ventes_q1.xlsx", "ventes_q2.xlsx", "ventes_q3.xlsx", "ventes_q4.xlsx"]:
with open(nom, "rb") as f:
fichier = client.files.create(file=f, purpose="assistants")
fichiers_ids.append(fichier.id)
content = [
{"type": "text", "text": (
"Ces 4 fichiers Excel contiennent les ventes par trimestre. "
"Fusionne-les en un seul fichier avec : "
"- Un onglet 'Donnees' avec toutes les ventes "
"- Un onglet 'Resume' avec les totaux par trimestre "
"- Un onglet 'Tendances' avec les variations d'un trimestre a l'autre"
)}
]
for fid in fichiers_ids:
content.append({"type": "input_file", "file_id": fid})
response = client.responses.create(
model="gpt-5.3",
input=[{"role": "user", "content": content}],
tools=[{"type": "code_interpreter"}]
)
Traitement d’images
Code Interpreter peut manipuler des images avec Pillow :
Analyse et transformation
with open("photo_produit.jpg", "rb") as f:
fichier_image = client.files.create(file=f, purpose="assistants")
response = client.responses.create(
model="gpt-5.3",
input=[{
"role": "user",
"content": [
{"type": "text", "text": (
"Analyse cette image : "
"1. Dimensions, format, taille "
"2. Histogramme des couleurs "
"3. Cree 3 versions : "
" - Miniature 200x200 "
" - Version noir et blanc "
" - Version avec contraste augmente de 30%"
)},
{"type": "input_file", "file_id": fichier_image.id}
]
}],
tools=[{"type": "code_interpreter"}]
)
Traitement par lot
# Upload de plusieurs images
images_ids = []
for img_path in ["img1.png", "img2.png", "img3.png"]:
with open(img_path, "rb") as f:
fichier = client.files.create(file=f, purpose="assistants")
images_ids.append(fichier.id)
content = [
{"type": "text", "text": (
"Redimensionne toutes ces images a 800x600 pixels, "
"ajoute un filigrane 'BROUILLON' en demi-transparent, "
"et compresse en JPEG qualite 85."
)}
]
for fid in images_ids:
content.append({"type": "input_file", "file_id": fid})
response = client.responses.create(
model="gpt-5.3",
input=[{"role": "user", "content": content}],
tools=[{"type": "code_interpreter"}]
)
Pattern : pipeline ETL complet
def pipeline_etl(fichier_source: str, transformations: str) -> dict:
"""Pipeline Extract-Transform-Load avec Code Interpreter."""
# Extract : upload du fichier source
with open(fichier_source, "rb") as f:
fichier = client.files.create(file=f, purpose="assistants")
# Transform : appliquer les transformations
response = client.responses.create(
model="gpt-5.3",
input=[{
"role": "user",
"content": [
{"type": "text", "text": transformations},
{"type": "input_file", "file_id": fichier.id}
]
}],
tools=[{"type": "code_interpreter"}],
instructions=(
"Execute chaque transformation etape par etape. "
"Affiche un resume apres chaque etape : "
"nombre de lignes avant/apres, colonnes modifiees. "
"Exporte le resultat final en CSV et en Excel."
)
)
# Load : recuperer les fichiers generes
fichiers_sortie = []
for item in response.output:
if item.type == "code_interpreter_call":
for result in item.results:
if hasattr(result, "files"):
for f in result.files:
contenu = client.files.content(f.file_id)
with open(f.name, "wb") as out:
out.write(contenu.read())
fichiers_sortie.append(f.name)
return {
"rapport": response.output_text,
"fichiers_generes": fichiers_sortie
}
# Utilisation
resultat = pipeline_etl(
"donnees_brutes.csv",
"1. Supprime les colonnes vides "
"2. Convertis les montants de centimes en euros "
"3. Ajoute une colonne 'trimestre' basee sur la date "
"4. Agrege les ventes par trimestre et categorie "
"5. Calcule les variations en pourcentage"
)
Formats supportes
| Format | Extensions | Lecture | Ecriture |
|---|---|---|---|
| CSV | .csv | Oui | Oui |
| Excel | .xlsx, .xls | Oui | Oui |
| JSON | .json | Oui | Oui |
| Images | .png, .jpg, .gif, .bmp | Oui | Oui |
| Texte | .txt, .md | Oui | Oui |
| Lecture limitee | Non |
Points cles a retenir
- Uploadez les fichiers avec
purpose="assistants"et passez-les viainput_file - Le modele gere CSV, Excel multi-onglets et images nativement
- Recuperez les fichiers generes via
client.files.content() - Pour les gros fichiers, demandez un traitement par lots
- Combinez plusieurs fichiers dans un meme appel pour des fusions et comparaisons