Pivot tablolar

pandas ile Veriyi Yeniden Şekillendirme

Maria Eugenia Inzaugarat

Data Scientist

Pivot yönteminin sınırlamaları

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
another_fifa.pivot(index="name", columns="variable")
Traceback (most recent call last):
   ValueError: Index contains duplicate entries, cannot reshape
pandas ile Veriyi Yeniden Şekillendirme

Pivot yönteminin sınırlamaları

  • Genel amaçlı pivotlama
  • İndeks/sütun çifti benzersiz olmalı
  • Değerler birleştirilemez
pandas ile Veriyi Yeniden Şekillendirme

Pivot tablo

  • Daha büyük bir DataFrame'i özetleyen istatistikleri içeren bir DataFrame

 

Özet istatistikleri gösteren bir DataFrame

pandas ile Veriyi Yeniden Şekillendirme

Pivot tablo

Uzun biçimde bir DataFrame

pandas ile Veriyi Yeniden Şekillendirme

Pivot tablo

Özet istatistiklerle uzun biçimden geniş biçime ok işareti

 

Pivot table çağrısı

pandas ile Veriyi Yeniden Şekillendirme

Pivot tablo

Vurgulanmış sütunlar ve indekslerle uzun ve özet DataFrame

 

index ve columns argümanlarıyla pivot çağrısı

pandas ile Veriyi Yeniden Şekillendirme

Pivot tablo

Vurgulanmış sütun ve değerlerle uzun ve özet DataFrame

 

values ve toplama fonksiyonu argümanlarıyla pivot çağrısı

pandas ile Veriyi Yeniden Şekillendirme

Pivot tablo

another_fifa.pivot_table(index="name", columns="variable", aggfunc="mean")
                     metric_system     imperial_system       
         variable   height  weight     height   weight
             name                                                         
Cristiano Ronaldo      187      83      6.135    183.0
         J. Oblak      188      87      6.160    191.0
pandas ile Veriyi Yeniden Şekillendirme

Hiyerarşik indeksler

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
pandas ile Veriyi Yeniden Şekillendirme

Hiyerarşik indeksler

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
fifa_players.pivot_table(index=                 , columns="movement", values=                        , aggfunc=     )
pandas ile Veriyi Yeniden Şekillendirme

Hiyerarşik indeksler

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
fifa_players.pivot_table(index=["first", "last"], columns="movement", values=                        , aggfunc=     )
pandas ile Veriyi Yeniden Şekillendirme

Hiyerarşik indeksler

fifa_players.head(6)
      first     last   movement   overall  attacking
0    Lionel    Messi   shooting        92         70
1 Cristiano  Ronaldo   shooting        93         89
2    Lionel    Messi    passing        92         92
3 Cristiano  Ronaldo    passing        82         83
4    Lionel    Messi    passing        96         88
5 Cristiano  Ronaldo    passing        89         84
fifa_players.pivot_table(index=["first", "last"], columns="movement", values=["overall", "attacking"], aggfunc="max")
                           attacking           overall
          movement  passing shooting  passing shooting
    first     last                
Cristiano  Ronaldo       84       89       89       93
   Lionel    Messi       92       70       96       92
pandas ile Veriyi Yeniden Şekillendirme

Toplamlar (margins)

fifa_players.pivot_table(index=["first", "last"], columns="movement", aggfunc="count",             )
pandas ile Veriyi Yeniden Şekillendirme

Toplamlar (margins)

fifa_players.pivot_table(index=["first", "last"], columns="movement", aggfunc="count", margins=True)
                                attacking                  overall
          movement  passing shooting  All    passing shooting  All
    First     Last                
Cristiano  Ronaldo        2        1    3          2        1    3
   Lionel    Messi        2        1    3          2        1    3
      All                 4        2    6          4        2    6
pandas ile Veriyi Yeniden Şekillendirme

Pivot mı, pivot table mı?

 

DataFrame'de her indeks/sütun çifti için birden fazla değer var mı?

Ortaya çıkan pivot DataFrame'inizde çok düzeyli indeks gerekiyor mu?

Büyük bir DataFrame için özet istatistiklere ihtiyaç var mı?

Evet! .pivot_table() kullanın

pandas ile Veriyi Yeniden Şekillendirme

Hadi pratik yapalım!

pandas ile Veriyi Yeniden Şekillendirme

Preparing Video For Download...