Daten verarbeiten: CSV, Excel, Bilder
Auf dieser Seite
Aktualisiert am 2. November 2026 basierend auf der OpenAI-Dokumentation: Das Code Interpreter-Tool erfordert einen
container-Parameter (in allen Beispielen hinzugefügt), Texteingaben verwenden den Typinput_text, und die Websuche nutzt das Toolweb_search(web_search_previewist nun ein veraltetes Tool ohne Domänenfilter). Generierte Dateien werden mit den Funktionenfichiers_generesundtelechargeraus Lektion 10 abgerufen. An Dateien angehängte Dateien werden mit deruser_data-Nutzung hochgeladen, was OpenAI für Modell-Eingaben empfiehlt (Dateieingaben). Quellen: Code Interpreter · Websuche.
Daten verarbeiten: CSV, Excel, Bilder
Code Interpreter verändert die Art und Weise, wie Sie das Modell anweisen, Aufgaben zu erledigen. Ohne es erhalten Sie eine Beschreibung dessen, was getan werden muss; mit ihm schreibt das Modell Python-Code, führt diesen in einer Sandbox aus, überprüft das Ergebnis und korrigiert seinen eigenen Code, falls Fehler auftreten. Bei Datenfiles ist der Unterschied entscheidend: Niemand kann die Struktur einer CSV-Datei erraten, ohne sie zu öffnen, und genau das ermöglicht die Code-Ausführung.
Die Überlegungen in dieser Lektion gelten für die drei folgenden Formate. Sie laden die Datei hoch, beschreiben das erwartete Ergebnis in natürlicher Sprache und erhalten entweder eine Analyse oder eine neue Datei. Was gutes von schlechtem Gebrauch unterscheidet, hängt von der Präzision Ihrer Anweisung ab: „Analysieren Sie diese Datei” erzeugt eine generische Zusammenfassung, während eine nummerierte Anfrage wie die untenstehenden ein Ergebnis liefert, das Sie so verwenden können, wie es ist.
Verarbeitung von CSV-Dateien
Explorative Analyse
Beginnen Sie hier immer, auch wenn Sie glauben, die Datei bereits zu kennen. Eine aus einem Geschäftstool exportierte CSV-Datei birgt Überraschungen, die die Spezifikation nicht erwähnt: eine numerische Spalte, die als Text gespeichert ist, weil ein Dezimaltrennzeichen verwendet wurde, Daten in drei verschiedenen Formaten oder eine Summenzeile, die mitten in den Daten eingefügt wurde. Die fünf unten angeforderten Punkte – Dimensionen, Typen, fehlende Werte, Statistiken und eine Vorschau – sind das Minimum vor jeder Transformation, da sie bestimmen, was Sie als Nächstes anfordern können.
from openai import OpenAI
client = OpenAI()
with open("clients_2025.csv", "rb") as f:
fichier = client.files.create(file=f, purpose="user_data")
response = client.responses.create(
model="gpt-5.6-terra",
input=[{
"role": "user",
"content": [
{"type": "input_text", "text": (
"Analysieren Sie diese CSV-Datei: "
"1. Anzahl der Zeilen und Spalten "
"2. Datentypen für jede Spalte "
"3. Fehlende Werte pro Spalte "
"4. Deskriptive Statistiken für numerische Spalten "
"5. Die ersten 5 Zeilen"
)},
{"type": "input_file", "file_id": fichier.id}
]
}],
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}]
)
print(response.output_text)
Bereinigung und Transformation
Die Bereinigung ist der Schritt, bei dem Entscheidungen getroffen werden müssen, und Sie müssen diese explizit treffen, anstatt sie dem Modell zu überlassen. Das Auffüllen fehlender Werte mit dem Median für Zahlen und dem Modus für Kategorien ist eine vertretbare Wahl, aber es ist eine Wahl: In einer Umsatzspalte, bei der ein Drittel der Werte fehlt, erzeugt dies eine künstlich enge Verteilung, die jede nachfolgende Analyse verfälschen wird. Formulieren Sie die Regel in Ihrer Anfrage, wie unten gezeigt, und Sie werden wissen, was getan wurde; bleiben Sie vage, und Sie müssen die Datei erneut öffnen, um es herauszufinden.
response = client.responses.create(
model="gpt-5.6-terra",
input=[{
"role": "user",
"content": [
{"type": "input_text", "text": (
"Bereinigen Sie diese CSV-Datei: "
"- Duplikate entfernen "
"- Fehlende Werte auffüllen (Median für Zahlen, "
" Modus für Kategorien) "
"- Stadtnamen normalisieren (Großschreibung) "
"- Datumsangaben in ISO-Format umwandeln "
"- Ergebnis als bereinigte CSV-Datei exportieren"
)},
{"type": "input_file", "file_id": fichier.id}
]
}],
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}]
)
# Die bereinigte Datei abrufen
for ann in fichiers_generes(response):
telecharger(client, ann, "clients_nettoye.csv")
Verarbeitung von Excel-Dateien
Code Interpreter verarbeitet Excel-Dateien nativ dank openpyxl. Zwei Unterschiede zu CSV verdienen Ihre Aufmerksamkeit. Erstens enthält eine Arbeitsmappe mehrere Tabellenblätter, und eine Anfrage, die eines nicht spezifiziert, lässt das Modell auf dem arbeiten, das es zuerst auswählt; beginnen Sie daher damit, eine Liste der Tabellenblätter zu verlangen, wie im Beispiel. Zweitens enthält Excel Formeln, verschmolzene Zellen und dekorative Kopfzeilen – Elemente, die wie Daten aussehen, aber nicht sind, und die das Modell wissen muss, zu ignorieren, weil Sie es ihm gesagt haben.
with open("budget_2026.xlsx", "rb") as f:
fichier_excel = client.files.create(file=f, purpose="user_data")
response = client.responses.create(
model="gpt-5.6-terra",
input=[{
"role": "user",
"content": [
{"type": "input_text", "text": (
"Diese Excel-Datei enthält mehrere Tabellenblätter. "
"1. Alle verfügbaren Tabellenblätter auflisten "
"2. Für jedes Tabellenblatt eine Zusammenfassung des Inhalts bereitstellen "
"3. Eine Pivot-Tabelle erstellen: Gesamtausgaben "
" nach Abteilung und Quartal "
"4. Das Ergebnis in eine neue Excel-Datei exportieren"
)},
{"type": "input_file", "file_id": fichier_excel.id}
]
}],
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}]
)
Zusammenführen mehrerer Dateien
Das Zusammenführen ist der Fall, bei dem die Code-Ausführung am weitesten vor der manuellen Verarbeitung liegt: vier Quartale bedeuten vier Dateien, deren Spalten fast die gleichen Namen und fast die gleiche Reihenfolge haben. Dieses „fast” ist das Problem, und genau das erkennt ein Programm, während es beim Kopieren und Einfügen maskiert wird. Fordern Sie zusätzlich zu den zusammengeführten Daten ein Zusammenfassungstabelleblatt an: Es dient als Kontrolle, da eine Summe, die nicht der Summe der vier Dateien entspricht, sofort eine fehlgestellte Spalte aufdeckt.
# Mehrere Dateien hochladen
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="user_data")
fichiers_ids.append(fichier.id)
content = [
{"type": "input_text", "text": (
"Diese 4 Excel-Dateien enthalten Verkaufsdaten nach Quartal. "
"Fügen Sie sie in einer einzigen Datei zusammen mit: "
"- Einem 'Data'-Tabellenblatt mit allen Verkäufen "
"- Einem 'Summary'-Tabellenblatt mit Quartalssummen "
"- Einem 'Trends'-Tabellenblatt mit Quartalsänderungen"
)}
]
for fid in fichiers_ids:
content.append({"type": "input_file", "file_id": fid})
response = client.responses.create(
model="gpt-5.6-terra",
input=[{"role": "user", "content": content}],
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}]
)
Verarbeitung von Bildern
Code Interpreter manipuliert Bilder mit Pillow, und Sie müssen klar sehen, was dies abdeckt. Dies ist Bildverarbeitung – Vergrößerung, Konvertierung, Messung, Komposition – nicht visuelle Wahrnehmung: Um zu beschreiben, was ein Foto zeigt, kommen die Sehfähigkeiten des Modells zum Einsatz, nicht die Sandbox. Die beiden kombinieren sich in einem einzigen Aufruf sehr gut, wobei das Modell das Bild betrachtet, während der Code es transformiert.
Analyse und Transformation
with open("photo_produit.jpg", "rb") as f:
fichier_image = client.files.create(file=f, purpose="user_data")
response = client.responses.create(
model="gpt-5.6-terra",
input=[{
"role": "user",
"content": [
{"type": "input_text", "text": (
"Analysieren Sie dieses Bild: "
"1. Dimensionen, Format, Dateigröße "
"2. Farbbild "
"3. Erstellen Sie 3 Versionen: "
" - Miniaturansicht 200x200 "
" - Schwarz-Weiß-Version "
" - Version mit um 30% erhöhtem Kontrast"
)},
{"type": "input_file", "file_id": fichier_image.id}
]
}],
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}]
)
Batch-Verarbeitung
Batch-Verarbeitung verlagert die Frage auf Kosten und Limits. Jedes hochgeladene Bild verbraucht Speicherplatz und belegt die Sandbox, deren Platz und Lebensdauer begrenzt sind: Jenseits einer Handvoll Dateien kostet ein lokales Skript mit Pillow weniger und läuft schneller. Reservieren Sie Batch-Verarbeitung für Fälle, in denen die Entscheidung schwer zu codieren ist – Zuschneiden, das vom Inhalt abhängt, ein Wasserzeichen, das dort platziert wird, wo das Bild am einheitlichsten ist – und lassen Sie mechanische Transformationen für Ihre eigene Maschine.
# Mehrere Bilder hochladen
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="user_data")
images_ids.append(fichier.id)
content = [
{"type": "input_text", "text": (
"Vergrößern Sie alle diese Bilder auf 800x600 Pixel, "
"fügen Sie ein halbtransparentes 'DRAFT'-Wasserzeichen hinzu, "
"und komprimieren Sie sie als JPEG mit Qualität 85."
)}
]
for fid in images_ids:
content.append({"type": "input_file", "file_id": fid})
response = client.responses.create(
model="gpt-5.6-terra",
input=[{"role": "user", "content": content}],
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}]
)
Muster: Kompletter ETL-Pipeline
def pipeline_etl(fichier_source: str, transformations: str) -> dict:
"""ETL-Pipeline (Extract-Transform-Load) mit Code Interpreter."""
# Extrahieren: Quelldatei hochladen
with open(fichier_source, "rb") as f:
fichier = client.files.create(file=f, purpose="user_data")
# Transformieren: Transformationen anwenden
response = client.responses.create(
model="gpt-5.6-terra",
input=[{
"role": "user",
"content": [
{"type": "input_text", "text": transformations},
{"type": "input_file", "file_id": fichier.id}
]
}],
tools=[{"type": "code_interpreter", "container": {"type": "auto"}}],
instructions=(
"Führen Sie jeden Transformationsschritt nacheinander aus. "
"Zeigen Sie nach jedem Schritt eine Zusammenfassung an: "
"Anzahl der Zeilen vor/nachher, modifizierte Spalten. "
"Exportieren Sie das Endergebnis als CSV und Excel."
)
)
# Laden: Generierte Dateien abrufen
fichiers_sortie = []
for ann in fichiers_generes(response):
telecharger(client, ann, ann.filename)
fichiers_sortie.append(ann.filename)
return {
"rapport": response.output_text,
"fichiers_generes": fichiers_sortie
}
# Verwendung
resultat = pipeline_etl(
"donnees_brutes.csv",
"1. Leere Spalten entfernen "
"2. Beträge von Cent in Euro umwandeln "
"3. Eine 'quarter'-Spalte basierend auf dem Datum hinzufügen "
"4. Verkäufe nach Quartal und Kategorie aggregieren "
"5. Prozentuale Änderungen berechnen"
)
Unterstützte Formate
| Format | Erweiterungen | Lesen | Schreiben |
|---|---|---|---|
| CSV | .csv | Ja | Ja |
| Excel | .xlsx, .xls | Ja | Ja |
| JSON | .json | Ja | Ja |
| Bilder | .png, .jpg, .gif, .bmp | Ja | Ja |
| Text | .txt, .md | Ja | Ja |
| Begrenztes Lesen | Nein |
Kernaussagen
- Dateien mit
purpose="user_data"hochladen und sie überinput_fileübergeben - Das Modell verarbeitet CSV, mehrblättrige Excel-Dateien und Bilder nativ
- Generierte Dateien aus den
container_file_citation-Anmerkungen abrufen und sie über die Container-API herunterladen (Lektion 10) - Bei großen Dateien Batch-Verarbeitung anfordern
- Mehrere Dateien in einem einzigen Aufruf für Zusammenführungen und Vergleiche kombinieren