Ich versuche mit Pandas die Anzahl der Zeilen des Datenrahmens df zu ermitteln, und hier ist mein Code.
Methode 1:
total_rows = df.count
print total_rows +1
Methode 2:
total_rows = df['First_columnn_label'].count
print total_rows +1
Beide Codefragmente geben mir diesen Fehler:
TypeError: Nicht unterstützte Operandentypen für +: 'instancemethod' und 'int'
Was mache ich falsch?
df.count()
nur die Anzahl der Nicht-NA / NaN-Zeilen für jede Spalte zurückgegeben wird. Sie solltendf.shape[0]
stattdessen verwenden, wodurch die Anzahl der Zeilen immer korrekt angezeigt wird.Antworten:
Sie können die
.shape
Eigenschaft oder nur verwendenlen(DataFrame.index)
. Es gibt jedoch bemerkenswerte Leistungsunterschiede (len(DataFrame.index)
ist am schnellsten):EDIT: Wie @ Dan Allen bemerkt in den Kommentaren
len(df.index)
unddf[0].count()
sind nicht austauschbar wiecount
ausschließtNaN
s,quelle
shape
in der interaktiven Arbeit anstelle von len (df) verwenden sollten: Wenn Sie verschiedene Filter ausprobieren, muss ich oft wissen, wie viele Elemente noch vorhanden sind. Mit Shape kann ich das sehen, indem ich nach dem Filtern einfach .shape hinzufüge. Mit len () wird das Bearbeiten der Befehlszeile viel umständlicher und geht hin und her.df.empty
ist dies die beste Option.df.shape[0]
schneller alslen(df)
oderlen(df.columns)
? Da 1 ns (Nanosekunde) = 1000 µs (Mikrosekunde), also 1,17 µs = 1170 ns, was bedeutet, dass es ungefähr dreimal langsamer als 381 ns istAngenommen,
df
Ihr Datenrahmen ist dann:Oder prägnanter:
quelle
Verwenden Sie
len(df)
. Dies funktioniert ab Pandas 0.11 oder vielleicht sogar früher.__len__()
ist derzeit (0.12) dokumentiert mitReturns length of index
. Timing-Informationen, richten Sie sie wie in der Antwort von root ein:Aufgrund eines zusätzlichen Funktionsaufrufs ist es etwas langsamer als der
len(df.index)
direkte Aufruf , dies sollte jedoch in den meisten Anwendungsfällen keine Rolle spielen.quelle
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.
Beispiele für minimale Codes
Im Folgenden zeige ich Beispiele für jede der in der obigen Tabelle beschriebenen Methoden. Zunächst das Setup -
Zeilenanzahl eines Datenrahmens:
len(df)
,df.shape[0]
oderlen(df.index)
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.Spaltenanzahl eines Datenrahmen:
df.shape[1]
,len(df.columns)
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)
s.size
undlen(s.index)
sind in Bezug auf die Geschwindigkeit ungefähr gleich. Aber ich empfehlelen(df)
.Nicht-Null-Zeilenanzahl:
DataFrame.count
undSeries.count
Die hier beschriebenen Methoden zählen nur Nicht-Null-Werte (dh NaNs werden ignoriert).
Beim Aufrufen
DataFrame.count
werden Nicht-NaN-Zählungen für jede Spalte zurückgegeben:Verwenden Sie für Serien
Series.count
einen ähnlichen Effekt:Gruppenweise Zeilenanzahl:
GroupBy.size
DataFrames
Verwenden Sie für , umDataFrameGroupBy.size
die Anzahl der Zeilen pro Gruppe zu zählen.Ebenso werden Sie für
Series
verwendenSeriesGroupBy.size
.In beiden Fällen wird a
Series
zurückgegeben. Das macht Sinn fürDataFrames
da alle Gruppen die gleiche Zeilenanzahl haben.Gruppenweise Nicht-Null-Zeilenanzahl:
GroupBy.count
Ähnlich wie oben, aber
GroupBy.count
nicht verwendenGroupBy.size
. Beachten Sie, dasssize
immer a zurückgegeben wirdSeries
, währendcount
a zurückgegeben wird,Series
wenn es für eine bestimmte Spalte aufgerufen wird, oder aDataFrame
.Die folgenden Methoden geben dasselbe zurück:
Inzwischen
count
haben wir... das gesamte GroupBy-Objekt aufgerufen, v / s,
Wird in einer bestimmten Spalte aufgerufen.
quelle
TL; DR
verwenden
len(df)
len()
ist dein Freund, kann es für Zeilenzählungen als verwendet werdenlen(df)
.Alternativ können Sie auf alle Zeilen nach
df.index
und alle Spalten nach zugreifendf.columns
und, da Sie dielen(anyList)
zum Abrufen der Anzahl der Listen,len(df.index)
zum Abrufen der Anzahl der Zeilen undlen(df.columns)
für die Anzahl der Spalten verwenden können.Oder Sie können verwenden,
df.shape
was die Anzahl der Zeilen und Spalten zusammen zurückgibt, wenn Sie auf die Anzahl der nur verwendeten Zeilendf.shape[0]
und für die Anzahl der nur verwendeten Spalten zugreifen möchten :df.shape[1]
.quelle
Abgesehen von den obigen Antworten kann use verwendet werden
df.axes
, um das Tupel mit Zeilen- und Spaltenindizes abzurufen und dann dielen()
Funktion zu verwenden:quelle
... auf der Antwort von Jan-Philip Gehrcke aufbauen.
Der Grund warum
len(df)
oderlen(df.index)
ist schneller alsdf.shape[0]
. Schauen Sie sich den Code an. df.shape ist eine@property
Methode, die eine DataFrame-Methode ausführt, dielen
zweimal aufgerufen wird .Und unter der Haube von len (df)
len(df.index)
wird etwas schneller sein alslen(df)
da es einen Funktionsaufruf weniger hat, aber dies ist immer schneller alsdf.shape[0]
quelle
Ich komme aus dem
R
Hintergrund zu Pandas , und ich sehe, dass Pandas komplizierter sind, wenn es um die Auswahl von Zeilen oder Spalten geht. Ich musste eine Weile damit ringen, dann fand ich einige Möglichkeiten, damit umzugehen:Abrufen der Anzahl der Spalten:
Ermitteln der Anzahl der Zeilen:
quelle
df.shape
. Es gibt die Anzahl der Zeilen bzw. Spalten zurück.Wenn Sie die Zeilenanzahl in der Mitte einer verketteten Operation erhalten möchten, können Sie Folgendes verwenden:
Beispiel:
Dies kann nützlich sein, wenn Sie keine lange Anweisung in eine
len()
Funktion einfügen möchten .Sie könnten
__len__()
stattdessen verwenden,__len__()
sieht aber ein bisschen komisch aus.quelle
count = len(df.reset_index())
alscount = df.reset_index().pipe(len)
. Ersteres ist nur eine Attributsuche ohne Funktionsaufruf.Hey du kannst das auch machen:
df
Angenommen , es ist Ihr Datenrahmen. Danndf.shape
gibt Ihnen die Form Ihres Datenrahmens dh(row,col)
Weisen Sie daher den folgenden Befehl zu, um den erforderlichen Befehl zu erhalten
quelle
Für dataframe df eine gedruckte, durch Kommas formatierte Zeilenanzahl, die beim Erkunden von Daten verwendet wird:
Beispiel:
quelle
Eine alternative Methode, um die Anzahl der Zeilen in einem Datenrahmen herauszufinden, die meiner Meinung nach die am besten lesbare Variante ist, ist
pandas.Index.size
.Beachten Sie Folgendes, als ich die akzeptierte Antwort kommentierte:
quelle
Ich bin nicht sicher, ob dies funktionieren würde (Daten könnten weggelassen werden), aber dies könnte funktionieren:
Wenn Sie dies verwenden, können Sie die Anzahl der Zeilen ermitteln, indem Sie das Code-Snippet ausführen und die Zeilennummer anzeigen, die Sie erhalten haben.
quelle
df
Beides kann ( ist der Name des DataFrame):Methode 1: Verwenden der
len
Funktion:len(df)
gibt die Anzahl der Zeilen in einem DataFrame mit dem Namen andf
.Methode 2: Verwenden der
count
Funktion:df[col].count()
zählt die Anzahl der Zeilen in einer bestimmten Spaltecol
.df.count()
gibt die Anzahl der Zeilen für alle Spalten an.quelle