Exploratory Data Analysis

Exploratory Data Analysis adalah suatu proses awal mengidentifikasi pola, menemukan anomali, menguji hipotesis dan memeriksa asumsi pada data.  EDA berguna dalam mendeteksi kesalahan dari awal, dapat mengidentifikasi outlier, mengetahui hubungan antar data serta dapat menggali faktor-faktor penting dari data dan memberikan wawasan baru. EDA sangat bermanfaat untuk analisis statistik. EDA sering kali digunakan untuk menemukan hasil yang valid dan relevan sebagai arah tujuan bisnis yang diinginkan.

Berikut contoh program EDA:

Import library yang diperlukan

import pandas as pd

import numpy as np

Buka file yang diperlukan

data_df = pd.read_excel('Global Superstore Orders 2016.xlsx')

Data Understanding

Tampilkan 5 baris pertama data menggunakan .head()

data_df.head()



.tail() untuk menampilkan 5 baris terakhir  data

data_df.tail()




untuk menampilkan informasi tentang data gunakan .info(), dari fungsi ini kitab isa mengetahui nama dan type data dari masing2 kolom, selain itu kita juga bisa mengetahui ada berapa jumlah baris non-null dalam sebuah kolom

data_df.info()


.columns untuk menampilkan nama2 kolom dari data

data_df.columns



Kemudian untuk menampilkan nama kolom, banyaknya baris perkolom, dan nilai unik (tidak ada duplikasi) menggunakan kode di bawah. unique() digunakan untuk menampilkan nilai unik (tidak ada duplikasi)

for col in data_df.columns:

    print(col, len(data_df[col].unique()), data_df[col].unique())



Kemudian untuk mendeskripsikan data seperti nilai rata2, nilai maks, nilai minimal dari data dll, menggunakan describe(), hanya data numerik yang akan dimunculkan.

data_df.describe()


Jika diawal menggunakan .info() untuk menampilkan nama kolom, berapa jumlah baris non-null dan type data kolom. Kita juga bisa hanya menampilkan nama kolom dan type datanya menggunakan .dtypes

data_df.dtypes



Kemudian cek apakah ada dan berapa jumlah nilai null dalam kolom. Dari gambar dibawah menunjukkan ada kolom berisi nilai null yaitu kolom “Postal Code” sebanyak 41296.

data_df.isna().sum()



Data Visualization

from matplotlib import pyplot as plt

import seaborn as sns

Pecah kolom “Order Date” menjadi 3 kolom yaitu: “Order Day”, ”Oder Month”, ”Order Year”

data_df['Order Day'] = data_df['Order Date'].dt.day

data_df['Order Month'] = data_df['Order Date'].dt.month

data_df['Order Year'] = data_df['Order Date'].dt.year

 

Buat variable baru yang berisi jumlah penjualan menurut bulan tahun

penjualan_df = data_df.groupby(['Order Year', 'Order Month'])

penjualan_df = penjualan_df[['Sales']].sum().reset_index()

Dari barplot di bawah menunjukkan jumlah  penjualan mengalami naik turun tiap bulan antar tahunnya.

sns.barplot(data = penjualan_df,

            x='Order Month', y= 'Sales',

            hue='Order Year'            

             ).set_title('sum of sales based on month')



Grafik lineplot lebih mudah untuk diamati, yaitu di setiap tahunnya pada bulan ke 2, 4, 7, dan 10 jumlah penjualan mengalami penurunan. Sedangkan pada bulan 3, 6, 8, 9, 11 cenderung mengalami kenaikan. Dari hasil ini dapat digunakan untuk menentukan seperti penambahan jumlah stok pada bulan adanya kenaikan jumlah penjualan, ataupun pengurangan stok pada bulan Ketika mengalami penurunan jumlah penjualan.

sns.lineplot(x='Order Month', y= 'Sales',

             data = penjualan_df,

             hue='Order Year', style='Order Year', markers=True,

             dashes=False).set_title('sum of sales based on month')

# plt.xlim(1)

plt.ylim(0)



Buat variable baru yang berisi jumlah penjualan menurut tahun

penjualan_df_year = data_df.groupby(['Order Year'])

penjualan_df_year = penjualan_df_year['Sales'].sum().reset_index()

Dari barplot dan lineplot di bawah menunjukkan bahwa jumlah penjualan mengalami peningkatan tiap tahunnya

sns.barplot(x='Order Year', y= 'Sales',

            data = penjualan_df_year).set_title('sum of sales based on year')



sns.lineplot(x='Order Year', y= 'Sales',

             data = penjualan_df).set_title('sum of sales based on year')



Buat variable baru yang berisi jumlah penjualan menurut kategori

penjualan_df_category = data_df.groupby(['Category'])

penjualan_df_category = penjualan_df_category['Sales'].sum().reset_index()

Menampilkan jumlah penjualan per kategori menggunakan dictionary

dict_cat_sales={}

category= data_df['Category'].unique()

# print('category: {}'.format(category))

for c in category:

    dict_cat_sales[c] = (penjualan_df_category['Sales'][penjualan_df_category['Category']==c].sum())

print('dictt_cat_sales: {}'.format(dict_cat_sales))



Dari barplot di bawah menunjukkan kategori Technology memiliki jumlah penjualan tertinggi dan Office Suply memiliki jumlah penjualan terendah

sns.barplot(x='Category', y= 'Sales',

             data = penjualan_df_category).set_title('sum of sales based on category')



 

 




Source Code dan file: https://github.com/javid321/Data-Science-Data-Analyst/tree/main/EDA

 

Reference:

https://dqlab.id/data-analisis-machine-learning-untuk-proses-pengolahan-data

https://algorit.ma/blog/exploratory-data-analysis-2022/



0 Komentar