Format data lebar dan panjang

Mengubah Bentuk Data dengan pandas

Maria Eugenia Inzaugarat

Data Scientist

Anda akan mempelajari

  • Format lebar dan panjang
  • Transformasi panjang ke lebar
  • Transformasi lebar ke panjang
  • Stacking dan unstacking kolom
  • Bentuk ulang dan tangani data kompleks, seperti kolom string atau data JSON
Mengubah Bentuk Data dengan pandas

Mengapa ini penting

  • Dataset rapi
  • Data belum dalam format yang tepat untuk analisis:
    • Mudah dibaca manusia vs. analisis statistik
  • Data bersarang dalam DataFrame sulit ditangani
  • Dapatkan ringkasan statistik untuk DataFrame berindeks multi-level
Mengubah Bentuk Data dengan pandas

Bentuk data

  • Cara dataset diatur dalam baris dan kolom
fifa_players = pd.read_csv("fifa_players.csv")
fifa_players
                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona
1  Cristiano Ronaldo     34      Portugal       Juventus
2    Neymar da Silva     27        Brazil  Saint-Germain
fifa_players.shape
(3, 4)
Mengubah Bentuk Data dengan pandas

Format lebar

fifa_players

                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona
1  Cristiano Ronaldo     34      Portugal       Juventus
2    Neymar da Silva     27        Brazil  Saint-Germain

Mengubah Bentuk Data dengan pandas

Format lebar

fifa_players
                         vv  
                name   | age | nationality          club
0       Lionel Messi   | 32  |  Argentina      Barcelona
1  Cristiano Ronaldo   | 34  |   Portugal       Juventus
2    Neymar da Silva   | 27  |     Brazil  Saint-Germain
                         ^^
  • Tiap fitur ada di kolom terpisah
Mengubah Bentuk Data dengan pandas

Format lebar

fifa_players

                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona <--
1  Cristiano Ronaldo     34      Portugal       Juventus <--
2    Neymar da Silva     27        Brazil  Saint-Germain <--

  • Tiap fitur ada di kolom terpisah
  • Tiap baris memuat banyak fitur untuk pemain yang sama
Mengubah Bentuk Data dengan pandas

Format lebar

fifa_players
                name    age   nationality           club
0       Lionel Messi     32     Argentina      Barcelona
 --------------------------------------------------------
1    Cristiano Ronaldo    NaN  <-    Portugal       Juventus
 --------------------------------------------------------
2    Neymar da Silva     27        Brazil  Saint-Germain
  • Tiap fitur ada di kolom terpisah
  • Tiap baris memuat banyak fitur untuk pemain yang sama
  • Tidak berulang tapi banyak nilai hilang
  • Statistik dan imputasi sederhana
Mengubah Bentuk Data dengan pandas

Format panjang

fifa_players_long.head()
               name     variable     value
0 Cristiano Ronaldo  nationality   Portugal 
1 Cristiano Ronaldo         club   Juventus 
2      Lionel Messi          age         32
3      Lionel Messi  nationality  Argentina 
4      Lionel Messi         club  Barcelona
Mengubah Bentuk Data dengan pandas

Format panjang

fifa_players_long.head()
               name     variable     value
0   Cristiano Ronaldo  nationality   Portugal <--
1 Cristiano Ronaldo         club  Juventus 
2      Lionel Messi          age        32
3        Lionel Messi  nationality  Argentina <--
4      Lionel Messi         club  Barcelona
  • Tiap baris mewakili satu fitur
Mengubah Bentuk Data dengan pandas

Format panjang

fifa_players_long.head()
               name     variable     value
0   Cristiano Ronaldo  nationality   Portugal <--
1   Cristiano Ronaldo         club   Juventus <--
2      Lionel Messi          age         32
3      Lionel Messi  nationality  Argentina 
4      Lionel Messi         club  Barcelona
  • Tiap baris mewakili satu fitur
  • Beberapa baris per pemain
Mengubah Bentuk Data dengan pandas

Format panjang

fifa_players_long.head()
  |              name |    variable      value
0 | Cristiano Ronaldo | nationality   Portugal
1 | Cristiano Ronaldo |        club   Juventus
2 |      Lionel Messi |         age         32
3 |      Lionel Messi | nationality  Argentina 
4 |      Lionel Messi |        club  Barcelona
        ^^^^^^^^^^^
  • Tiap baris mewakili satu fitur
  • Beberapa baris per pemain
  • Satu kolom (name) untuk mengidentifikasi pemain yang sama
Mengubah Bentuk Data dengan pandas

Format panjang

fifa_players_long.head()
               name     variable     value
0 Cristiano Ronaldo  nationality   Portugal 
1 Cristiano Ronaldo         club   Juventus 
2      Lionel Messi          age         32
3      Lionel Messi  nationality  Argentina 
4      Lionel Messi         club  Barcelona
  • Tiap baris mewakili satu fitur
  • Beberapa baris per pemain
  • Satu kolom (name) untuk mengidentifikasi pemain yang sama
  • Data rapi:
    • Lebih mudah diringkas
    • Pasangan kunci-nilai
    • Disukai untuk analisis dan grafik
Mengubah Bentuk Data dengan pandas

Membentuk ulang data

  • Mengubah struktur DataFrame atau Series agar siap dianalisis
    • Transposisi DataFrame
fifa_players.set_index('club')
                             name  age  nationality
         club 
    Barcelona        Lionel Messi   32    Argentina
     Juventus   Cristiano Ronaldo  NaN     Portugal
Saint-Germain     Neymar da Silva   27       Brazil
Mengubah Bentuk Data dengan pandas

Membentuk ulang data

  • Mengubah struktur DataFrame atau Series agar siap dianalisis
    • Transposisi DataFrame
fifa_players.set_index('club')[['name', 'nationality']]
                               name   nationality 
         club 
    Barcelona        Lionel Messi       Argentina
     Juventus   Cristiano Ronaldo        Portugal
Saint-Germain     Neymar da Silva          Brazil
Mengubah Bentuk Data dengan pandas

Membentuk ulang data

  • Mengubah struktur DataFrame atau Series agar siap dianalisis
    • Transposisi DataFrame
fifa_players.set_index('club')[['name', 'nationality']].transpose()
       club         Barcelona           Juventus     Saint-Germain
       name      Lionel Messi  Cristiano Ronaldo   Neymar da Silva
nationality         Argentina           Portugal            Brazil
Mengubah Bentuk Data dengan pandas

Membentuk ulang data

  • Mengonversi data dari format lebar ke panjang dan sebaliknya
  • Unit analisis:
    • Format panjang -> karakteristik pemain
    • Format lebar -> tiap pemain
Mengubah Bentuk Data dengan pandas

Transformasi lebar ke panjang

  • Dilakukan dengan fungsi pandas, seperti:

    • .melt()
    • .wide_to_long()
Mengubah Bentuk Data dengan pandas

Format panjang ke lebar

  • Ubah data dengan metode pandas, misalnya:

    • .pivot()
    • .pivot_table()
Mengubah Bentuk Data dengan pandas

Ayo berlatih!

Mengubah Bentuk Data dengan pandas

Preparing Video For Download...