loc vs iloc: Der Unterschied, der dir Zeit und Fehler spart
Wenn ich mit Pandas arbeite, ist loc vs iloc eines der ersten Themen, das ich sauber im Kopf haben will. Warum? Weil fast jeder Anfänger hier Fehler macht. Und ehrlich: Auch viele Fortgeschrittene verwechseln die beiden noch regelmäßig.
Die gute Nachricht: Der Unterschied ist simpel. Wenn du ihn einmal verstanden hast, arbeitest du schneller, sauberer und mit weniger Bugs.
loc vs iloc: Die Kurzversion
Hier ist die einfache Regel:
- loc = Zugriff über Labels
- iloc = Zugriff über Integer-Positionen
Das bedeutet:
- loc arbeitet mit den echten Index- und Spaltennamen.
- iloc arbeitet mit der Position, also 0, 1, 2, 3 und so weiter.
Wenn du dir nur einen Satz merken willst, dann diesen: loc denkt in Namen, iloc denkt in Reihenfolge.
loc vs iloc: So funktioniert loc
loc benutzt Labels. Also zum Beispiel Indexnamen, Datumswerte oder Spaltennamen.
df.loc['Max']
df.loc[:, 'Umsatz']
df.loc['Max', 'Umsatz']
Ich nutze loc, wenn ich genau weiß, nach welchem Namen ich suche. Das ist sauber und lesbar.
Ein wichtiger Punkt: Bei loc ist der Bereich inklusive. Wenn ich schreibe:
df.loc['A':'C']
dann sind A, B und C drin. Das überrascht viele.
Merke: Bei loc ist der Endwert dabei.
loc vs iloc: So funktioniert iloc
iloc arbeitet nur mit Positionen. Keine Namen. Keine Labels. Nur Zahlen.
df.iloc[0]
df.iloc[:, 2]
df.iloc[0, 2]
Wenn ich mit iloc arbeite, zähle ich also von oben nach unten oder von links nach rechts.
Hier ist der zweite wichtige Punkt: Bei iloc ist der Bereich exklusiv. Wenn ich schreibe:
df.iloc[0:3]
dann bekomme ich die Zeilen 0, 1 und 2. Die 3 ist nicht mehr drin.
Merke: Bei iloc ist der Endwert nicht dabei.
loc vs iloc: Ein einfaches Beispiel
Stell dir vor, ich habe diesen DataFrame:
import pandas as pd
df = pd.DataFrame({
'Name': ['Anna', 'Ben', 'Clara'],
'Umsatz': [120, 150, 180]
}, index=['A', 'B', 'C'])
Dann ist das hier möglich:
df.loc['B']
Das gibt mir die Zeile mit dem Index-Label B.
Und das hier:
df.iloc[1]
Das gibt mir die zweite Zeile zurück, also ebenfalls Ben.
Beides liefert hier dasselbe Ergebnis. Aber aus völlig unterschiedlichen Gründen.
loc vs iloc: Die häufigsten Fehler
Die meisten Probleme entstehen, weil Leute die Logik vermischen. Ich halte es simpel und vermeide diese Fehler:
- loc mit Zahlen verwenden und denken, es sei immer Position.
- iloc mit Spaltennamen nutzen und wundern, warum es fehlschlägt.
- Den Unterschied bei den Slices vergessen: loc inklusiv, iloc exklusiv.
- Annehmen, dass der Index immer automatisch 0, 1, 2 ist.
Gerade der letzte Punkt ist gefährlich. Sobald dein Index anders aussieht, kann loc vs iloc komplett verschiedene Ergebnisse liefern.
loc vs iloc: Wann ich welches nutze
Ich entscheide nach dem Ziel, nicht nach Gewohnheit.
Ich nutze loc, wenn ich:
- mit Spaltennamen arbeite
- einen benannten Index habe
- Lesbarkeit wichtiger ist als reine Position
- gezielt nach Labels filtern will
Ich nutze iloc, wenn ich:
- nach der Position greifen will
- die erste oder letzte Zeile brauche
- mit dynamischen Positionen arbeite
- Indexnamen egal sind
Meine Regel: Wenn ich den Namen kenne, nehme ich loc. Wenn ich nur die Stelle kenne, nehme ich iloc.
loc vs iloc: Praktische Beispiele aus dem Alltag
Hier sind typische Fälle, in denen ich beide nutze:
# Erste Zeile
df.iloc[0]
# Letzte Zeile
df.iloc[-1]
# Bestimmte Spalte über Namen
df.loc[:, 'Umsatz']
# Erste drei Zeilen
df.iloc[:3]
# Zeilen von Label A bis C
df.loc['A':'C']
# Zeilen und Spalten gezielt auswählen
df.loc['B', 'Umsatz']
Das ist nicht kompliziert. Du brauchst nur eine klare Denkweise.
loc vs iloc: Meine schnelle Entscheidungsregel
Wenn ich in unter einer Sekunde entscheiden muss, denke ich so:
- Habe ich Namen? Dann loc.
- Habe ich Positionen? Dann iloc.
- Will ich einen Bereich? Dann Slice prüfen: inklusiv oder exklusiv.
- Will ich Lesbarkeit? Dann meistens loc.
Das spart Zeit. Und Zeit ist in Data-Work direkt Geld.
loc vs iloc: Warum das im echten Leben wichtig ist
In kleinen Beispielen wirkt der Unterschied harmlos. In echten Projekten nicht.
Wenn du Daten filterst, Reports baust oder Modelle vorbereitest, kann ein falscher Zugriff dein Ergebnis komplett verzerren. Dann analysierst du nicht die richtigen Zeilen. Und das kostet dich Vertrauen, Zeit und Qualität.
Sauberer Zugriff ist kein Detail. Er ist die Basis für zuverlässige Analyse.
loc vs iloc: Offizielle Ressourcen
Wenn du die Doku direkt sehen willst, nutze diese echten Ressourcen:
Fazit zu loc vs iloc
loc vs iloc ist kein kleines Detail. Es ist ein Kernkonzept in Pandas. Ich nutze loc für Labels und iloc für Positionen. Wenn du diesen Unterschied sauber beherrschst, wirst du deutlich schneller, sicherer und präziser arbeiten.
Mein Rat: Hör auf, beide zu vermischen. Denk in Namen oder Positionen — und wähle dann das passende Werkzeug. Genau so arbeite ich mit loc vs iloc.