axis
bezieht sich auf die Dimension des Arrays, im Falle von pd.DataFrame
s ist axis=0
die Dimension, die nach unten zeigt, und axis=1
diejenige, die nach rechts zeigt.
Beispiel: Stellen Sie sich ein ndarray
mit der Form (3,5,7)
vor.
a = np.ones((3,5,7))
a
ist ein 3-dimensionales ndarray
, d.h. es hat 3 Achsen ("Achsen" ist der Plural von "Axis"). Die Konfiguration von a
wird aussehen wie 3 Scheiben Brot, wobei jede Scheibe eine Dimension von 5 mal 7 hat. a[0,:,:]
bezieht sich auf die 0-te Scheibe, a[1,:,:]
bezieht sich auf die 1-te Scheibe usw.
a.sum(axis=0)
wird sum()
entlang der 0-ten Achse von a
anwenden. Du wirst alle Scheiben addieren und am Ende mit einer Scheibe der Form (5,7)
enden.
a.sum(axis=0)
ist äquivalent zu
b = np.zeros((5,7))
for i in range(5):
for j in range(7):
b[i,j] += a[:,i,j].sum()
b
und a.sum(axis=0)
werden beide so aussehen
array([[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.]])
In einem pd.DataFrame
funktionieren Achsen genauso wie in numpy.array
s: axis=0
wendet sum()
oder eine andere Reduktionsfunktion auf jede Spalte an.
Anm. In @zhangxaochens Antwort finde ich die Phrasen "entlang der Zeilen" und "entlang der Spalten" etwas verwirrend. axis=0
sollte sich auf "entlang jeder Spalte" beziehen, und axis=1
"entlang jeder Zeile".