Exploratory Data Analysis

Elian Daiva
Labtek Indie
Published in
4 min readJul 18, 2018

Pada kesempatan kali ini, tim research Labtek Indie mencoba untuk melakukan analisa terhadap data dengan pendekatan Exploratory Data Analysis. Setelah sekian lama kami-kami ini berkutat dengan data-data internal melalui Excel atau Google Spreadsheet (dan yang paling terakhir Airtable), saya mencoba untuk menggunakan beberapa pendekatan data science dan machine learning untuk melakukan analisa.

Beberapa tutorial memang mengajarkan bagaimana cara melakukan EDA ini, beberapa diantaranya bisa ditemukan di Kaggle, platform berbagi notebook berisi script machine learning & data science yang cukup terkemuka. Untuk memulai EDA dengan pendekatan data science dan machine learning, beberapa tools dan library sudah tersedia di luaran sana. Beberapa diantaranya yang paling umum digunakan adalah numpy, scikit-learn, pandas, matplotlib, dan seaborn, yang kelimanya menggunakan python sebagai bahasa pemrograman.

1. Set Up Environment

Langkah pertama yang harus dilakukan tentunya adalah setup environment. Python library bisa menjadi sangat berantakan jika tidak di-isolate sesuai kegunaan dan penggunaannya. Untuk itu, dalam kasus saya Anaconda digunakan sebagai environment manager untuk kekacauan instalasi package/library dan versi python yang saya gunakan. Sementara untuk editor, nampaknya Jupyter Notebook dari IPython adalah editor python interaktif yang paling oke saat ini untuk explorasi skala riset. Langkah pertama ini usai setelah:

  1. Anaconda usai ter-install
  2. Environment khusus untuk riset ini selesai dibuat (baik melalui Anaconda GUI atau conda cli)
  3. Jupyter notebook terinstall dan diaktifkan pada environment yang telah dibuat di poin 2.

2. Data yang akan dianalisa

Langkah berikutnya tentunya berkaitan dengan data yang akan kita analisa, ambil contoh dataset yang banyak tersedia di website penyedia dataset. Beberapa bisa diunduh dari Kaggle atau bahkan Buzzfeed. Saya bahkan terpukau dengan repository dataset yang dimiliki oleh Buzzfeed, yang menunjukkan bahwa mereka adalah perusahaan media dengan berbasis data yang mature.

3. Exploratory Data Analysis

Setelah selesai memilih data yang diinginkan, saya mulai EDA yang tadi disebutkan di awal. Pada kesempatan kali ini saya gunakan data Pokemon.

# masukkan library yang akan kita gunakan
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# melakukan pembacaan pada dataset dalam format csv
data = pd.read_csv('./input/pokemon.csv')

Untuk mengetahui info lebih lanjut dari data/tabel yang baru saja dimasukkan, dapat divalidasi dengan mengetikkan data.info()

akan ditunjukkan jumlah dan tipe data yang tertampung dalam tabel tersebut seperti gambar di atas.

Jika sebelumnya data yang akan kita olah ini dikembangkan atau dibuat di MS Excel atau Google Sheets, kita dapat melakukan validasi untuk memastikan bahwa csv file yang kita import telah sesuai dengan mencetak beberapa data awal yang berada di dalam tabel dengan mengetikkan data.head(10)atau data.tail()untuk mendapatkan beberapa data di akhir tabel.

data.head() dan data.tail()

Lebih lanjut, kita bisa melihat dimensi (bentuk) dari data yang kita miliki dengan data.shape dan mengamati jumlah feature yang tersedia untuk dianalisis dengan menggunakan data.columns.

data.shape menunjukkan ada 800 buah data dengan 12 feature sementara data.columns akan memberikan feature apa saja yang ada dalam data kita.

Untuk memberikan gambaran statistik dari nilai setiap features, kita dapat menggunakan data.describe()untuk mendapatkan data-data seperti count(jumlah data), mean(rata-rata), std(standar deviasi), nilai mininum, maksimum, hingga nilai-nilai tengah pada 25%, 50%, dan 75%.

deskripsi statistik data

Correlation

Setelah kita mengetahui gambaran umum dari data/tabel yang kita miliki, kini saatnya kita beralih untuk pengolahan lebih jauh. Muncul pertanyaan, data mana saja yang butuh untuk diolah? Dari 12 features yang tersedia dalam tabel data pokemon ini, data manakah yang paling memberikan pengaruh terhadap data features lainnya.

Pandas library sudah memberikan tools untuk melakukan analisa korelasi, dengan menggunakan fungsi data.corr().

data korelasi antar feature dengan metode kendall rank correlation. Terdapat 3 metode pada pandas library: Kendall, Pearson dan Spearman.

Hasil pembacaan di atas, memberikan gambaran korelasi antar feature. Dapat kita lihat sel yang mempertemukan specdef dan defense memberikan nilai yang cukup besar dibandingkan sel yang lain. Sama pula halnya dengan specdef-hp atau specdef-specatk. Meskipun hal-hal tersebut dapat diprediksi sebelumnya, tapi dengan cara ini, kita sudah mendapat insight data-data mana saja yang cukup penting untuk diikutsertakan dalam pengolahan data lebih lanjut. Untuk mempermudah pembacaan, kita dapat melakukan mapping correlation table tersebut melalui matplotlib pada baris perintah berikut:

# correlation map
# higher correlations are brighter
f,ax = plt.subplots(figsize=(20,20))
sns.heatmap(correlations, annot=True, linewidths=.5, fmt='.3f', ax=ax)
plt.show
Sel yang semakin terang menunjukkan nilai korelasi yang semakin besar.

Namun seperti halnya jargon klise:

“Correlation does not imply causation”

Metode ini tidak serta merta menjamin hubungan sebab akibat antara satu feature dengan yang lainnya.

Tools ini hanya digunakan sebagai acuan untuk melakukan analisa dan memilah mana data yang patut menjadi insight diantara complex-noisy data yang kita punya.

Tim research Labtek Indie melakukan eksperimen ini ketika akan menganalisis data freelancers, namun karena data tersebut tidak dapat digunakan untuk berbagi, kami memutuskan untuk menggunakan data pokemon. Apabila Anda memiliki keinginan untuk berdiskusi lebih lanjut tentang Exploratory Data Analysis, silakan tinggalkan pesan di kolom komentar di bawah ini.

Penulis: Elian Daiva

Penyunting: Dea Chandra Marella

--

--