Wie erhalte ich die Zeilenanzahl eines Pandas DataFrame?
Diese Tabelle fasst die verschiedenen Situationen zusammen, in denen Sie der Vollständigkeit halber etwas in einem DataFrame (oder einer Serie) zählen möchten, sowie die empfohlenen Methoden.

Fußnoten
DataFrame.countSeriesGibt die Anzahl für jede Spalte als zurück, da die Anzahl ungleich Null je nach Spalte variiert.
DataFrameGroupBy.sizeGibt a zurück Series, da alle Spalten in derselben Gruppe dieselbe Zeilenanzahl haben.
DataFrameGroupBy.countGibt a zurück DataFrame, da die Anzahl der Nicht-Nullen in den Spalten derselben Gruppe unterschiedlich sein kann. Verwenden Sie df.groupby(...)['x'].count()"x" als zu zählende Spalte, um die gruppenweise Nicht-Null-Zählung für eine bestimmte Spalte zu erhalten.
Beispiele für minimale Codes
Im Folgenden zeige ich Beispiele für jede der in der obigen Tabelle beschriebenen Methoden. Zunächst das Setup -
df = pd.DataFrame({
'A': list('aabbc'), 'B': ['x', 'x', np.nan, 'x', np.nan]})
s = df['B'].copy()
df
A B
0 a x
1 a x
2 b NaN
3 b x
4 c NaN
s
0 x
1 x
2 NaN
3 x
4 NaN
Name: B, dtype: object
Zeilenanzahl eines Datenrahmens: len(df), df.shape[0]oderlen(df.index)
len(df)
# 5
df.shape[0]
# 5
len(df.index)
# 5
Es erscheint unsinnig, die Leistung von Operationen mit konstanter Zeit zu vergleichen, insbesondere wenn der Unterschied auf der Ebene "Ernsthaft, mach dir keine Sorgen" liegt. Dies scheint jedoch ein Trend mit anderen Antworten zu sein, daher mache ich der Vollständigkeit halber dasselbe.
Von den 3 oben len(df.index)genannten Methoden ist (wie in anderen Antworten erwähnt) die schnellste.
Hinweis
- Alle oben genannten Methoden sind Operationen mit konstanter Zeit, da es sich um einfache Attributsuchen handelt.
df.shape(ähnlich wie ndarray.shape) ist ein Attribut, das ein Tupel von zurückgibt (# Rows, # Cols). Zum Beispiel df.shapegibt (8,
2)für das Beispiel hier.
Spaltenanzahl eines Datenrahmen: df.shape[1],len(df.columns)
df.shape[1]
# 2
len(df.columns)
# 2
Analog zu len(df.index), len(df.columns)ist die schnellere der beiden Methoden (aber braucht mehr Zeichen - Typ).
Zeilenanzahl einer Serie: len(s), s.size,len(s.index)
len(s)
# 5
s.size
# 5
len(s.index)
# 5
s.sizeund len(s.index)sind in Bezug auf die Geschwindigkeit ungefähr gleich. Aber ich empfehle len(df).
Note
size ist ein Attribut und gibt die Anzahl der Elemente zurück (= Anzahl der Zeilen für jede Serie). DataFrames definieren auch ein Größenattribut, das das gleiche Ergebnis wie zurückgibt df.shape[0] * df.shape[1].
Nicht-Null-Zeilenanzahl: DataFrame.countundSeries.count
Die hier beschriebenen Methoden zählen nur Nicht-Null-Werte (dh NaNs werden ignoriert).
Beim Aufrufen DataFrame.countwerden Nicht-NaN-Zählungen für jede Spalte zurückgegeben:
df.count()
A 5
B 3
dtype: int64
Verwenden Sie für Serien Series.counteinen ähnlichen Effekt:
s.count()
# 3
Gruppenweise Zeilenanzahl: GroupBy.size
DataFramesVerwenden Sie für , um DataFrameGroupBy.sizedie Anzahl der Zeilen pro Gruppe zu zählen.
df.groupby('A').size()
A
a 2
b 2
c 1
dtype: int64
Ebenso werden Sie für Seriesverwenden SeriesGroupBy.size.
s.groupby(df.A).size()
A
a 2
b 2
c 1
Name: B, dtype: int64
In beiden Fällen wird a Serieszurückgegeben. Das macht Sinn fürDataFrames da alle Gruppen die gleiche Zeilenanzahl haben.
Gruppenweise Nicht-Null-Zeilenanzahl: GroupBy.count
Ähnlich wie oben, aber GroupBy.countnicht verwenden GroupBy.size. Beachten Sie, dass sizeimmer a zurückgegeben wird Series, während counta zurückgegeben wird, Serieswenn es für eine bestimmte Spalte aufgerufen wird, oder a DataFrame.
Die folgenden Methoden geben dasselbe zurück:
df.groupby('A')['B'].size()
df.groupby('A').size()
A
a 2
b 2
c 1
Name: B, dtype: int64
Inzwischen counthaben wir
df.groupby('A').count()
B
A
a 2
b 1
c 0
... das gesamte GroupBy-Objekt aufgerufen, v / s,
df.groupby('A')['B'].count()
A
a 2
b 1
c 0
Name: B, dtype: int64
Wird in einer bestimmten Spalte aufgerufen.