Slicing merupakan teknik memilih data dari sebuah set data. Misal kita memiliki data berat badan mahasiswa: 65, 78, 77, 100, 56. Maka jika kita urutkan maka urutan pertama adalah 65, urutan kedua adalah 78, urutan ketiga adalah 77, urutan keempat adalah 100, dan urutan terakhir adala 56.
Jika didefinisikan ke dalam list, maka akan seperti berikut:
berat_badan=[65,78,77,100,56] berat_badan[1] berat_badan[4] berat_badan[::2]
- Jika kita mengeksekusi baris kedua, maka yang keluar adalah 78
- Jika kita mengeksekusi baris ketiga, maka yang keluar adalah 56
- Jika kita mengekseusi baris keempat, maka yang keluar adalah item urutan kedua 65, 77, 56
Pertanyaannya, mengapa berat_badan[1] justru memberi input 78, dan bukan 65? Karena indexing (proses urutan) dalam python dimulai dari nol. Sehingga list berat_badan dimulai dari 0,1,2,3,4
berat_badan[0] berat_badan[:] berat_badan[1:4]
- Jika eksekusi baris pertama, maka hasilnya adalah 65, karena index [0] menunjukkan urutan pertama
- Jika eksekusi baris kedua, maka hasilnya semua data dalam list, karena index [:] menunjukkan semua data
- Jika eksekusi baris ketiga, maka hasilnya [78,77,100] karena menunjukkan urutan data kedua sampai keempat.
Perlu diperhatikan bahwa slicing dalam python, urutan terakhir tidak dibaca oleh bahasa python itu sendiri. Maka penulisan [1:4] kita memberikan perintah slicing mulai index 1 sampai index 4 sebagai batas akhir (di mana index 4 ini tidak termasuk ke dalamnya). Sehingga yang dieksekusi adalah index ke 1 sampai 3.
Jika kita eksekusi
berat_badan[:3]
Maka yang keluar adalah [65,78,77] karena kita mengindex dari 0 sampai 2 (3 sebagai batasnya, tidak termasuk). Jika kita menulisnya dengan berat_badan[0:3] hasilnya juga akan sama.
Sekarang bagaimana jika kita memiliki list di dalam list?
Bisa langsung dilihat melalui script di bawah ini:
tinggi=[[165,170,171],[200,230,200,198,197],[154,145,148,120]] tinggi[1] tinggi[:3] tinggi[:] tinggi[1][2] tinggi[:][2] tinggi[2][:] tinggi[2][1:3] tinggi[::-1] tinggi[::-2]
Masing-masing akan memberikan output:
- Baris kedua [200, 230, 200, 198, 197]
- Baris ketiga [[165, 170, 171], [200, 230, 200, 198, 197], [154, 145, 148, 120]]
- Baris keempat [[165, 170, 171], [200, 230, 200, 198, 197], [154, 145, 148, 120]]
- Baris kelima 200
- Baris keenam [154, 145, 148, 120]
- Baris ketujuh [154, 145, 148, 120]
- Baris kedelapan [145, 148]
- Baris kesembilan [[154, 145, 148, 120], [200, 230, 200, 198, 197], [165, 170, 171]]
- Baris kesepuluh [[154, 145, 148, 120], [165, 170, 171]]
Sekarang, bagaimana jika kita ingin melakukan slicing kolom dalam sebuah tabel?
Semisal kita memiliki tabel seperti ini (bisa didownload di link ini):
Jika demikian, kita tidak bisa menggunakan teknik slicing seperti di atas. Kita harus menggunakan argumen iloc. Syntaxnya kurang lebih seperti ini
nama_variabel.iloc[baris_ke,kolom_ke]
Silakan eksekusi lines di bawah ini
import pandas as pd
dataset=pd.read_csv('Data.csv')
dataset[:]
dataset.iloc[1,2]
dataset.iloc[:,:]
dataset.iloc[1:2,:]
dataset.iloc[1:3,1:-1]
dataset.iloc[1:3,1:-1].values
- Line ke 3 akan menampilkan semuanya
- Line ke 4 akan menampilkan irisan dari baris ke 1 dan kolom ke 2 (ingat index dimulai dari nol!)
- Line ke 5 juga seperti line ketiga, akan menampilkan semuanya
- Line ke 6 akan menampilkan irisan antara baris ke 1 sampai ke dua (ingat index terakhir tidak termasuk!), dan semua kolom
- Line ke 7 akan menampilkan irisan antara baris ke 1 sampai ke tiga, dan kolom ke 1 sampai terakhir (-1 artinya index terakhir, -2 artinya 1 index sebelum index terakhir)
- Line ke 8 akan menampilkan irisan seperti line ke 7, tanpa mengikut sertakan header kolomnya (values nya saja) dan akan merubahnya menjadi sebuah array (numpy array).