Exploratory Data Analysis dengan Python untuk Pemula

Posting Komentar
Exploratory Data Analysis Python untuk Pemula

Sebagai orang yang berkarir sebagai Data Analyst atau Data Scientist, pasti tidak asing dengan istilah Exploratory Data Analysis (EDA). EDA adalah kegiatan dalam melihat karakteristik dari data. EDA biasanya digambarkan hasilnya dengan bantuan rumus statistik dan grafik tertentu. Umumnya, EDA berfungsi untuk melihat gambaran umum mengenai pola pada suatu data. 

Bagaimana cara melakukan Exploratory Data Analysis? Salah satu caranya adalah dengan menggunakan bahasa pemograman Python. Python adalah bahasa pemograman yang cukup populer saat ini utamanya dalam bidang pengolahan data.

Python sendiri memiliki banyak library yang memudahkan Data Analyst atau Data Scientist dalam melakukan analisis dan pengolahan data. Library yang umum digunakan oleh Data Analyst antara lain library Pandas, NumPy, SciPy, Matplotlib.

Disclaimer: Percobaan dalam menulis kode program dengan Python dapat dilakukan secara online di Google Colab. Bisa juga menggunakan notebook Kaggle.

Berikut adalah langkah-langkah umum dalam melakukan Exploratory Data Analysis dengan menggunakan Python untuk pemula.

1. Mengimpor library yang akan digunakan

Sebelum dapat digunakan, beberapa library tersebut harus diimpor terlebih dahulu dengan mengeksekusi kode berikut:

import pandas as pd

import numpy as np

Apa sih fungsi penggunaan dan impor library Pandas dan Numpy? Library Pandas digunakan untuk mengimpor file dataset dan mengolah dataframe sedangkan library Numpy digunakan untuk mengolah angka-angka. Secara umum, Pandas diimpor dengan nama pd dan numpy dengan nama np meskipun aturan sebenarnya membebaskan kita untuk memberi nama apapun. 

2. Mengambil dan deklarasi dataset yang akan dianalisis

Lalu bagaimana cara untuk mengimpor dataset menggunakan library Pandas? Cara adalah dengan mengeksekusi kode berikut:

order_df = pd.read_csv("https://storage.googleapis.com/dqlab-dataset/order.csv")

order_df adalah nama variabel untuk menyimpan sebuah dataframe. Kamu bisa menamainya dengan sesuka hati. pd.read_csv adalah kode untuk membaca data dalam bentuk csv. Data yang akan kita baca adalah data yang berasal dari storage DQLab yaitu dataset order. 

3. Melihat kontruksi dataframe yang akan dianalisis

Apa langkah selanjutnya? Selanjutnya adalah kita dapat mengetahui jumlah baris dan kolom dari dataset order_df.

order_df.shape

Kode di atas akan menghasilkan jumlah kolom dan baris pada dataframe order_df. Hasilnya, order_df memiliki 49.999 baris dan 12 kolom.

EDA with Python

Selain itu, kita juga dapat melihat gambaran sekilas dari dataframe order_df dengan kode berikut:

order_df.head()
order_df.tail()

Kode di atas akan menampilkan data lima teratas dan data lima terakhir dari dataframe order_df. Jika ingin menampilkan jumlah baris secara spesifik, bisa mengeksekusi dengan perintah head(10) atau tail(15).

EDA Python

Kita perlu melihat tipe data dari masing-masing kolom. 

order_df.info()

Exploratory Data Analysis Python

Kita juga perlu mengetahui apakah setiap kolom data terdapat missing value. Mengetahui jumlah missing value wajib bagi Data Analyst karena missing value memerlukan tindakan tertentu agar dataframe dapat dianalisis dengan hasil yang akurat.

order_df.isna().sum()

Python Programming

Cek juga apakah terdapat data yang duplikat.
order_df.duplicated().sum()
Python

Cek juga jumlah nunique value pada setiap kolom

order_df.nunique()

Python EDA

Kesimpulan: Terdapat missing value pada kolom product_weight_gram. Missing value ini akan dilakukan tindakan tertentu seperti dihapus, diisi dengan mean atau median dari keseluruhan data pada kolom tersebut.

3. Melihat statistik deskriptif pada dataframe

Dalam EDA, Data Analyst juga perlu untuk memeriksa statistik deskriptif pada dataframe yang dianalisis. Caranya adalah dengan eksekusi kode berikut.

order_df.describe()

Hasilnya adalah daftar statistik deskriptif pada kolom yang memiliki data numerik. Akan terlihat total count, mean, dan lain-lain pada setiap kolom.

EDA with Python

Jika ingin melihat statistik deskriptif seluruh kolom, coba eksekusi kode berikut.

order_df.describe(include="all")

Hasilnya adalah statistik deskriptif seluruh kolom baik kolom data numerik dan kolom data kategorikal.

EDA Python Beginner

Untuk mengetahui statistik deskriptif kolom data kategorikal yang terdiri dari count, frekuensi, dan unique value bisa menggunakan kode berikut.

order_df.describe(include="object")

EDA Python

4. Membuat histogram untuk melihat distribusi data

Langkah selanjutnya adalah kita perlu mengimpor library lain agar bisa membuat histogram. 

import matplotlib.pyplot as plt

Kita akan melihat distribusi data pada kolom 'price' dengan menggunakan histogram. Eksekusi kode berikut.

