1. Home
  2. Docs
  3. MAteri EDA
  4. Data type, missing value, outlier

Data type, missing value, outlier

. Mengenal Tipe Data 

           Dalam dunia analisa data, mengenal tipe dari data yang tersedia sangat diperlukan. Mengapa diperlukan? Karena pengolahan data bertipe data tertentu adalah unik guna mengaplikasikan pengkalkulasian statistik pada data yang dihadapi. 

Gambar 1: Jenis-Jenis Tipe Data yang Lumrah dalam Dunia Sains Data

             Sebelum kita melakukan operasi-operasi terhadap data, mengenali data secara dalam dan komprehensif merupakan keharusan. Bila kita ambil contoh proses rekrutmen dalam suatu perusahaan, seorang HRD tidak mungkin dengan mudah meloloskan seseorang tanpa mengetahui secara detail mengenai sifat-sifat, kemampuan, serta psikis seseorang. Jika HRD tersebut dengan seenaknya memasukkan pegawai tanpa mengenal lebih dalam calon pegawai tersebut, maka ada kemungkinan performa perusahaan turun akibat kehadiran pekerja tersebut. Sama halnya dengan data. Jika seseorang tidak mengenal data tersebut secara mendalam, ada kemungkinan model statistik (menggunakan teknik machine learning) yang dibangun tidak maksimal.

Maka dari itu, sebelum mengenal lebih jauh mengenai data, kita terlebih dahulu berkenalan dengan jenis-jenis data.

1.1. Data Kategorikal

           Data kategorikal merupakan data yang mencerminkan karakteristik seperti bahasa, jenis kelamin seseorang, warna rambut seseorang, atau nilai numerik bulat yang tidak memiliki makna matematis seperti 1 untuk laki-laki dan 0 untuk perempuan. Data kategorikal tersebut kemudian terbagi atas dua jenis: Nominal dan Ordinal

1.1.1. Data Nominal

            Data Nominal merupakan data yang tidak memiliki order dan berbentuk label tanpa adanya tingkatan perangkingan. Contoh dari data nominal adalah terdapat pada Gambar 2 berikut.

Gambar 2. Contoh-Contoh Data Nominal

1.1.2. Data Ordinal

            Sementara itu, data ordinal merupakan data kategorikal yang disusun dalam sebuah order dan diatur menggunakan peringkat-peringkat tertentu. Contohnya adalah rangking klasemen liga sepakbola, status ekonomi, huruf mutu, level pendidikan, dan level kepuasan konsumen terhadap makanan tertentu.

Gambar 3. Contoh-Contoh Data Ordinal

1.2. Data Numerik

           Data numerik terbagi menjadi 2, yaitu kontinyu dan diskrit. 

1.2.1. Variabel Diskrit

          Variabel diskrit merupakan data yang memiliki nilai yang terbatas, seperti contoh : jumlah medali yang dimenangkan oleh para atlet. 

1.2.2. Variabel kontinyu

           Data kontinu merupakan jenis data yang berbeda dengan data kategorikal. Data kontinu merupakan data kuantitatif yang dapat diukur, dapat memiliki nilai yang sangat tinggi (infinite). Salah satu contoh data-data kontinu adalah sebagai berikut:

  • Massa bayi yang baru dilahirkan
  • Kecepatan angin yang berhembus
  • Temperatur dari pendingin makanan
  • Usia

Selain contoh diatas, terdapat 2 tipe data yang masuk ke dalam kategori data kontinyu yaitu data interval dan rasio. 

