0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan

Modul 1 - Exploratory Data Analysis

Modul ini membahas tentang Exploratory Data Analysis (EDA) dengan tujuan agar mahasiswa dapat mempersiapkan lingkungan pengembangan aplikasi Python, menjelaskan karakteristik data, dan memahami kode Python untuk EDA. EDA mencakup langkah-langkah seperti pengumpulan data, pemahaman data, statistik deskriptif, visualisasi, penanganan data hilang, identifikasi outliers, dan analisis korelasi. Praktikum ini menggunakan dataset Heart Disease dan melibatkan penggunaan berbagai library Python untuk analisis data.

Diunggah oleh

KTI ID
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan

Modul 1 - Exploratory Data Analysis

Modul ini membahas tentang Exploratory Data Analysis (EDA) dengan tujuan agar mahasiswa dapat mempersiapkan lingkungan pengembangan aplikasi Python, menjelaskan karakteristik data, dan memahami kode Python untuk EDA. EDA mencakup langkah-langkah seperti pengumpulan data, pemahaman data, statistik deskriptif, visualisasi, penanganan data hilang, identifikasi outliers, dan analisis korelasi. Praktikum ini menggunakan dataset Heart Disease dan melibatkan penggunaan berbagai library Python untuk analisis data.

Diunggah oleh

KTI ID
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 12

Modul 1

Exploratory Data Analysis (EDA)


Metode Pembelajaran

1. Praktek
2. Belajar Mandiri
1.1. Tujuan Praktikum
1. Mahasiswa mampu mempersiapkan lingkungan pengembangan aplikasi Python
untuk Data Mining
2. Mahasiswa mampu menjelaskan karakteristik data melalui Exploratory Data Analysis
(EDA)
3. Mahasiswa mampu menulis dan memahami kode python untuk melakukan EDA
1.2. Alat dan Bahan
1. Jupyter Notebook atau IDE Python yang lain.
2. Python v.3 atau lebih baru.
3. Library pandas, matplotlib, dll.
4. Dataset Heart Disease
1.3. Landasan Teori
Exploratory Data Analysis (EDA)
Exploratory Data Analysis (EDA) adalah proses yang digunakan dalam analisis data untuk
memahami karakteristik, pola, dan informasi yang terkandung dalam data sebelum
melakukan analisis statistik lebih lanjut atau membangun model prediktif. Tujuan utama
EDA adalah untuk membantu peneliti atau analis data dalam mengungkapkan wawasan
yang mungkin tersembunyi dalam data serta mengidentifikasi anomali atau keanehan
dalam data. EDA adalah langkah penting dalam pengembangan pemahaman awal
tentang dataset sebelum melakukan analisis lebih lanjut. Berikut adalah langkah-langkah
umum dalam EDA:
1. Pengumpulan Data:
Langkah pertama dalam EDA adalah mengumpulkan semua data yang diperlukan
dari sumber yang relevan.
2. Pemahaman Data:
Periksa dataset secara umum untuk memahami strukturnya, seperti jumlah baris dan
kolom.
Identifikasi variabel apa yang ada dalam dataset dan apakah mereka adalah variabel
kategoris (data kualitatif) atau numerik (data kuantitatif).
3. Statistik Deskriptif:
Hitung statistik deskriptif seperti mean, median, modus, standar deviasi, kuartil, dan
lain-lain untuk setiap variabel numerik.
Hitung distribusi frekuensi dan tabel kontingensi untuk variabel kategoris.
4. Visualisasi Data:
Visualisasikan data menggunakan berbagai grafik seperti histogram, box plot,
scatter plot, bar plot, dan sebagainya.
Plotting data dapat membantu dalam mengidentifikasi pola, outliers, atau
kecenderungan dalam data.
5. Penanganan Data yang Hilang:
Identifikasi dan tangani data yang hilang, jika ada. Ini melibatkan imputasi data yang
hilang atau penghapusan baris/kolom yang memiliki data yang hilang.
6. Identifikasi Outliers:
Identifikasi dan memahami outliers (data yang berbeda jauh dari kebanyakan data)
dan pertimbangkan apakah mereka akan dihilangkan atau diatasi dengan metode
khusus.
7. Analisis Korelasi:
Evaluasi korelasi antara variabel-variabel numerik menggunakan matriks korelasi
atau scatter plot. Hal ini membantu memahami hubungan antara variabel dalam
dataset.
8. Analisis Distribusi:
Periksa apakah data mengikuti distribusi tertentu seperti distribusi normal atau
distribusi Poisson. Jika tidak, ini dapat memengaruhi pemilihan analisis statistik yang
sesuai.
9. Analisis Variabilitas:
Evaluasi variabilitas dalam data untuk memahami sejauh mana data berfluktuasi. Ini
dapat dilakukan dengan memeriksa deviasi standar, rentang, atau interquartile range
(IQR).
10. Temuan Awal: - Identifikasi temuan awal atau pola menarik dalam data yang dapat
membantu merumuskan pertanyaan atau hipotesis lebih lanjut.
EDA adalah tahap awal yang penting dalam proses analisis data dan membantu dalam
mempersiapkan data untuk tahap analisis lebih lanjut, seperti pemodelan statistik atau
pembangunan model machine learning. Dengan melakukan EDA yang cermat, Anda
dapat mendapatkan pemahaman yang lebih dalam tentang data yang Anda hadapi, yang
pada gilirannya dapat membantu Anda membuat keputusan yang lebih baik dan relevan.
1.4. Langkah-langkah Praktikum
1. Instalasi dan Persiapan Dataset
1. Pastikan Anda sudah menginstalasi Python pada komputer yang anda gunakan
2. Pastikan Anda menggunakan dataset yang disediakan oleh pengampu / asisten
praktikum disini.
2. Instalasi Library dan Loading library
In [1]: %%capture

