Travailler avec plusieurs niveaux

Remanier des données avec pandas

Maria Eugenia Inzaugarat

Instructor

Révision

  • Empiler et dépiler des DataFrame et des Series
  • Choisir un niveau à empiler ou dépiler par nom ou par numéro
  • Réorganiser les niveaux en combinant dépilement et empilement
Remanier des données avec pandas

Réorganiser plusieurs niveaux

  • Échanger des niveaux
  • Empiler et dépiler plusieurs niveaux en même temps
Remanier des données avec pandas

Échanger des niveaux

DataFrame et flèche illustrant l'échange de niveaux

  méthode swaplevel

Remanier des données avec pandas

Échanger des niveaux

cars
                         2019  2020
 price    Golf       VW    25    26
  sold    Golf       VW    68    72
 price  Passat       VW    31    32
  sold  Passat       VW    72    73
 price A-class Mercedes    41    42
  sold A-class Mercedes    68    69
 price C-class Mercedes    32    33
 sold  C-class Mercedes    75    74
Remanier des données avec pandas

Échanger des niveaux

cars
                         2019  2020
 price    Golf       VW    25    26
  sold    Golf       VW    68    72
 price  Passat       VW    31    32
  sold  Passat       VW    72    73
 price A-class Mercedes    41    42
  sold A-class Mercedes    68    69
 price C-class Mercedes    32    33
 sold  C-class Mercedes    75    74
cars.swaplevel(0, 2)
                        2019  2020
VW       Golf    price    25    26
                 sold     68    72
         Passat  price    31    32
                 sold     72    73
Mercedes A-class price    41    42
                 sold     68    69
         C-class price    32    33
                 sold     75    74
Remanier des données avec pandas

Échanger des niveaux et dépiler

cars
                         2019  2020
 price    Golf       VW    25    26
  sold    Golf       VW    68    72
 price  Passat       VW    31    32
  sold  Passat       VW    72    73
 price A-class Mercedes    41    42
  sold A-class Mercedes    68    69
 price C-class Mercedes    32    33
 sold  C-class Mercedes    75    74
cars.swaplevel(0, 2).unstack()
                       2019       2020     
                 price sold price sold
Mercedes A-class    41   68    42   69
         C-class    32   75    33   74
     VW     Golf    25   68    26   72
          Passat    31   72    32   73
Remanier des données avec pandas

Échanger des niveaux et dépiler

cars
                         2019  2020
 price    Golf       VW    25    26
  sold    Golf       VW    68    72
 price  Passat       VW    31    32
  sold  Passat       VW    72    73
 price A-class Mercedes    41    42
  sold A-class Mercedes    68    69
 price C-class Mercedes    32    33
 sold  C-class Mercedes    75    74
cars.unstack()
              Mercedes    VW Mercedes    VW
                  2019  2019     2020  2020
price A-class     41.0   NaN     42.0   NaN
      C-class     32.0   NaN     33.0   NaN
         Golf      NaN  25.0      NaN  26.0
       Passat      NaN  31.0      NaN  32.0
sold  A-class     68.0   NaN     69.0   NaN
      C-class     75.0   NaN     74.0   NaN
         Golf      NaN  68.0      NaN  72.0
       Passat      NaN  72.0      NaN  73.0
Remanier des données avec pandas

Échanger des niveaux et dépiler

cars
                         2019  2020
 price    Golf       VW    25    26
  sold    Golf       VW    68    72
 price  Passat       VW    31    32
  sold  Passat       VW    72    73
 price A-class Mercedes    41    42
  sold A-class Mercedes    68    69
 price C-class Mercedes    32    33
 sold  C-class Mercedes    75    74
cars.unstack().swaplevel(0, 1, axis=1)
                        2019           2020      
              Mercedes    VW Mercedes    VW
price A-class     41.0   NaN     42.0   NaN
      C-class     32.0   NaN     33.0   NaN
         Golf      NaN  25.0      NaN  26.0
       Passat      NaN  31.0      NaN  32.0
sold  A-class     68.0   NaN     69.0   NaN
      C-class     75.0   NaN     74.0   NaN
         Golf      NaN  68.0      NaN  72.0
       Passat      NaN  72.0      NaN  73.0
Remanier des données avec pandas

Échanger des niveaux et empiler

