Il devrait être plus largement connu que les alias de chaîne «index» et «colonnes» peuvent être utilisés à la place des entiers 0/1. Les alias sont beaucoup plus explicites et m'aident à me rappeler comment les calculs se déroulent. Un autre alias pour «index» est «lignes» .
Quand axis='index'
est utilisé, les calculs se déroulent dans les colonnes, ce qui est déroutant. Mais je m'en souviens comme obtenant un résultat de la même taille qu'une autre ligne.
Faisons apparaître quelques données à l'écran pour voir de quoi je parle:
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
Lorsque nous voulons prendre la moyenne de toutes les colonnes, nous utilisons axis='index'
pour obtenir ce qui suit:
df.mean(axis='index')
a 0.562664
b 0.478956
c 0.410046
d 0.546366
dtype: float64
Le même résultat serait obtenu par:
df.mean()
df.mean(axis=0)
df.mean(axis='rows')
Pour obtenir une opération de gauche à droite sur les lignes, utilisez axis = 'columns'. Je m'en souviens en pensant qu'une colonne supplémentaire peut être ajoutée à mon 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
Le même résultat serait obtenu par:
df.mean(axis=1)
Ajouter une nouvelle ligne avec axis = 0 / index / rows
Utilisons ces résultats pour ajouter des lignes ou des colonnes supplémentaires pour compléter l'explication. Ainsi, chaque fois que vous utilisez axis = 0 / index / rows, c'est comme obtenir une nouvelle ligne du DataFrame. Ajoutons une ligne:
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
Ajouter une nouvelle colonne avec axe = 1 / colonnes
De même, lorsque axis = 1 / columns, il créera des données qui peuvent être facilement converties dans sa propre colonne:
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
Il semble que vous puissiez voir tous les alias avec les variables privées suivantes:
df._AXIS_ALIASES
{'rows': 0}
df._AXIS_NUMBERS
{'columns': 1, 'index': 0}
df._AXIS_NAMES
{0: 'index', 1: 'columns'}