## instalasi ini hanya dilakukan jika di komputer anda belum terinstall libr
!pip install pandas missingno numpy matplotlib seaborn scipy

import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import missingno as msno
from scipy import stats

3. Load Dataset
In [2]: dataset = pd.read_csv('diabetes_prediction_dataset.csv')

4. Mengetahui struktur dan properti dataset seperti:


- Ukuran (shape) dataset untuk melihat baris x kolom
- Contoh data (head)
- Kolom dataset
- Informasi dataset
In [3]: dataset.shape

Out[3]: (100000, 9)

In [4]: dataset.head(5) # lima contoh record data

Out[4]: gender age hypertension heart_disease smoking_history bmi HbA1c_level b


0 Female 80.0 0 1 never 25.19 6.6
1 Female 54.0 0 0 No Info 27.32 6.6
2 Male 28.0 0 0 never 27.32 5.7
3 Female 36.0 0 0 current 23.45 5.0
4 Male 76.0 1 1 current 20.14 4.8
In [5]: dataset.columns

Out[5]: Index(['gender', 'age', 'hypertension', 'heart_disease', 'smoking_history',


'bmi', 'HbA1c_level', 'blood_glucose_level', 'diabetes'],
dtype='object')

In [6]: dataset.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100000 entries, 0 to 99999
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 gender 99998 non-null object
1 age 100000 non-null float64
2 hypertension 100000 non-null int64
3 heart_disease 100000 non-null int64
4 smoking_history 100000 non-null object
5 bmi 100000 non-null float64
6 HbA1c_level 100000 non-null float64
7 blood_glucose_level 100000 non-null int64
8 diabetes 100000 non-null int64
dtypes: float64(3), int64(4), object(2)
memory usage: 6.9+ MB

5. Mendapatkan type kolom


- Numerical & Continous
- Categorical

In [7]: numerical_column = dataset.select_dtypes(include='number').columns


numerical_column.tolist()
numerical_column

Out[7]: Index(['age', 'hypertension', 'heart_disease', 'bmi', 'HbA1c_level',


'blood_glucose_level', 'diabetes'],
dtype='object')
In [8]: categorical_column = dataset.select_dtypes(exclude='number').columns
categorical_column.tolist()
categorical_column

Out[8]: Index(['gender', 'smoking_history'], dtype='object')

6. Mendapatkan statistik deskriptif untuk numerical value:


- mean, standard deviation, range, median, 0.25 and 0.75
quartiles

In [9]: dataset.describe()

Out[9]: age hypertension heart_disease bmi HbA1c_level


count 100000.000000 100000.00000 100000.000000 100000.000000 100000.000000
mean 41.885856 0.07485 0.039420 27.320767 5.527507
std 22.516840 0.26315 0.194593 6.636783 1.070672
min 0.080000 0.00000 0.000000 10.010000 3.500000
25% 24.000000 0.00000 0.000000 23.630000 4.800000
50% 43.000000 0.00000 0.000000 27.320000 5.800000
75% 60.000000 0.00000 0.000000 29.580000 6.200000
max 80.000000 1.00000 1.000000 95.690000 9.000000

7. Mendapatkan statistik untuk non-numerical / categorical value:


In [10]: dataset.describe(include=["object", "bool"])

