Die erste Tabelle
Kurz gesagt: pd.read_csv lädt eine CSV-Datei in eine Tabelle (einen DataFrame), und head, shape, info und describe zeigen die Zeilen, die Größe, die Typen und die Kennzahlen, bevor du etwas berechnest.
Problem
„Wie viele Bestellungen haben wir?“
Der Chef schickt dir orders.csv und fragt, wie viele Bestellungen es sind und wie hoch der Durchschnitt ist. Die Versuchung: die Datei öffnen, mean() schreiben und eine Zahl zurückschicken.
Du weißt aber noch nicht, was in der Datei steht. Ist eine Zeile eine Bestellung oder eine Position einer Bestellung? Gibt es leere Zellen? Sind die Zahlen Zahlen oder Text wie „1,60 €“? Der Mittelwert der falschen Spalte liefert eine falsche Antwort, die völlig seriös aussieht.
Deshalb beginnt Analyse mit einem ersten Blick: was in der Tabelle steht, bevor du mit ihr rechnest.
Die Idee
Die Tabelle: read_csv
CSV ist eine Textdatei mit einer Tabelle: Die erste Zeile enthält die Spaltennamen, und jede weitere Zeile ist ein Datensatz, mit Kommas zwischen den Werten. Fast jedes System liefert so etwas: der Shop, die Bank, Excel.
pandas ist die Python-Bibliothek für Tabellen. pd.read_csv liest die Datei und gibt einen DataFrame zurück: eine Tabelle mit Spaltennamen und links einer Nummer für jede Zeile (das ist der Index). head() zeigt die ersten fünf Zeilen:
import pandas as pd ist die Gewohnheit aller: pandas schreibt man pd. Die Datei orders.csv liegt neben dem Code, zusammen mit den anderen Tabellen des Shops: products.csv, customers.csv, order_items.csv, categories.csv und reviews.csv.
Die letzte Zeile hat kein print, und trotzdem erscheint die Tabelle. So arbeitet ein Notebook (Jupyter), in dem Analysten schreiben: Der Wert der letzten Zeile wird von selbst angezeigt.
Die Idee
Wie viele und was: shape und info
shape ist ein Paar (Zeilen, Spalten). info() beschreibt jede Spalte: wie viele Werte sie hat und von welchem Typ:
Lies es von oben nach unten:
- 25 Zeilen, 6 Spalten. Keine Spalte ist ganz leer.
category_idhat 24 Werte von 25: Ein Produkt hat keine Kategorie.- Die Typen:
int64sind ganze Zahlen,float64Dezimalzahlen,strText. Das Datumadded_atist Text: pandas erkennt ein Datum nicht von selbst. Dazu kommen wir noch.
Genauer, für Neugierige
Der Typ str ist neu in pandas 3 (2026). In älteren Versionen und in vielen Artikeln ist Text object. Die Bedeutung ist dieselbe: Die Spalte enthält Strings.
Die Idee
Die Zahlen in Kürze: describe
describe() fasst eine numerische Spalte zusammen: wie viele Werte, der Mittelwert (mean), die Streuung (std), der kleinste und der größte Wert und die drei Viertel (25 %, 50 %, 75 %):
Der mittlere Preis ist 7,04 €, und 50 % (der Median, der Preis in der Mitte) ist 2,80 €. Das ist ein großer Abstand: Ein paar teure Produkte (das Messerset für 39 €, die Pfanne für 24,90 €) ziehen den Mittelwert hoch. Sag dem Chef „unser Produkt kostet im Schnitt 7 €“, und er stellt sich einen anderen Shop vor.
Ob man den Mittelwert oder den Median nimmt, gehört ins Statistikmodul. Vorerst gilt die Regel: Schau dir beide an.
Sieh es dir an
Welches Produkt keine Kategorie hat
info() hat gesagt, dass eine Kategorie fehlt. Hier ist das Produkt:
Die Geschenkkarte ist weder Lebensmittel noch Haushalt. Die Lücke ist echte Information, kein Fehler in der Datei. Ihr Bestand ist 999: ein Platzhalter, der „unbegrenzt“ bedeutet. Zähl den Bestand im Lager zusammen, und er verfälscht das Ergebnis.
Das bringt der erste Blick: Vor der ersten Summe weißt du, was nicht ist, was es scheint.
Probier es aus
Die Bestellpositionen
Wie viele Zeilen hat order_items.csv, und wie viele Stück eines Produkts stehen im Durchschnitt auf einer Position? Lege sie in rows und avg_qty ab.
Lösung
import pandas as pd
items = pd.read_csv('order_items.csv')
rows = len(items)
avg_qty = items['quantity'].mean()rows = len(items) (152 Zeilen) und avg_qty = items['quantity'].mean() (etwa 2,41 Stück). items.shape ist ein Paar (152, 4) und taugt deshalb nicht für rows. Eine Zeile ist hier ein Produkt in einer Bestellung, nicht die ganze Bestellung: Es gibt 60 Bestellungen.
Übung
Die neuesten Bestellungen
head() hat ein Geschwister: tail() zeigt die letzten Zeilen. Beide nehmen die gewünschte Zahl der Zeilen: head(10).
Die Bestelldatei ist nach Datum sortiert. Lege die letzten 4 Bestellungen in latest ab.
Lösung
import pandas as pd
orders = pd.read_csv('orders.csv')
latest = orders.tail(4)
latestlatest = orders.tail(4): die Bestellungen 57–60, vom 5. bis 19. Oktober 2026. Zwei sind neu, eine ist bezahlt und eine versendet. Die neuesten sind noch nicht geliefert, deshalb verfälschen sie bei der Frage „wie viel liefern wir aus“ die Zahlen, wenn du sie nicht beiseitelegst.
Genauer, für Neugierige
Eine Datei, die aus Excel in vielen europäischen Sprachen exportiert wurde, nutzt Semikolons zwischen den Werten und ein Komma in den Zahlen: 1,60. Dann heißt es pd.read_csv('file.csv', sep=';', decimal=','). Text aus alten Programmen liegt manchmal in einer regionalen Kodierung wie Windows-1251: encoding='cp1251'. Ein Excel-Blatt liest man direkt mit pd.read_excel, eine Datenbanktabelle mit pd.read_sql (siehe den Kurs Datenbanken und SQL).
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Geht weiter in: Das NumPy-Array · Vektorisierung · Zusammenfassungen und fehlende Werte · Broadcasting: die Zahl, die Zeile und die Spalte
- Aufgaben zum Thema: Willkommen