In der Dokumentation heißt es, dass die Größe "Anzahl der Elemente im NDFrame zurückgeben" und "Serie mit Anzahl der Nicht-NA / Null-Beobachtungen über der angeforderten Achse zurückgeben. Funktioniert auch mit Nicht-Gleitkommadaten (erkennt NaN und Keine)"
Ich denke, dass count auch einen DataFrame zurückgibt, während die Größe einer Serie?
Mr_and_Mrs_D
1
Die Funktion .size () ruft nur den aggregierten Wert der jeweiligen Spalte ab, während .column () für jede Spalte verwendet wird.
Nachiket
@ Mr_und_Mrs_D Größe gibt eine Ganzzahl zurück
boardtc
@boardtc df.size gibt eine Zahl zurück - die groupby-Methoden werden hier erläutert, siehe die Links in der Frage.
Mr_and_Mrs_D
Was meine Frage betrifft - Anzahl und Größe geben tatsächlich DataFrame und Series zurück, wenn sie an eine DataFrameGroupBy-Instanz "gebunden" sind - in der Frage sind sie an SeriesGroupBy gebunden, sodass beide eine Series-Instanz zurückgeben
Mr_and_Mrs_D
22
Was ist der Unterschied zwischen Größe und Anzahl bei Pandas?
Die anderen Antworten haben auf den Unterschied hingewiesen, es ist jedoch nicht ganz richtig zu sagen, " sizezählt NaNs, während countdies nicht der Fall ist". Während sizeNaNs tatsächlich gezählt werden, ist dies tatsächlich eine Folge der Tatsache, dass sizedie Größe (oder die Länge) des Objekts zurückgegeben wird, auf das es aufgerufen wird. Dazu gehören natürlich auch Zeilen / Werte, die NaN sind.
Zusammenfassend sizeergibt sich also die Größe der Serie / des DataFrame 1 ,
df = pd.DataFrame({'A':['x','y', np.nan,'z']})
df
A0 x1 y2NaN3 z
df.A.size# 4
... während countdie Nicht-NaN-Werte gezählt werden:
df.A.count()# 3
Beachten Sie, dass dies sizeein Attribut ist (ergibt das gleiche Ergebnis wie len(df)oder len(df.A)). countist eine Funktion.
1. DataFrame.sizeist auch ein Attribut und gibt die Anzahl der Elemente im DataFrame zurück (Zeilen x Spalten).
Verhalten mit GroupBy- Ausgabestruktur
Neben dem grundlegenden Unterschied gibt es auch den Unterschied in der Struktur der erzeugten Ausgabe beim Aufruf GroupBy.size()vs GroupBy.count().
df = pd.DataFrame({'A': list('aaabbccc'),'B':['x','x', np.nan, np.nan, np.nan, np.nan,'x','x']})
df
A B0 a x1 a x2 a NaN3 b NaN4 b NaN5 c NaN6 c x7 c x
Erwägen,
df.groupby('A').size()
A
a 3
b 2
c 3
dtype: int64
Gegen,
df.groupby('A').count()
B
A
a 2
b 0
c 2
GroupBy.countGibt einen DataFrame zurück, wenn Sie countalle Spalten aufrufen , während GroupBy.sizeeine Serie zurückgegeben wird.
Der Grund dafür sizeist , dass dies für alle Spalten gleich ist, sodass nur ein einziges Ergebnis zurückgegeben wird. In der Zwischenzeit wird das countfür jede Spalte aufgerufen, da die Ergebnisse davon abhängen würden, wie viele NaNs jede Spalte hat.
Verhalten mit pivot_table
Ein weiteres Beispiel ist die pivot_tableBehandlung dieser Daten. Angenommen, wir möchten die Kreuztabelle von berechnen
df
A B001101212302400
pd.crosstab(df.A, df.B)# Result we expect, but with `pivot_table`.
B 012
A 01211001
Mit pivot_tablekönnen Sie Folgendes ausgeben size:
df.pivot_table(index='A', columns='B', aggfunc='size', fill_value=0)
B 012
A 01211001
Funktioniert aber countnicht; Ein leerer DataFrame wird zurückgegeben:
Ich glaube, der Grund dafür ist, 'count'dass dies für die Serie erfolgen muss, die an das valuesArgument übergeben wird, und wenn nichts übergeben wird, beschließt Pandas, keine Annahmen zu treffen.
Nur um ein wenig zu @ Edchums Antwort hinzuzufügen, selbst wenn die Daten keine NA-Werte haben, ist das Ergebnis von count () anhand des vorherigen Beispiels ausführlicher:
grouped = df.groupby('a')
grouped.count()Out[197]:
b c
a 022111223
grouped.size()Out[198]:
a021123
dtype: int64
Es scheint sizeein elegantes Äquivalent zu countPandas zu sein.
QM.py
@ QM.py NEIN, ist es nicht. Der Grund für den Unterschied in der groupbyAusgabe wird hier erläutert .
CS95
1
Wenn es sich um normale Datenrahmen handelt, besteht der einzige Unterschied darin, dass NAN-Werte einbezogen werden. Dies bedeutet, dass bei der Zählung der Zeilen keine NAN-Werte berücksichtigt werden.
Wenn wir diese Funktionen jedoch mit dem groupbythen verwenden, count()müssen wir , um die richtigen Ergebnisse zu erhalten, ein beliebiges numerisches Feld mit dem verknüpfen groupby, um die genaue Anzahl der Gruppen zu erhalten, size()für die diese Art der Zuordnung nicht erforderlich ist.
Zusätzlich zu allen oben genannten Antworten möchte ich auf einen weiteren Unterschied hinweisen, der mir bedeutsam erscheint.
Sie können die DatarameGröße und Anzahl von Panda mit der VectorsGröße und Länge von Java korrelieren . Wenn wir einen Vektor erstellen, wird ihm ein vordefinierter Speicher zugewiesen. Wenn wir uns der Anzahl der Elemente nähern, die es beim Hinzufügen von Elementen belegen kann, wird ihm mehr Speicher zugewiesen. In ähnlicher Weise DataFrameerhöht sich beim Hinzufügen von Elementen der ihm zugewiesene Speicher.
Das Größenattribut gibt die Anzahl der Speicherzellen an, die zugeordnet sind, DataFramewährend count die Anzahl der Elemente angibt, die tatsächlich vorhanden sind DataFrame. Beispielsweise,
Sie können sehen, obwohl es 3 Zeilen gibt DataFrame, seine Größe ist 6.
Diese Antwort deckt Größen- und Zählunterschiede in Bezug auf DataFrameund nicht ab Pandas Series. Ich habe nicht überprüft, was passiert mitSeries
Antworten:
size
enthältNaN
Werte,count
nicht:quelle
Die anderen Antworten haben auf den Unterschied hingewiesen, es ist jedoch nicht ganz richtig zu sagen, "
size
zählt NaNs, währendcount
dies nicht der Fall ist". Währendsize
NaNs tatsächlich gezählt werden, ist dies tatsächlich eine Folge der Tatsache, dasssize
die Größe (oder die Länge) des Objekts zurückgegeben wird, auf das es aufgerufen wird. Dazu gehören natürlich auch Zeilen / Werte, die NaN sind.Zusammenfassend
size
ergibt sich also die Größe der Serie / des DataFrame 1 ,... während
count
die Nicht-NaN-Werte gezählt werden:Beachten Sie, dass dies
size
ein Attribut ist (ergibt das gleiche Ergebnis wielen(df)
oderlen(df.A)
).count
ist eine Funktion.1.
DataFrame.size
ist auch ein Attribut und gibt die Anzahl der Elemente im DataFrame zurück (Zeilen x Spalten).Verhalten mit
GroupBy
- AusgabestrukturNeben dem grundlegenden Unterschied gibt es auch den Unterschied in der Struktur der erzeugten Ausgabe beim Aufruf
GroupBy.size()
vsGroupBy.count()
.Erwägen,
Gegen,
GroupBy.count
Gibt einen DataFrame zurück, wenn Siecount
alle Spalten aufrufen , währendGroupBy.size
eine Serie zurückgegeben wird.Der Grund dafür
size
ist , dass dies für alle Spalten gleich ist, sodass nur ein einziges Ergebnis zurückgegeben wird. In der Zwischenzeit wird dascount
für jede Spalte aufgerufen, da die Ergebnisse davon abhängen würden, wie viele NaNs jede Spalte hat.Verhalten mit
pivot_table
Ein weiteres Beispiel ist die
pivot_table
Behandlung dieser Daten. Angenommen, wir möchten die Kreuztabelle von berechnenMit
pivot_table
können Sie Folgendes ausgebensize
:Funktioniert aber
count
nicht; Ein leerer DataFrame wird zurückgegeben:Ich glaube, der Grund dafür ist,
'count'
dass dies für die Serie erfolgen muss, die an dasvalues
Argument übergeben wird, und wenn nichts übergeben wird, beschließt Pandas, keine Annahmen zu treffen.quelle
Nur um ein wenig zu @ Edchums Antwort hinzuzufügen, selbst wenn die Daten keine NA-Werte haben, ist das Ergebnis von count () anhand des vorherigen Beispiels ausführlicher:
quelle
size
ein elegantes Äquivalent zucount
Pandas zu sein.groupby
Ausgabe wird hier erläutert .Wenn es sich um normale Datenrahmen handelt, besteht der einzige Unterschied darin, dass NAN-Werte einbezogen werden. Dies bedeutet, dass bei der Zählung der Zeilen keine NAN-Werte berücksichtigt werden.
Wenn wir diese Funktionen jedoch mit dem
groupby
then verwenden,count()
müssen wir , um die richtigen Ergebnisse zu erhalten, ein beliebiges numerisches Feld mit dem verknüpfengroupby
, um die genaue Anzahl der Gruppen zu erhalten,size()
für die diese Art der Zuordnung nicht erforderlich ist.quelle
Zusätzlich zu allen oben genannten Antworten möchte ich auf einen weiteren Unterschied hinweisen, der mir bedeutsam erscheint.
Sie können die
Datarame
Größe und Anzahl von Panda mit derVectors
Größe und Länge von Java korrelieren . Wenn wir einen Vektor erstellen, wird ihm ein vordefinierter Speicher zugewiesen. Wenn wir uns der Anzahl der Elemente nähern, die es beim Hinzufügen von Elementen belegen kann, wird ihm mehr Speicher zugewiesen. In ähnlicher WeiseDataFrame
erhöht sich beim Hinzufügen von Elementen der ihm zugewiesene Speicher.Das Größenattribut gibt die Anzahl der Speicherzellen an, die zugeordnet sind,
DataFrame
während count die Anzahl der Elemente angibt, die tatsächlich vorhanden sindDataFrame
. Beispielsweise,Sie können sehen, obwohl es 3 Zeilen gibt
DataFrame
, seine Größe ist 6.Diese Antwort deckt Größen- und Zählunterschiede in Bezug auf
DataFrame
und nicht abPandas Series
. Ich habe nicht überprüft, was passiert mitSeries
quelle