Out[10]: gender smoking_history


count 99998 100000
unique 3 6
top Female No Info
freq 58551 35816

8. Distribusi kolom dalam dataset


a. Distribusi frequency umur dalam dataset
b. Distribusi age (umur) terhadap kondisi diabetes (ya/tidak)
c. Distribusi gender
d. Distribusi gender terhadap kondisi diabetes (ya/tidak)

In [11]: dataset['age'].plot(kind='hist', edgecolor='white')


Out[11]: <AxesSubplot:ylabel='Frequency'>

Insight : Plot tersebut menunjukkan frekuensi umur dalam dataset. Usia 50 tahunan
memiliki jumlah record terbanyak
In [12]: dataset.groupby('diabetes')['age'].plot(kind='kde')
plt.legend(['No', 'Yes'], loc='upper right', title='Diabetes')

Out[12]: <matplotlib.legend.Legend at 0x169516970>


Insight : Usia terbanyak terkena diabetes dalam data adalah antara 40 s.d. 80 tahun
In [13]: dataset.groupby('gender').size().plot(kind='pie', autopct='%.2f')

Out[13]: <AxesSubplot:>
In [14]: p = sns.countplot(data=dataset, x='diabetes', hue='gender')

Insight : Jumlah penderita diabetes berdasarkan gender Male dan Female hampir
sama

9. Mencari Missing Value (dengan chart)


In [15]: msno.bar(dataset, figsize = (8,2),color = "#1976D2", fontsize=10)
plt.show()
Insight : Pada kolom gender jumlahnya tidak sama dengan kolom lain, ini berarti ada
missing value

10. Melihat Unique Value pada tiap kolom


In [16]: for column_name in dataset.columns:
unique_values = len(dataset[column_name].unique())
print('''Kolom '{column_name}' memiliki
'{unique_values}' unique values'''.format(
column_name=column_name,
unique_values=unique_values)
)

Kolom 'gender' memiliki


'4' unique values
Kolom 'age' memiliki
'102' unique values
Kolom 'hypertension' memiliki
'2' unique values
Kolom 'heart_disease' memiliki
'2' unique values
Kolom 'smoking_history' memiliki
'6' unique values
Kolom 'bmi' memiliki
'4247' unique values
Kolom 'HbA1c_level' memiliki
'18' unique values
Kolom 'blood_glucose_level' memiliki
'18' unique values
Kolom 'diabetes' memiliki
'2' unique values
Insight : Kolom gender memiliki 4 unique value yang seharusnya hanya 2 value, ini
berarti nilai pada kolom gender tidak lazim dan perlu data cleaning

11. Mencari outliers pada dataset


- Mencari outliers pada kolom numerical saja

In [17]: plt.subplot(1, 2, 1)
plt.title("Age")
plt.boxplot(dataset['age'])

plt.subplot(1, 2, 2)
plt.title("Blood Glucose")
plt.boxplot(dataset['blood_glucose_level'])

plt.show()

Insight : Pada kolom age tidak terdapat outliers, sedangkan pada kolom
blood_glucose_level ada potensi 3 outliers

12. Melihat Korelasi Antar Kolom dengan Kolom diabetes


In [18]: # calculate the correlation matrix on the numeric columns
corr = dataset.select_dtypes('number').corr()
# plot the heatmap
sns.heatmap(corr, cmap="Blues", annot=True)

Out[18]: <AxesSubplot:>

Insight : Hasil plot korelasi tidak menunjukkan data yang signifikan saling
mempengaruhi

Catatan : Kolom gender dan smoking_history tidak disertakan karena masih bertipe
categorical. Perlu transformasi data menjadi numerik agar bisa dikorelasikan dengan
kolom lainnya

1.5. Tugas dan Latihan


Gunakan dataset dengan nama heart_2020_cleaned.csv yang disediakan oleh asisten
praktikum, lalu jawablah pertanyaan-pertanyaan berikut ini dengan menggunakan EDA:
1. Ada berapa kolom dan baris dataset tersebut?
2. Ada berapa continous / numeric dan categorical column pada dataset, dan sebutkan
masing-masing kolomnya!
3. Berapa perbandingan gender yang ada pada dataset? tunjukkan dengan visualisasi
4. Pada kategori umur berapa penyakit Heart Disease yang terbanyak berdasarkan
dataset?
5. Adakah kolom yang memiliki missing value?
6. Adakah kolom yang berpotensi memiliki outliers?
7. Adakah kolom-kolom numeric yang memiliki korelasi kuat?
In [ ]:

Anda mungkin juga menyukai