HOWTO · Pandas

So erhalten Sie die Zeilenanzahl eines Pandas DataFrame

Erfahren Sie, wie Sie die Zeilenanzahl eines Pandas DataFrame mit `shape`, `len()` oder dem Index ermitteln, Zeilen von Spalten unterscheiden und Zeilen zählen, die eine Bedingung erfüllen.

Auf dieser Seite

Um die Anzahl der Zeilen in einem Pandas DataFrame zu ermitteln, verwenden Sie df.shape[0] oder len(df). Das Attribut shape gibt beide Dimensionen zurück: Der erste Wert ist die Zeilenanzahl, der zweite die Spaltenanzahl. Um nur die Zeilen zu zählen, die eine Bedingung erfüllen, summieren Sie eine boolesche Maske.

Zeilen- und Spaltenanzahl mit DataFrame.shape ermitteln

DataFrame.shape ist ein Attribut, das ein Tupel in der Reihenfolge (rows, columns) zurückgibt. Der Index 0 steht für die Zeilenanzahl, der Index 1 für die Anzahl der Spalten. Das ist hilfreich, wenn Sie beide Dimensionen prüfen oder die Zeilenanzahl ermitteln möchten, ohne die Werte einer bestimmten Spalte zu zählen.

Das folgende Beispiel erstellt einen kleinen DataFrame und gibt beide Dimensionen aus:

import pandas as pd

data = {
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [25, 30, 35],
    "City": ["New York", "Los Angeles", "Chicago"],
}
df = pd.DataFrame(data)

print("Rows:", df.shape[0])
print("Columns:", df.shape[1])

Für die reine Zeilenanzahl ist df.shape[0] der passende Ausdruck. Verwenden Sie dafür nicht df.shape[1]: Dieser Wert gibt die Spaltenanzahl an. Bei einer Tabelle mit drei Zeilen und drei Spalten wären beide Werte zwar gleich, sie bezeichnen aber unterschiedliche Dimensionen.

Zeilenanzahl mit len() oder dem Index ermitteln

Pythons eingebaute Funktion len() gibt die Zeilenanzahl zurück, wenn Sie ihr einen DataFrame übergeben: len(df). Das ist eine knappe Möglichkeit, wenn Sie nur die Zeilenanzahl benötigen. len(df.index) ergibt denselben Wert, indem die Zeilenindizes des DataFrame gezählt werden; len(df.axes[0]) greift auf die Länge der Zeilenachse zu. Für die Spaltenanzahl entspricht len(df.axes[1]) dem Wert von df.shape[1].

Diese Varianten zählen Zeilen unabhängig von den Indexbezeichnungen. Sie zählen keine fehlenden Werte in einer ausgewählten Spalte. Um Zeilen ohne fehlende Werte zu zählen, filtern Sie die Daten zunächst mit df.dropna() und verwenden anschließend len(df.dropna()). Standardmäßig entfernt dropna() alle Zeilen, die in irgendeiner Spalte einen fehlenden Wert enthalten. Mit subset=["Age"] können Sie die Prüfung auf eine bestimmte Spalte beschränken.

Sie müssen .len() nicht auf einem DataFrame aufrufen: len() ist eine Python-Funktion. Schreiben Sie daher len(df) statt df.len() oder .len(df.index). Verwenden Sie im Zählausdruck den DataFrame, dessen Zeilen Sie zählen möchten, zum Beispiel einen zuvor gefilterten DataFrame.

Zeilen zählen, die eine Bedingung erfüllen

Erstellen Sie aus einem Spaltenvergleich eine boolesche Maske und rufen Sie anschließend .sum() darauf auf. In einer booleschen Series zählt jeder Wert True als eins und jeder Wert False als null. Die Summe gibt daher die Anzahl der passenden Zeilen an. Dieses vektorisierte Vorgehen eignet sich für einen einzelnen Vergleich und lässt sich auf mehrere Bedingungen erweitern.

import pandas as pd

df = pd.DataFrame({"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35]})
is_over_28 = df["Age"] > 28
matching_rows = is_over_28.sum()
print(matching_rows)

Für mehrere Vergleiche setzen Sie jeden Vergleich in Klammern und verbinden sie mit & für UND oder | für ODER. Der Ausdruck (df["Age"] > 28) & (df["Age"] < 35) zählt beispielsweise Zeilen, deren Alter innerhalb beider Grenzen liegt. Summieren Sie die resultierende Maske, um die Anzahl zu erhalten. Verwenden Sie Pythons and oder or nicht zwischen vollständigen Pandas-Series.

Um unterschiedliche Zeilen zu zählen, entfernen Sie vor dem Zählen Duplikate: len(df.drop_duplicates()). Damit beantworten Sie eine andere Frage als beim Zählen aller Zeilen, denn nach drop_duplicates() werden wiederholte Datensätze nur einmal berücksichtigt. Wählen Sie den Ausdruck danach aus, ob Sie alle Zeilen, gefilterte Zeilen oder unterschiedliche Datensätze zählen möchten.