여러 레벨 다루기

pandas로 데이터 재구조화하기

Maria Eugenia Inzaugarat

Instructor

복습

  • DataFrame과 Series를 스택/언스택합니다
  • 이름이나 번호로 스택/언스택할 레벨을 선택합니다
  • 언스택과 스택을 조합해 레벨을 재배열합니다
pandas로 데이터 재구조화하기

여러 레벨 재배열

  • 레벨 교환
  • 여러 레벨을 동시에 스택/언스택
pandas로 데이터 재구조화하기

레벨 교환

DataFrame과 레벨 교환을 나타내는 화살표

  swaplevel 메서드

pandas로 데이터 재구조화하기

레벨 교환

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
pandas로 데이터 재구조화하기

레벨 교환

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
pandas로 데이터 재구조화하기

레벨 교환과 언스택

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
pandas로 데이터 재구조화하기

레벨 교환과 언스택

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
pandas로 데이터 재구조화하기

레벨 교환과 언스택

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
pandas로 데이터 재구조화하기

레벨 교환과 스택

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
pandas로 데이터 재구조화하기

레벨 교환과 스택

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
pandas로 데이터 재구조화하기

다중 레벨

여러 레벨이 있고 일부가 강조된 두 개의 DataFrame

pandas로 데이터 재구조화하기

여러 레벨 언스택하기

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
pandas로 데이터 재구조화하기

번호로 레벨 언스택하기

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
pandas로 데이터 재구조화하기

이름으로 레벨 언스택하기

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
pandas로 데이터 재구조화하기

여러 레벨 스택하기

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
pandas로 데이터 재구조화하기

이름 또는 번호로 스택하기

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
pandas로 데이터 재구조화하기

연습해 봅시다!

pandas로 데이터 재구조화하기

Preparing Video For Download...