1.2.2.1. Data Interval

              Data interval merupakan skala dimana dua buah nilai memiliki makna tertentu. Beberapa karakteristik dari data interval adalah sebagai berikut: (src https://www.questionpro.com/blog/interval-data/)

  • Pengukuran: data tersebut diukur menggunakan skala interval. Contohnya adalah penggunaan penggaris dimana untuk setiap interval terkecil penanda pertama mengukur jarak temperatur yang sama persis dengan interval terkecil penanda yang lain.
  • Perbedaan interval: pengukuran untuk setiap nilai dari interval data sama persis. Contohnya adalah perbedaan interval antara 10 cm dan 20 cm adalah sama dengan 20 cm dan 30 cm
  • Kalkulasi: Dalam data interval, seseorang dapat menambah-kurangkan angka pada data tersebut, tetapi tidak bisa membagi atau mengalikan data tersebut dengan suatu nilai. 
  • Titik nol: Titik nol dalam data interval dapat berubah-ubah. Contohnya adalah temperatur dapat bernilai negatif

1.2.2.2. Data Rasio

              Data rasio merupakan data yang terdefinisi pada data kuantitatif yang memiliki sifat-sifat yang sama dengan data interval. Data rasio memiliki sifat-sifat yang sama dengan data interval. Namun, data rasio memiliki nilai 0 yang absolut.

Contoh data rasio antara lain pengukuran tinggi badan. Tinggi badan seseorang tidak dapat bernilai negatif (misal -70 cm). Pun halnya dengan massa seseorang yang tidak dapat bernilai negatif (-29 kg).

Gambar 4. Beberapa Contoh Data Kualitatif dan Kuantitatif

2. Dealing Missing Value

         Ketika dihadapkan terhadap suatu data, kita terkadang dihadapkan dengan data yang tidak utuh. Hal ini tentu akan berpengaruh terhadap analisa dan performansi model machine learning jika data-data tersebut dijadikan “modal” dalam membuat suatu model Machine Learning. Jenis-jenis data yang hilang bervariasi jenisnya. Salah satunya adalah data yang hilang dalam suatu sel tertentu maupun seluruh observasi dalam bentuk baris. 

Salah satu deteksi nilai yang hilang dalam menggunakan pandas dapat direpresentasikan sebagai nilai NaN. 

Gambar: Salah Satu Contoh Data yang Mengandung Nilai NaN

Ada beberapa cara untuk mengecek apakah dataset yang kita miliki memiliki nilai NaN atau missing.

  • Menggunakan atribut .info()

Atribut .info() menampilkan tipe data dari setiap kolom, jumlah Non null dan penggunaan memori. Dataset memiliki 9 baris, dengan menggunakan .info() kita bisa mengetahui bahwa dari dataset diatas yang tidak memiliki nilai NaN hanya kolom ST_NAME.

  • Menggunakan atribut .describe()

Atribut .describe() menampilkan statistika deskriptif dari kolom bertipe numerik, count adalah jumlah non nul value. Dari hasil describe() diatas terlihat bahwa kolom PID dan ST_NUM memiliki nilai NaN / missing dikarenakan baris dataset yang dimiliki adalah 9.

  • Menggunakan atribut .isnull()

dengan menggunakan atribut .isnull() dan .sum(), kita bisa dapatkan jumlah nilai NaN dari setiap kolom.

Namun, tidak semua data yang kita miliki/dapatkan, konsisten memberikan nilai NaN untuk data kosong. Contohnya ada yang berisi n/a, blank space, … (titik-titik), – (dash/double dash), dan lain-lain. Maka kita perlu melakukan data cleaning terlebih dahulu.

Sebagai contoh, kita dapat melakukan cek pada data, misalkan dilakukan pengecekan pada column ST_NUM, dengan cara berikut:

Terlihat, data yang berisikan NaN akan dibaca sebagai data yang kosong/hilang. Tetapi ketika kita melakukan pengecekan pada column NUM_BEDROOMS yang menggunakan format berbeda untuk missing values, maka terlihat sebagai berikut:

Data yang berisikan na  tidak dibaca sebagai data kosong. Cara yang dapat kita lakukan adalah dengan memasukkan format missing values yang tidak terbaca tersebut kedalam list, sehingga akan di anggap juga sebagai data kosong/hilang, seperti berikut:

Sekarang, semuanya sudah dianggap sebagai data kosong/hilang. Kita dapat menambahkan format lain yang belum terdeteksi nantinya ketika kita sudah mengolah data lebih lanjut.

Setelah kita membersihkan data. Langkah selanjutnya adalah mengatasi missing values.

Ada beberapa cara yang dapat dilakukan untuk menghilangkan nilai NaN. Beberapa cara tersebut antara lain:

  • Menghapus Baris Data yang Mengandung nilai NaN
  • Substitusi: Mengganti nilai data tersebut dengan (a) nilai mean, median atau modus kolom terkait, (b) nilai tetangga depan atau belakang dari baris yang missing tersebut. 

Untuk lebih jelasnya silahkan tonton materi video ya.. 

3. Handling outliers

Nilai outliers (atau yang biasa disebut dengan nilai pencilan) merupakan suatu nilai yang tidak normal. Dalam kata lain, nilai tersebut bernilai jauh sekali dari pusat data. Nilai pencilan ini dapat menyebabkan distorsi terhadap nilai yang asli.

Dampaknya jika tidak serius menanggulangi nilai outliers akan berdampak pada ketidaksesuaian data analisa dan ketidakakuratan model machine learning yang dikerjakan. Indikasi outliers dapat dilihat pada grafik berikut ini 

 

Grafik diatas merupakan jenis grafik boxplot yang dapat mendeteksi nilai outliers. Boxplot merupakan metode yang memisahkan data berdasarkan kuartil data. Jangkauan data yang berbentuk box merupakan data yang berkisar antara kuartil pertama hingga kuartil ketiga. Sementara itu, pasangan cabang yang berbentuk huruf T merupakan jangkauan kuartil Q0 dan Q4. Nilai titik-titik yang dapat dilihat pada gambar yang dilingkati warna merah diatas merupakan nilai outliers yang sebaiknya dihindari.

Ada beberapa cara untuk menghilangkan outliers.

  • Mengganti nilai outliers menggunakan nilai lower bound dan upper bound.
  • Capping menggunakan nilai median
  • Capping menggunakan nilai mean
  • Capping menggunakan nilai modus

Nilai lower bound bisa didapatkan menggunakan rumus

Lb=Q1 -(IQR 1.5)

Sementara itu, nilai upper bound bisa didapatkan menggunakan rumus

Ub=Q3+(IQR 1.5)

Dengan IQR = Q3 – Q1.

Nilai pencilan yang melebihi nilai upper bound akan diubah menjadi nilai upper bound. Sementara itu, nilai pencilan yang kurang dari nilai lower bound akan diubah nilainya menjadi nilai lower bound. Sehingga, tidak ada lagi nilai pencilan yang tentunya akan meningkatkan efektifitas model.

Cara lain yang dapat digunakan adalah dengan mengganti nilai pencilan tersebut menjadi nilai median, mean, atau modus. Deteksi nilai outliers dapat dilakukan dengan cara serupa menggunakan nilai upper bound dan lower bound yang sudah dijelaskan sebelumnya.

. Mengenal Tipe Data 

           Dalam dunia analisa data, mengenal tipe dari data yang tersedia sangat diperlukan. Mengapa diperlukan? Karena pengolahan data bertipe data tertentu adalah unik guna mengaplikasikan pengkalkulasian statistik pada data yang dihadapi. 

Gambar 1: Jenis-Jenis Tipe Data yang Lumrah dalam Dunia Sains Data

             Sebelum kita melakukan operasi-operasi terhadap data, mengenali data secara dalam dan komprehensif merupakan keharusan. Bila kita ambil contoh proses rekrutmen dalam suatu perusahaan, seorang HRD tidak mungkin dengan mudah meloloskan seseorang tanpa mengetahui secara detail mengenai sifat-sifat, kemampuan, serta psikis seseorang. Jika HRD tersebut dengan seenaknya memasukkan pegawai tanpa mengenal lebih dalam calon pegawai tersebut, maka ada kemungkinan performa perusahaan turun akibat kehadiran pekerja tersebut. Sama halnya dengan data. Jika seseorang tidak mengenal data tersebut secara mendalam, ada kemungkinan model statistik (menggunakan teknik machine learning) yang dibangun tidak maksimal.

Maka dari itu, sebelum mengenal lebih jauh mengenai data, kita terlebih dahulu berkenalan dengan jenis-jenis data.

1.1. Data Kategorikal

           Data kategorikal merupakan data yang mencerminkan karakteristik seperti bahasa, jenis kelamin seseorang, warna rambut seseorang, atau nilai numerik bulat yang tidak memiliki makna matematis seperti 1 untuk laki-laki dan 0 untuk perempuan. Data kategorikal tersebut kemudian terbagi atas dua jenis: Nominal dan Ordinal

1.1.1. Data Nominal

            Data Nominal merupakan data yang tidak memiliki order dan berbentuk label tanpa adanya tingkatan perangkingan. Contoh dari data nominal adalah terdapat pada Gambar 2 berikut.

Gambar 2. Contoh-Contoh Data Nominal

1.1.2. Data Ordinal

            Sementara itu, data ordinal merupakan data kategorikal yang disusun dalam sebuah order dan diatur menggunakan peringkat-peringkat tertentu. Contohnya adalah rangking klasemen liga sepakbola, status ekonomi, huruf mutu, level pendidikan, dan level kepuasan konsumen terhadap makanan tertentu.

Gambar 3. Contoh-Contoh Data Ordinal

1.2. Data Numerik

           Data numerik terbagi menjadi 2, yaitu kontinyu dan diskrit. 

1.2.1. Variabel Diskrit

          Variabel diskrit merupakan data yang memiliki nilai yang terbatas, seperti contoh : jumlah medali yang dimenangkan oleh para atlet. 

1.2.2. Variabel kontinyu

           Data kontinu merupakan jenis data yang berbeda dengan data kategorikal. Data kontinu merupakan data kuantitatif yang dapat diukur, dapat memiliki nilai yang sangat tinggi (infinite). Salah satu contoh data-data kontinu adalah sebagai berikut:

  • Massa bayi yang baru dilahirkan
  • Kecepatan angin yang berhembus
  • Temperatur dari pendingin makanan
  • Usia

Selain contoh diatas, terdapat 2 tipe data yang masuk ke dalam kategori data kontinyu yaitu data interval dan rasio. 

1.2.2.1. Data Interval

              Data interval merupakan skala dimana dua buah nilai memiliki makna tertentu. Beberapa karakteristik dari data interval adalah sebagai berikut: (src https://www.questionpro.com/blog/interval-data/)

  • Pengukuran: data tersebut diukur menggunakan skala interval. Contohnya adalah penggunaan penggaris dimana untuk setiap interval terkecil penanda pertama mengukur jarak temperatur yang sama persis dengan interval terkecil penanda yang lain.
  • Perbedaan interval: pengukuran untuk setiap nilai dari interval data sama persis. Contohnya adalah perbedaan interval antara 10 cm dan 20 cm adalah sama dengan 20 cm dan 30 cm
  • Kalkulasi: Dalam data interval, seseorang dapat menambah-kurangkan angka pada data tersebut, tetapi tidak bisa membagi atau mengalikan data tersebut dengan suatu nilai. 
  • Titik nol: Titik nol dalam data interval dapat berubah-ubah. Contohnya adalah temperatur dapat bernilai negatif

1.2.2.2. Data Rasio

              Data rasio merupakan data yang terdefinisi pada data kuantitatif yang memiliki sifat-sifat yang sama dengan data interval. Data rasio memiliki sifat-sifat yang sama dengan data interval. Namun, data rasio memiliki nilai 0 yang absolut.

Contoh data rasio antara lain pengukuran tinggi badan. Tinggi badan seseorang tidak dapat bernilai negatif (misal -70 cm). Pun halnya dengan massa seseorang yang tidak dapat bernilai negatif (-29 kg).

Gambar 4. Beberapa Contoh Data Kualitatif dan Kuantitatif

2. Dealing Missing Value

         Ketika dihadapkan terhadap suatu data, kita terkadang dihadapkan dengan data yang tidak utuh. Hal ini tentu akan berpengaruh terhadap analisa dan performansi model machine learning jika data-data tersebut dijadikan “modal” dalam membuat suatu model Machine Learning. Jenis-jenis data yang hilang bervariasi jenisnya. Salah satunya adalah data yang hilang dalam suatu sel tertentu maupun seluruh observasi dalam bentuk baris. 

Salah satu deteksi nilai yang hilang dalam menggunakan pandas dapat direpresentasikan sebagai nilai NaN. 

Gambar: Salah Satu Contoh Data yang Mengandung Nilai NaN

Ada beberapa cara untuk mengecek apakah dataset yang kita miliki memiliki nilai NaN atau missing.

  • Menggunakan atribut .info()

Atribut .info() menampilkan tipe data dari setiap kolom, jumlah Non null dan penggunaan memori. Dataset memiliki 9 baris, dengan menggunakan .info() kita bisa mengetahui bahwa dari dataset diatas yang tidak memiliki nilai NaN hanya kolom ST_NAME.

  • Menggunakan atribut .describe()

Atribut .describe() menampilkan statistika deskriptif dari kolom bertipe numerik, count adalah jumlah non nul value. Dari hasil describe() diatas terlihat bahwa kolom PID dan ST_NUM memiliki nilai NaN / missing dikarenakan baris dataset yang dimiliki adalah 9.

  • Menggunakan atribut .isnull()

dengan menggunakan atribut .isnull() dan .sum(), kita bisa dapatkan jumlah nilai NaN dari setiap kolom.

Namun, tidak semua data yang kita miliki/dapatkan, konsisten memberikan nilai NaN untuk data kosong. Contohnya ada yang berisi n/a, blank space, … (titik-titik), – (dash/double dash), dan lain-lain. Maka kita perlu melakukan data cleaning terlebih dahulu.

Sebagai contoh, kita dapat melakukan cek pada data, misalkan dilakukan pengecekan pada column ST_NUM, dengan cara berikut:

Terlihat, data yang berisikan NaN akan dibaca sebagai data yang kosong/hilang. Tetapi ketika kita melakukan pengecekan pada column NUM_BEDROOMS yang menggunakan format berbeda untuk missing values, maka terlihat sebagai berikut:

Data yang berisikan na  tidak dibaca sebagai data kosong. Cara yang dapat kita lakukan adalah dengan memasukkan format missing values yang tidak terbaca tersebut kedalam list, sehingga akan di anggap juga sebagai data kosong/hilang, seperti berikut:

Sekarang, semuanya sudah dianggap sebagai data kosong/hilang. Kita dapat menambahkan format lain yang belum terdeteksi nantinya ketika kita sudah mengolah data lebih lanjut.

Setelah kita membersihkan data. Langkah selanjutnya adalah mengatasi missing values.

Ada beberapa cara yang dapat dilakukan untuk menghilangkan nilai NaN. Beberapa cara tersebut antara lain:

  • Menghapus Baris Data yang Mengandung nilai NaN
  • Substitusi: Mengganti nilai data tersebut dengan (a) nilai mean, median atau modus kolom terkait, (b) nilai tetangga depan atau belakang dari baris yang missing tersebut. 

Untuk lebih jelasnya silahkan tonton materi video ya.. 

3. Handling outliers

Nilai outliers (atau yang biasa disebut dengan nilai pencilan) merupakan suatu nilai yang tidak normal. Dalam kata lain, nilai tersebut bernilai jauh sekali dari pusat data. Nilai pencilan ini dapat menyebabkan distorsi terhadap nilai yang asli.

Dampaknya jika tidak serius menanggulangi nilai outliers akan berdampak pada ketidaksesuaian data analisa dan ketidakakuratan model machine learning yang dikerjakan. Indikasi outliers dapat dilihat pada grafik berikut ini 

 

Grafik diatas merupakan jenis grafik boxplot yang dapat mendeteksi nilai outliers. Boxplot merupakan metode yang memisahkan data berdasarkan kuartil data. Jangkauan data yang berbentuk box merupakan data yang berkisar antara kuartil pertama hingga kuartil ketiga. Sementara itu, pasangan cabang yang berbentuk huruf T merupakan jangkauan kuartil Q0 dan Q4. Nilai titik-titik yang dapat dilihat pada gambar yang dilingkati warna merah diatas merupakan nilai outliers yang sebaiknya dihindari.

Ada beberapa cara untuk menghilangkan outliers.

  • Mengganti nilai outliers menggunakan nilai lower bound dan upper bound.
  • Capping menggunakan nilai median
  • Capping menggunakan nilai mean
  • Capping menggunakan nilai modus

Nilai lower bound bisa didapatkan menggunakan rumus

Lb=Q1 -(IQR 1.5)

Sementara itu, nilai upper bound bisa didapatkan menggunakan rumus

Ub=Q3+(IQR 1.5)

Dengan IQR = Q3 – Q1.

Nilai pencilan yang melebihi nilai upper bound akan diubah menjadi nilai upper bound. Sementara itu, nilai pencilan yang kurang dari nilai lower bound akan diubah nilainya menjadi nilai lower bound. Sehingga, tidak ada lagi nilai pencilan yang tentunya akan meningkatkan efektifitas model.

Cara lain yang dapat digunakan adalah dengan mengganti nilai pencilan tersebut menjadi nilai median, mean, atau modus. Deteksi nilai outliers dapat dilakukan dengan cara serupa menggunakan nilai upper bound dan lower bound yang sudah dijelaskan sebelumnya.

Src: https://towardsdatascience.com/dealing-with-missing-data-in-data-science-projects-e8ac7a4efdff

https://towardsdatascience.com/data-cleaning-with-python-and-pandas-detecting-missing-values-3e9c6ebcf78b