Data Preparation in Data Science Using R
Data Preparation in Data Science Using R
"Data preparation accounts for about 80% of the work of data scientists"
Kutipan di atas diambil dari salah satu artikel blog online Forbes berdasarkan hasil
survey terhadap 80 orang data scientist yang dilakukan oleh salah satu provider data
enrichment.
Selengkapnya dapat Anda lihat pada url berikut:
https://www.forbes.com/sites/gilpress/2016/03/23/data-preparation-most-time-
consuming-least-enjoyable-data-science-task-survey-says
Masih dari link yang sama, berikut adalah pie chart yang merepresentasikan porsi dari
pekerjaan data scientist. Proses data preparation di chart ini adalah Collecting data sets
(19%) dan Cleaning and organizing data (60%).
Dengan demikian, keterampilan untuk melakukan data preparation atau saat ini sering
disebut sebagai data wrangling adalah mutlak untuk seluruh data scientist dan data
engineer.
Lalu apa saja yang dilakukan di proses ini?
Data wrangling adalah proses membaca data dari berbagai sumber dan merubah isi
dan struktur sehingga dapat digunakan untuk analisa.
Data cleansing biasanya melibatkan isi yang perlu diubah karena kadang data
dimasukkan dari sistem yang berbeda.Bertolak belakang dengan anggapan bahwa
dengan sistem, data akan bersih dan standar. Pada kenyataannya, bisnis berkembang
lebih cepat dibandingkan dengan pembuatan sistem sehingga banyak design dirubah di
tengah jalan untuk mengakomodir hal ini, dan isi menjadi "berantakan". Penyebab
utama lainnya tentunya adalah sistem entri data yang manual.
Contoh yang paling sering adalah informasi pelanggan (customer). Di satu sistem
namanya boleh memasukkan gelar, dan di satu sistem tidak boleh… jadinya ada dua
nama yang serupa tapi tak sama sebagai berikut: "Agus Cahyono
S.Kom." dan "Cahyono, Agus".
Struktur perlu dirubah karena berbagai alasan, salah satu yang paling penting adalah
tiap algoritma mensyaratkan struktur data yang berbeda dan optimal.
Sebagai contoh: transaksi penjualan untuk satu algoritma bisa menggunakan row-
based transaction. Sedangkan algoritma lain harus menggunakan sparse-matrix.
Data wrangling adalah topik yang sangat besar, DQLab coba merancang materi ini
dengan pembagian ke beberapa course, artikel dan project – semuanya bisa diakses di
satu platform yang sama.
Namun hampir sebagian besar proses data wrangling sehari-hari dengan R akan
dicakup oleh course ini. Jika proses harus melibatkan tahapan yang lebih sulit dan tidak
dicakup di dalam course ini juga akan diinformasikan lebih lanjut.
Klik tombol Next untuk melanjutkan ke bagian berikutnya.
Next >
Pendahuluan
Dalam perjalanan Anda sebagai data scientist ataupun data engineer, pasti akan
menghadapi kolom dengan sebagian data tidak terisi atau kosong. Ini disebut
dengan missing value atau nilai yang hilang.
Menyadari hal ini adalah satu tahap penting karena kita akan sadar bahwa hal tersebut
adalah lumrah terjadi.
Tahap selanjutnya, kita perlu dua hal:
Bagaimana missing value direpresentasikan, ini penting sehingga kita bisa
identifikasi apakah nilai hilang karena dari awal memang ga ada, apakah karena
operasi matematika, dan lain-lain.
Dengan mengetahui representasi ini, kita dapat melakukan sesuatu terhadapnya.
Atau singkat dapat dikelola (manage) dengan baik.
Kedua hal tersebut sangat penting terutama bagi Anda yang berangkat dari SQL
ataupun bahasa programming lain, dimana ada satu reprentasi missing value saja, yaitu
NULL.
Sepanjang bab ini kita akan membahas representasi yang bisa dianggap missing value
yaitu NA, NULL dan NaN. Dan bagaimana kita melakukan banyak hal dengan missing
value ini.
Klik tombol Next untuk melanjutkan.
NA (Not Available)
NA adalah representasi utama dari missing value di R, dan merupakan suatu nilai
atomik.
Artinya posisi NA sama dengan contoh nilai-nilai atomik bilangan seperti 1, 2 atau 100.
Juga sama dengan contoh nilai karakter seperti "a", "b", atau "g".
Karena angka dan karakter seperti contoh di atas sering disebut sebagai konstanta,
maka NA adalah konstanta untuk missing value.
Dengan demikian, secara singkat NA adalah:
Representasi missing value
Merupakan konstanta atau nilai atomik
NA tidak bisa digunakan sebagai variable karena merupakan keyword, dan perhatikan
penulisan NA dimana kedua karakter adalah huruf besar.
Klik tombol Next untuk melanjutkan ke bagian praktek dan latihan.
> NA
[1] NA
Angka [1] adalah posisi index dari konstanta (yang selalu bernilai 1) dan NA adalah
nilainya sendiri. Dan NA ini secara default adalah representasi missing value untuk tipe
data logical.
Ini kita bisa cek dengan perintah yang menggunakan function typeof, sebagai berikut.
typeof(NA)
Hasilnya akan muncul sebagai berikut:
> typeof(NA)
[1] "logical"
Tentunya, NA adalah representasi missing value untuk seluruh tipe lain, tapi secara
default adalah untuk logical dulu. Namun akan kita jelaskan lebih jauh di bagian lain
pada bab ini.
Tugas Praktek
Cobalah ketik nilai NA pada bagian […1…] dan typeof(NA) pada bagian […2…] dari
code editor dan jalankan.
Jika berjalan dengan lancar, maka hasilnya akan terlihat seperti pada contoh output dari
code Lesson di atas.
x <- 3
x == 3
Maka hasil eksekusi perintah di atas akan menghasilkan nilai TRUE seperti terlihat dari
potongan code lengkap berikut.
x <- 3
> x == 3
[1] TRUE
Nah, ini tidak berlaku untuk NA. Jadi jika nilai x kita isi dan cek dengan cara yang sama
sebagai berikut.
x <- NA
x == NA
Pengecekan seperti ini tentunya tidak mungkin dilakukan jika kita menggunakan
konstruksi percabangan keputusan seperti if ataupun konstruksi perulangan seperti
while.
Nah, untuk mengatasi hal ini R menggunakan function bernama is.na dengan input
berupa konstanta atau variabel. Mari kita ubah simbol == contoh di atas menggunakan
function is.na seperti berikut.
is.na(NA)
5
60
[…1…]
3
[…2…]
6
Code Editor
Console
Graphic
>
Missing Value in R
Chapter
6
o
Pendahuluan
o
Kenapa kita memerlukan representasi Missing Value?
o
Apa saja yang bisa menyebabkan Missing Value?
o
NA (Not Available)
o
NA dan default type
o
Menggunakan function is.na
o
Variasi NA dan is.na
o
Coercion pada Vector yang mengandung NA
o
NULL
o
NULL dan Vector
o
Ringkasan Perbandingan NA dan NULL
o
NULL dan List
o
Inf untuk mewakili Infinite Number
o
NaN (Not a Number)
o
NaN dari hasil function log()
o
Fungsi is.nan
o
NaN dan is.na versus NA dan is.nan
o
Menghitung Jumlah Missing Values dari satu Vector
o
Kesimpulan
Progress
Variasi NA dan is.na
Seperti disebutkan sebelumnya, NA adalah merupakan nilai atomik dan konstanta, dan
awalnya merupakan representasi missing value dari logical.
Apa artinya?
Ini jika dihubungkan dengan tipe data lain di R seperti vector – dimana isinya harus
seragam tipe datanya – maka vector tersebut hanya boleh berisi nilai TRUE dan
FALSE.
Sebagai perbandingan, mari kita lihat contoh pembuatan satu vector dengan isi
campuran dari integer dan logical berikut.
c(1, 2, FALSE, 3)
[1] 1 2 0 3
Terlihat bahwa FALSE di atas dikonversi (beradaptasi) menjadi 0. Adaptasi ini juga
disebut dengan coerce di dokumentasi R.
Lalu bagaimana dengan missing value NA?
NA juga memiliki konstanta yang digunakan untuk beradaptasi, yaitu:
NA_integer_ untuk representasi tipe data "integer"
NA_real_ untuk representasi tipe data "double"
NA_complex_ untuk representasi tipe data "complex"
NA_character_ untuk representasi tipe data "character"
Dan semuanya memiliki nilai NA. Jika kita cek tipe data dari salah satu variasi missing
value NA sebagai berikut
typeof(NA_real_)
> typeof(NA_real_)
[1] "double"
Namun jika menggunakan is.na maka seluruhnya akan mengembalikan hasil TRUE.
Untuk lebih jelasnya mari kita lakukan praktek berikut.
Tugas Praktek
Cobalah ketikkan empat function typeof untuk menggantikan bagian […1…] s/d […4…]
code editor, dengan masing-masing secara berurut mengecek NA_integer_, NA_real_,
NA_complex_ dan NA_character_.
Kemudian ketikkan lagi function is.na untuk menggantikan bagian […5…] s/d […8…]
code editor secara berurut untuk NA_integer_, NA_real_, NA_complex_ dan
NA_character_.
Jika berhasil dijalankan, masing-masing baris perintah akan mengeluarkan hasil berikut.
[1] "integer"
[1] "double"
[1] "complex"
[1] "character"
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
Lesson
5
65
[…1…]
2
[…2…]
3
[…3…]
4
[…4…]
5
[…5…]
6
[…6…]
7
[…7…]
8
[…8…]
9
Code Editor
Console
Graphic
>
Modul R
Chapter
Progress
c(1, 2, NA, 4, 5)
[[1]]
[1] "double"
[[2]]
[1] "double"
[[3]]
[1] "double"
[[4]]
[1] "double"
[[5]]
[1] "double"
[[6]]
[1] "double"
[1] FALSE FALSE FALSE TRUE FALSE FALSE