Tái cấu trúc với phương thức pivot

Tái định dạng dữ liệu với pandas

Maria Eugenia Inzaugarat

Data Scientist

Từ dạng dài sang dạng rộng

  • Minh họa mối quan hệ giữa hai cột
  • Thao tác chuỗi thời gian với các biến
  • Khi cần các cột là biến duy nhất
1 https://pandas.pydata.org/docs/user_guide/reshaping.html
Tái định dạng dữ liệu với pandas

Từ dạng dài sang dạng rộng

DataFrame dạng dài

Tái định dạng dữ liệu với pandas

Phương thức pivot

Mũi tên chỉ từ dạng dài sang rộng

 

Lệnh pandas pivot

Tái định dạng dữ liệu với pandas

Phương thức pivot

Mũi tên chỉ từ dạng dài sang rộng

 

Lệnh pivot với các đối số

Tái định dạng dữ liệu với pandas

Phương thức pivot

DataFrame dạng dài và rộng với cột và chỉ mục được tô sáng

 

Đối số index được tô sáng với tên cột

Tái định dạng dữ liệu với pandas

Phương thức pivot

DataFrame dạng dài và rộng với cột và tên cột được tô sáng

 

Đối số columns được tô sáng với tên cột

Tái định dạng dữ liệu với pandas

Phương thức pivot

DataFrame dạng dài và rộng với cột và values được tô sáng

 

Đối số values được tô sáng với tên cột

Tái định dạng dữ liệu với pandas

Phương thức pivot

Một ô NaN được tô sáng

 

Các đối số được tô sáng với tên cột

Tái định dạng dữ liệu với pandas

Pivot một dữ liệu

fifa = pd.read_csv('fifa_players.csv')
fifa.head()
                 name    variable  metric_system  imperial_system
0   Cristiano Ronaldo      weight             83           183.00
1            J. Oblak      weight             87           191.00
2   Cristiano Ronaldo      height            187             6.13
3     J. Oblak             height            188             6.16
Tái định dạng dữ liệu với pandas

Pivot một dữ liệu

fifa.pivot(index='name'                                            )
Tái định dạng dữ liệu với pandas

Pivot một dữ liệu

fifa.pivot(index='name', columns='variable'                        )
Tái định dạng dữ liệu với pandas

Pivot một dữ liệu

fifa.pivot(index='name', columns='variable', values='metric_system')
         variable  height   weight
             name        
Cristiano Ronaldo     187       83
         J. Oblak     188       87
Tái định dạng dữ liệu với pandas

Pivot nhiều cột

fifa.pivot(index='name', columns='variable', values=['metric_system', 'imperial_system'])
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83       6.13    183.0
         J. Oblak      188      87       6.16    191.0
Tái định dạng dữ liệu với pandas

Pivot nhiều cột

 

Mũi tên từ dạng dài sang rộng với chỉ mục cột phân cấp

 

Đối số index và columns được tô sáng với tên cột

Tái định dạng dữ liệu với pandas

Pivot nhiều cột

fifa.pivot(index="name", columns="variable")
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83       6.13    183.0
         J. Oblak      188      87       6.16    191.0
Tái định dạng dữ liệu với pandas

Lỗi trùng bản ghi

another_fifa.head()
                 name    variable  metric_system  imperial_system
0   Cristiano Ronaldo      weight             83           183.00
1            J. Oblak      weight             87           191.00
2   Cristiano Ronaldo      height            187             6.13
3            J. Oblak      height            188             6.16
4   Cristiano Ronaldo      height            187             6.14
Tái định dạng dữ liệu với pandas

Lỗi trùng bản ghi

another_fifa.head()
                 name    variable  metric_system  imperial_system
0   Cristiano Ronaldo      weight             83           183.00
1            J. Oblak      weight             87           191.00
  2   Cristiano Ronaldo      height            187             6.13 <--
3            J. Oblak      height            188             6.16
  4   Cristiano Ronaldo      height            187             6.14 <--
Tái định dạng dữ liệu với pandas

Lỗi trùng bản ghi

another_fifa.pivot(index="name", columns="variable")
ValueError: Index contains duplicate entries, cannot reshape

 

another_fifa = another_fifa.drop(4, axis=0)
another_fifa.pivot(index="name", columns="variable")
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83       6.13    183.0
         J. Oblak      188      87       6.16    191.0
Tái định dạng dữ liệu với pandas

Ayo berlatih!

Tái định dạng dữ liệu với pandas

Preparing Video For Download...