La librairie Pandas propose plusieurs méthodes pour pivoter ou dépivoter les colonnes d’un DataFrame. Nous allons voir ici pourquoi, comment et quand utiliser ces méthodes.
Pour commencer, voici le DataFrame que l’on va utiliser dans nos exemples :
Pivoter avec « pivot() » et « unstack() » :
On utilisera les méthodes « pivot() » ou « unstack() » quand on cherche à pivoter des colonnes. Il est préférable d’utiliser la méthode unstack() quand le DataFrame a plusieurs index. Il est tout à fait possible d’utiliser la méthode « pivot() » quel que soit le nombre d’index dans le DataFrame. Ce qui va faire la réelle différence dans l’utilisation de l’une ou l’autre méthode est le nombre de série de valeur qui va accompagner la colonne pivotée.
Pour être plus précis, voici comment utiliser ces méthodes dans les 2 exemples ci-dessous :
La méthode « pivot() » :
Dans ce premier exemple on constate d’abord que les deux colonnes « Pays » et « Continents » ont été mises en index. Puis on constate que la méthode « pivot() » a été utilisée pour pivoter la colonne « Produits ». La série de valeurs de la colonne « CA » a été distribuées dans les colonnes « P1 » et « P2 » en fonction des index de colonne et de leurs appartenances à « P1 » ou « P2 ». Toutes colonnes d’origines qui ne font pas fait partie de l’index disparait dans le processus.
La méthode « unstack() » :
Dans ce deuxième exemple on constate d’abord que les deux colonnes « Pays » et « Produits » ont été mises en index. Puis on constate que la méthode « unstack() » a été utilisée pour pivoter la colonne « Produits ». La colonne « Pays » est conservée en index car c’est la première colonne de l’index. En effet, on voit dans le code : « df.set_index([‘Pays’ , ‘Produits’ ]) que la première colonne est « Pays ». C’est toujours la dernière colonne de l’index qui sera pivotée. Dans cet exemple c’est donc la colonne «Produits » qui est la deuxième et dernière colonne de l’index qui est pivotée. Les valeurs des séries « Continents » et « CA » sont distribuées dans « P1 » et « P2 » en fonction des index et de leurs appartenances à « P1 » ou « P2 » et « CA » ou « Continents ». Comme il y a deux séries de valeurs qui accompagnent la colonne pivotée, il y a deux groupes de colonnes : « Continents » et « CA » qui sont créés. Il y a donc deux séries de valeurs qui sont distribuées dans cette méthode : « Continents » et « CA ».
Conclusion sur les méthodes pour pivoter une colonne :
Quand on pivote une colonne, on utilisera la méthode « pivot() » quand on souhaite ne distribuer qu’une seule série de valeur tandis que l’on utilisera la méthode « unstack() » quand on souhaite distribuer plusieurs séries de valeurs.
Dépivoter avec « melt() » et « stack() » :
On utilisera les méthodes « melt() » ou « stack() » quand on cherche à dépivoter des colonnes. Il est préférable d’utiliser la méthode « melt() » quand le DataFrame n’a pas de groupe de colonne. C’est-à-dire que les colonnes à dépivoter ne sont pas elles-mêmes un sous-groupe d’une autre colonne. Auquel cas on utilisera « stack() ».
Pour être plus précis, voici comment utiliser ces méthodes dans les 2 exemples ci-dessous :
La méthode « melt() » :
Dans cet exemple on part d’un DataFrame qui possède deux colonnes à dépivoter : « P1 » et « P2 ». Ces deux colonnes ne sont pas un sous-groupe de colonnes. Il est important de constater que pour réussir cette action de dépivoter il a fallu supprimer les index. En effet on ne peut pas mettre en paramètre de la fonction des colonnes d’index. La méthode « melt() » demande en paramètre les colonnes à dépivoter et les colonnes à conserver.
La méthode « stack() » :
Dans cet exemple on part d’un DataFrame qui possède deux colonnes à dépivoter : « P1 » et « P2 ». Ces deux colonnes sont un sous-groupe de « Continents », « Zone » et « CA ». Le seul appel de la méthode « stack() » permet à Python de comprendre que la colonne « Pays » doit rester en Index. La colonnes « Produits » entre en index et les colonnes « Zone » et « CA » sont créées à partir des données dépivotées.
Conclusion sur l’utilisation des méthodes pour dépivoter :
Il est préférable d’utiliser la méthode « melt() » dans le cas où les colonnes à dépivoter de sont pas un sous-groupe. Sinon il vaut mieux utiliser « stack() ».
N'hésitez pas à consulter nos articles comme celui-ci ou bien nos formations.
Comments