Comment annuler le pivotement d’un DataFrame Pandas (avec exemple)



Dans les pandas, vous pouvez utiliser la fonction melt() pour annuler le pivotement d’un DataFrame – en le convertissant d’un format large en un format long .

Cette fonction utilise la syntaxe de base suivante :

df_unpivot = pd.melt(df, id_vars='col1', value_vars=['col2', 'col3', ...])

où:

  • id_vars : Les colonnes à utiliser comme identifiants
  • value_vars : Les colonnes à annuler le pivotement

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : annuler le pivotement d’un DataFrame Pandas

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
                   'points': [18, 22, 19, 14, 14],
                   'assists': [5, 7, 7, 9, 12],
                   'rebounds': [11, 8, 10, 6, 6]})

#view DataFrame
print(df)

  team  points  assists  rebounds
0    A      18        5        11
1    B      22        7         8
2    C      19        7        10
3    D      14        9         6
4    E      14       12         6

Nous pouvons utiliser la syntaxe suivante pour « dépivoter » le DataFrame :

#unpivot DataFrame from wide format to long format
df_unpivot = pd.melt(df, id_vars='team', value_vars=['points', 'assists', 'rebounds'])

#view updated DataFrame
print(df_unpivot)

   team  variable  value
0     A    points     18
1     B    points     22
2     C    points     19
3     D    points     14
4     E    points     14
5     A   assists      5
6     B   assists      7
7     C   assists      7
8     D   assists      9
9     E   assists     12
10    A  rebounds     11
11    B  rebounds      8
12    C  rebounds     10
13    D  rebounds      6
14    E  rebounds      6

Nous avons utilisé la colonne équipe comme colonne d’identifiant et nous avons choisi de ne pas pivoter les colonnes points , passes décisives et rebonds .

Le résultat est un DataFrame au format long.

Notez que nous pouvons également utiliser les arguments var_name et value_name pour spécifier les noms des colonnes dans le DataFrame non pivoté :

#unpivot DataFrame from wide format to long format 
df_unpivot = pd.melt(df, id_vars='team', value_vars=['points', 'assists', 'rebounds'],
             var_name='metric', value_name='amount')

#view updated DataFrame
print(df_unpivot)

   team    metric  amount
0     A    points      18
1     B    points      22
2     C    points      19
3     D    points      14
4     E    points      14
5     A   assists       5
6     B   assists       7
7     C   assists       7
8     D   assists       9
9     E   assists      12
10    A  rebounds      11
11    B  rebounds       8
12    C  rebounds      10
13    D  rebounds       6
14    E  rebounds       6

Notez que les nouvelles colonnes sont désormais intitulées métrique et montant .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes en Python :

Comment ajouter des lignes à un DataFrame Pandas
Comment ajouter des colonnes à un DataFrame Pandas
Comment compter les occurrences de valeurs spécifiques dans Pandas DataFrame

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *