Dovrebbe essere più ampiamente noto che gli alias di stringa "index" e "colonne" possono essere utilizzati al posto degli interi 0/1. Gli alias sono molto più espliciti e mi aiutano a ricordare come avvengono i calcoli. Un altro alias per "indice" è "righe" .
Quando axis='index'
viene utilizzato, i calcoli vengono eseguiti lungo le colonne, il che crea confusione. Ma ricordo che ottengo un risultato della stessa dimensione di un'altra riga.
Otteniamo alcuni dati sullo schermo per vedere di cosa sto parlando:
df = pd.DataFrame(np.random.rand(10, 4), columns=list('abcd'))
a b c d
0 0.990730 0.567822 0.318174 0.122410
1 0.144962 0.718574 0.580569 0.582278
2 0.477151 0.907692 0.186276 0.342724
3 0.561043 0.122771 0.206819 0.904330
4 0.427413 0.186807 0.870504 0.878632
5 0.795392 0.658958 0.666026 0.262191
6 0.831404 0.011082 0.299811 0.906880
7 0.749729 0.564900 0.181627 0.211961
8 0.528308 0.394107 0.734904 0.961356
9 0.120508 0.656848 0.055749 0.290897
Quando vogliamo prendere la media di tutte le colonne, usiamo axis='index'
per ottenere quanto segue:
df.mean(axis='index')
a 0.562664
b 0.478956
c 0.410046
d 0.546366
dtype: float64
Lo stesso risultato si otterrebbe:
df.mean()
df.mean(axis=0)
df.mean(axis='rows')
Per utilizzare un'operazione da sinistra a destra sulle righe, utilizzare axis = 'columns'. Me lo ricordo pensando che una colonna aggiuntiva può essere aggiunta al mio DataFrame:
df.mean(axis='columns')
0 0.499784
1 0.506596
2 0.478461
3 0.448741
4 0.590839
5 0.595642
6 0.512294
7 0.427054
8 0.654669
9 0.281000
dtype: float64
Lo stesso risultato si otterrebbe:
df.mean(axis=1)
Aggiungi una nuova riga con asse = 0 / indice / righe
Usiamo questi risultati per aggiungere ulteriori righe o colonne per completare la spiegazione. Quindi, ogni volta che si utilizza axis = 0 / index / rows, è come ottenere una nuova riga del DataFrame. Aggiungiamo una riga:
df.append(df.mean(axis='rows'), ignore_index=True)
a b c d
0 0.990730 0.567822 0.318174 0.122410
1 0.144962 0.718574 0.580569 0.582278
2 0.477151 0.907692 0.186276 0.342724
3 0.561043 0.122771 0.206819 0.904330
4 0.427413 0.186807 0.870504 0.878632
5 0.795392 0.658958 0.666026 0.262191
6 0.831404 0.011082 0.299811 0.906880
7 0.749729 0.564900 0.181627 0.211961
8 0.528308 0.394107 0.734904 0.961356
9 0.120508 0.656848 0.055749 0.290897
10 0.562664 0.478956 0.410046 0.546366
Aggiungi una nuova colonna con asse = 1 / colonne
Allo stesso modo, quando l'asse = 1 / colonne creerà dati che possono essere facilmente inseriti nella propria colonna:
df.assign(e=df.mean(axis='columns'))
a b c d e
0 0.990730 0.567822 0.318174 0.122410 0.499784
1 0.144962 0.718574 0.580569 0.582278 0.506596
2 0.477151 0.907692 0.186276 0.342724 0.478461
3 0.561043 0.122771 0.206819 0.904330 0.448741
4 0.427413 0.186807 0.870504 0.878632 0.590839
5 0.795392 0.658958 0.666026 0.262191 0.595642
6 0.831404 0.011082 0.299811 0.906880 0.512294
7 0.749729 0.564900 0.181627 0.211961 0.427054
8 0.528308 0.394107 0.734904 0.961356 0.654669
9 0.120508 0.656848 0.055749 0.290897 0.281000
Sembra che tu possa vedere tutti gli alias con le seguenti variabili private:
df._AXIS_ALIASES
{'rows': 0}
df._AXIS_NUMBERS
{'columns': 1, 'index': 0}
df._AXIS_NAMES
{0: 'index', 1: 'columns'}