cars
                         2019  2020
 price    Golf       VW    25    26
  sold    Golf       VW    68    72
 price  Passat       VW    31    32
  sold  Passat       VW    72    73
 price A-class Mercedes    41    42
  sold A-class Mercedes    68    69
 price C-class Mercedes    32    33
 sold  C-class Mercedes    75    74
cars.stack()
price     Golf       VW   2019    25
                          2020    26
 sold     Golf       VW   2019    68
                          2020    72
price   Passat       VW   2019    31
                          2020    32
 sold   Passat       VW   2019    72
                          2020    73
price  A-class  Mercedes  2019    41
                          2020    42
 sold  A-class  Mercedes  2019    68
                          2020    69
Remanier des données avec pandas

Échanger des niveaux et empiler

cars
                         2019  2020
 price    Golf       VW    25    26
  sold    Golf       VW    68    72
 price  Passat       VW    31    32
  sold  Passat       VW    72    73
 price A-class Mercedes    41    42
  sold A-class Mercedes    68    69
 price C-class Mercedes    32    33
 sold  C-class Mercedes    75    74
cars.stack().swaplevel(0, 2)
     VW     Golf   price  2019    25
                          2020    26
                    sold  2019    68
                          2020    72
          Passat   price  2019    31
                          2020    32
                    sold  2019    72
                          2020    73
Mercedes  A-class  price  2019    41
                          2020    42
                    sold  2019    68
                          2020    69
Remanier des données avec pandas

Niveaux multiples

Deux DataFrame à plusieurs niveaux, certains en surbrillance

Remanier des données avec pandas

Dépiler plusieurs niveaux

cars
year                       2019  2020
  brand     model  feature            
     VW      Golf    price   25    26
                      sold   68    72
           Passat    price   31    32
                      sold   72    73
Mercedes  A-class    price   41    42
                      sold   68    69
          C-class    price   32    33
                      sold   75    74
Remanier des données avec pandas

Dépiler par numéro de niveau

cars.unstack(level=[0, 1])
                year            2019                         2020                        
brand            VW         Mercedes          VW         Mercedes        
model   Golf Passat  A-class C-class Golf Passat  A-class C-class
feature                                                          
price    25     31        41      32   26     32       42      33
sold     68     72        68      75   72     73       69      74
Remanier des données avec pandas

Dépiler par nom de niveau

cars.unstack(level=['brand', 'model'])
                year            2019                         2020                        
brand            VW         Mercedes          VW         Mercedes        
model   Golf Passat  A-class C-class Golf Passat  A-class C-class
feature                                                          
price    25     31        41      32   26     32       42      33
sold     68     72        68      75   72     73       69      74
Remanier des données avec pandas

Empiler plusieurs niveaux

cars_unstacked
   year                           2019                         2020                         
  brand            VW         Mercedes          VW         Mercedes        
  model   Golf Passat  A-class C-class Golf Passat  A-class C-class
feature                                                          
  price   25     31       41      32   26     32       42      33
   sold   68     72       68      75   72     73       69      74
Remanier des données avec pandas

Empiler par nom ou numéro

cars_unstacked.stack(level=[0, 1])
                model  A-class  C-class  Golf  Passat
feature year    brand                                   
  price 2019 Mercedes     41.0     32.0   NaN     NaN
                   VW      NaN      NaN  25.0    31.0
        2020 Mercedes     42.0     33.0   NaN     NaN
                   VW      NaN      NaN  26.0    32.0
   sold 2019 Mercedes     68.0     75.0   NaN     NaN
                   VW      NaN      NaN  68.0    72.0
        2020 Mercedes     69.0     74.0   NaN     NaN
                   VW      NaN      NaN  72.0    73.0
cars_unstacked.stack(level=['year', 'brand'])
                model  A-class  C-class  Golf  Passat
feature year    brand                                   
  price 2019 Mercedes     41.0     32.0   NaN     NaN
                   VW      NaN      NaN  25.0    31.0
        2020 Mercedes     42.0     33.0   NaN     NaN
                   VW      NaN      NaN  26.0    32.0
   sold 2019 Mercedes     68.0     75.0   NaN     NaN
                   VW      NaN      NaN  68.0    72.0
        2020 Mercedes     69.0     74.0   NaN     NaN
                   VW      NaN      NaN  72.0    73.0
Remanier des données avec pandas

Passons à la pratique !

Remanier des données avec pandas

Preparing Video For Download...