order_df[['price']].hist(figsize=(7, 5), bins=10, xlabelsize=8, ylabelsize=8)
plt.show()

library matplotlib python for EDA

Atau bisa juga dengan kode berikut untuk membuat histogram dari seluruh kolom data numerik.

order_df.hist(figsize=(15,10))

Histogram Python

5. Menemukan Outliers

Dalam suatu data, terdapat suatu permasalahan yaitu adanya outliers. Apa itu outliers? Outliers adalah data yang memiliki nilai menyimpang atau paling berbeda dari nilai-nilai lain yang ada pada kelompoknya. 

outliers

Outliers dapat ditemukan jika memenuhi dua kondisi berikut

data < Q1 - 1.5 * IQR
data > Q3 + 1.5 * IQR

Untuk mendapatkan nilai IQR, bisa dengan eksekusi kode berikut.

Q1 = order_df.quantile(0.25)
Q3 = order_df.quantile(0.75)
IQR = Q3 - Q1
print(IQR)
IQR Python

Lalu eksekusi kode berikut untuk mengetahui keberadaan outliers. Jika muncul nilai True, berarti ada outlier pada kolom data tersebut.

print((order_df < (Q1-1.5*IQR)) | (order_df > (Q3+1.5*IQR)))

outliers data pyhon

Sebenarnya, untuk frekuensi data dalam jumlah besar seperti order_df, pencarian outliers bisa dilakukan dengan cara membuat diagram. Penggambaran diagram pada setiap kolom numerik pada dataframe order_df membantu mempermudah dalam menemukan outliers. Diagram yang bisa dipakai untuk menemukan outliers adalah diagram boxplot.

order_df.boxplot(figsize=(15,7))

Boxplot Python

Kesimpulan: kolom quantity dan product_weight_gram memiliki outliers. Outliers ini akan dibuang pada data preprocessing. Outliers perlu dihilangkan agar model machine learning dapat menghasilkan prediksi lebih baik.

6. Eksplorasi lebih lanjut

Pada tahap ini, kita harus berkreasi untuk membedah isi data secara lebih rinci. Cara paling mudah dan jelas adalah dengan membuat diagram. Cara paling sederhana adalah menghitung total kuantitas pada setiap kolom data kategorikal. Contohnya adalah sebagai berikut.

plt.figure(figsize = (10, 5))
sns.countplot(order_df['product_category_name'])

Diagram EDA Python

plt.figure(figsize = (15, 5))
sns.countplot(order_df['order_status'])

EDA Python

sns.countplot(order_df['payment_type'])

EDA diagram

Mengubah tipe data pada kolom purchase_date dari tipe data object menjadi date. Lalu memecah kolom purchase_date menjadi kolom tahun dan kolom bulan. Tak lupa untuk menambah dua kolom tersebut ke order_df.

purchase_date = pd.to_datetime(order_df['purchase_date'])
purchase_year = purchase_date.dt.year
purchase_month = purchase_date.dt.month
order_df['purchase_year'] = purchase_year
order_df['purchase_month'] = purchase_month

Tak lupa untuk melihat total pembelian setiap tahun.

sns.countplot(purchase_year)

EDA Python

order_df['order_id'].groupby(order_df['purchase_year']).count()
purchase_in_2016 = (372/(372+49627))*100
purchase_in_2017 = (49627/(372+49627))*100
print('Percentage of purchase in 2016 is : ' ,purchase_in_2016)
print('Percentage of purchase in 2017 is : ' ,purchase_in_2017)

EDA with Python

order_df['order_id'].groupby([order_df['purchase_month'], order_df['purchase_year']]).count()

EDA with Python

sns.countplot(data=order_df, x="purchase_month", hue="purchase_year")

EDA

order_df['order_id'].groupby([order_df['purchase_year'], order_df['purchase_month']]).count()

EDA

Kesimpulan dari hasil Exploratory Data Analysis 

Berikut adalah hasil dari EDA pada dataframe order_df.
  1. Penjualan paling banyak terjadi pada tahun 2017 dengan presentase 99% dibandingkan pada tahun 2016 yang memiliki sedikit sekali riwayat penjualan
  2. Pada tahun 2016, penjualan hanya terjadi pada tiga bulan yaitu bulan September, Oktober, dan Desember
  3. Penjualan paling sedikit adalah pada bulan Desember 2016 dimana penjualan hanya terjadi satu kali.
  4. Penjualan paling banyak terjadi pada November 2017 dengan total 8811 kali
  5. Tidak ada perbedaan signifikan terhadap empat pilihan metode pembayaran yang dipakai oleh konsumen. 
  6. Tidak ada perbedaan signifikan terhadap kategori produk yang dibeli oleh konsumen.
  7. Hampir seluruh pembelian memiliki status order delivered. 
  8. Penjualan mengalami naik turun secara bertahap hingga mengalami kenaikan signifikan pada November 2017. Setelah itu, penjualan menurun cukup signifikan sekitar 50% pada bulan Desember 2017

Dalam melakukan Exploratory Data Analysis, diperlukan banyak latihan agar intuisi kita dalam mengutak-atik data menjadi semakin berkembang. Banyak hal yang masih perlu dieksplorasi dari data penjualan ini. Misalnya adalah hubungan antar kolom satu dengan kolom lainnya mungkin bisa lebih dikulik lagi. 


Itsna.
Content Writer | Data Enthusiast | Front End Enthusiast | System Analyst

Related Posts

Posting Komentar