You are currently viewing Data Science bagi Pemula | #2 Melakukan Analisa Data Kasus Covid19 Menggunakan Pemrograman Python

Data Science bagi Pemula | #2 Melakukan Analisa Data Kasus Covid19 Menggunakan Pemrograman Python

Analisa Kasus Covid 19 Menggunakan Pemograman Python – Hallo teman–teman apa kabar? mudah-mudahan selalu diberikan kesehatan ya. Pada Artikel kali ini kita membahas tutorial cara melakukan analisa data kasus Covid-19 yang terjadi di Indonesia Menggunakan Pemograman PYTHON. Pada Praktikum kali ini kita menggunakan Aplikasi Google Colab untuk menganalisa data kasus Covid-19 tersebut. Sedangkan Untuk Datasetnya kita menggunakan 3 dataset yaitu confirmed_acc.csv, patient.csv dan province.csv yang dapat di download pada Link Berikut

Baca Juga: Data Science bagi Pemula | #1 Melakukan Analisa Produk Menggunakan Pemrograman Python

Adapun Penjelasan setiap koding dan penjelasan Lengkap tentang hasil/output dari Analisa Data Covid-19 Di Indonesia dapat teman-teman lihat pada Video Youtube kami ini.

ANALISA DATA COVID-19 MENGGUNAKAN PYTHON

Pertama-tama kita panggil library atau tools yang kita gunakan pada proses visualisasi dataset Covid-19 kita.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

Selanjutnya panggil dataset yang kita butuhkan ke dalam pemrograman Python kita. Pada praktikum kali ini kita menggunakan 3 buah dataset yaitu kasus yang terkonfirmasi Covid, pasien dan provinsi yang terkena Covid.

cases_conf = pd.read_csv('/content/drive/MyDrive/Dataset/LatihanDS/confirmed_acc.csv')
pasien = pd.read_csv('/content/drive/MyDrive/Dataset/LatihanDS/patient.csv')
provinsi = pd.read_csv('/content/drive/MyDrive/Dataset/LatihanDS/province.csv',encoding = 'unicode_escape')

Prediksi Total Kasus Terkonfirmasi di Indonesia

Pada tahapan ini kita akan melakukan prediksi kenaikan kasus Covid-19 tiap harinya. Jadi pertama-tama kita import dahulu library atau tools yang kita butuhkan.

from datetime import datetime, timedelta
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
from scipy.optimize import curve_fit

Sekarang kita lihat 4 data pertama dari dataset kasus yang terkonfirmasi.

cases_conf.head()

Kita cek data Covid yang belum terkonfirmasi atau mulai adanya kasus Covid tersebut. Disini kita mengurutkan data tersebut berdasarkan tanggal paling terbaru dan menampilkan 5 Data pertama dari data Covid yang belum terkonfirmasi.

(cases_conf[cases_conf['cases'] == 0].sort_values(by=['date'], ascending=False)).head()

Selanjutnya kita konversi data tanggal tersebut menjadi total hari. Disini kita mengambil data tanggal awal yaitu 1 Maret 2020.

df = cases_conf.iloc[39:]
df['days']= df['date'].map(lambda x : (datetime.strptime(x, '%m/%d/%Y') - datetime.strptime("3/1/2020", '%m/%d/%Y')).days)
df[['date','days','cases']] #reorder column

Lalu kita buat sebuah function atau method untuk proses prediksi data Covid-19 yang kita miliki. Disini kita menggunakan library bawaan dari Python ini sendiri tetapi disini kita menentukan nilai parameter yang kita gunakan seperti ini.

def gompertz(a, c, t, t_0):
    Q = a * np.exp(-np.exp(-c*(t-t_0)))
    return Q

x = list(df['days'])
y = list(df['cases'])

x_train, x_test, y_train, y_test = train_test_split(x,y,train_size=0.9, test_size=0.1, shuffle=False)
x_test_added = x_test + list(range((max(x_test)+1), 60))
popt, pcov = curve_fit(gompertz, x_train, y_train, method='trf', bounds=([100, 0, 0],[6*max(y_train),0.15, 70]))
a, estimated_c, estimated_t_0 = popt
y_pred = gompertz(a, estimated_c, x_train+x_test_added, estimated_t_0)

y_pred

Sekarang kita gambarkan data hasil prediksi tadi ke dalam Grafik / Plot. Disini kita membandingkan antara nilai prediksi dengan data aktual yang terjadi.

plt.plot(x_train+x_test_added, y_pred, linewidth=2, label='predict data') 
plt.plot(x, y, linewidth=2, color='r', linestyle='dotted', label='train data')
# plt.plot(x_test, y_test, linewidth=2, color='g', linestyle='dotted', label='test data')
plt.title('prediction vs trained data on covid-19 cases in indonesia\n')
plt.xlabel('days since March 1st 2020')
plt.ylabel('confirmed positive')
plt.legend(loc='upper left')

Kita juga dapat melihat hasil data prediksi Covid-19 tadi ke dalam bentuk tabel. Disini kita melihat hasil prediksi Covid-19 60 Hari ke depannya.

prediksi = pd.DataFrame({'day_pred': x_test_added, 'cases_pred':np.around(y_pred[36:])})
prediksi

Visualisasi Data Pasien

Pertama-tama kita cek terlebih dahulu 5 data pertama dari dataset Pasien tersebut.

pasien.head()

Selanjutnya kita lihat informasi dari dataset ini seperti banyaknya data dan kolom yang digunakan pada dataset ini.

pasien.info()

Kita hitung banyaknya kelompok data berdasarkan kolom current_state.

pasien['current_state'].value_counts()

Lalu hitung rata-rata umur berdasarkan kolom gender atau jenis kelamin dari pasien yang ada pada dataset tersebut.

male = pasien.loc[pasien['gender']=='male','age'].mean()
female = pasien.loc[pasien['gender']=='female','age'].mean()
print('Distribusi rata-rata umur pasien laki-laki: %i' %male, 'tahun')
print('Distribusi rata-rata umur pasien perempuan: %i' %female, 'tahun')

Selanjutnya kita lihat visualisasi data ke dalam grafik banyaknya pasien berdasarkan kolom current_state.

pasien.current_state.value_counts().plot.bar().grid()

Disini kita gambarkan juga grafik untuk melihat data berdasarkan data gender dan data ini dihitung berdasarkan kolom current_state pasien.

sns.countplot(x='gender', hue='current_state', data=pasien)

Disini kita tampilkan grafik data pasien berdasarkan provinsi dari pasien tersebut.

pasien.province.value_counts().plot.bar()

Sekarang kita lihat banyaknya pasien yang positif Covid-19 beredasarkan tanggal terkonfirmasinya dan Data pasien ini ditampilkan dalam bentuk Grafik.

plt.figure(figsize=(15,5))
pasien.confirmed_date.value_counts().plot.bar()

Visualisasi Data Provinsi

Pertama-tama kita cek terlebih dahulu 5 data pertama dari dataset provinsi ini.

provinsi.head(5)

Selanjutnya kita lihat banyaknya data pada dataset dan struktur kolom dari dataset ini.

print("Total Data : ", provinsi.shape,"\n")
provinsi.info()

Lalu kita hitung banyaknya data berdasarkan pengelompokan kolom island (Pulau).

provinsi['island'].value_counts()

Deklarasikan sintak atau method yang digunakan untuk menghitung banyaknya jumlah korban yang terkonfirmasi Covid-19.

#----------Group By---------------
def FungsiGroup(column, ds):
  dataset = ds
  print((dataset.groupby(column).sum()[['confirmed']]).sort_values(by=column, ascending=False))

Lalu kita lihat pengelompokan banyaknya pasien yang terkonfirmasi berdasarkan pengelompokan kolom island.

FungsiGroup('island', provinsi)

Sintak dibawah ini digunakan untuk memasukkan data pengelompokan pasien yang terkonfirmasi tadi ke dalam variabel baru untuk proses perhitungan Linear Regresi.

df =  pd.DataFrame((provinsi.groupby('island').sum()[['confirmed']]).sort_values(by='island', ascending=False))
df.head()

Selanjutnya kita ubah dan hapus index dari kolom island tersebut dan simpan pada kolom island baru.

df['island']=df.index
df.reset_index(drop=True, inplace=True)

Lalu tampilkan data dari kolom island dan kolom confirmed serta tampilkan 5 data pertama dari kolom ini.

df = df[['island', 'confirmed']]
df.head()

Sintak dibawah ini digunakan untuk membuat grafik Pie untuk menampilkan jumlah pasien yang terkonfirmasi berdasarkan kolom Island.

import plotly.express as px
import plotly.offline as py
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
fig = px.pie( values=df['confirmed'],names=df['island'])
fig.update_layout(font=dict(size=15, color="#242323"))   
    
py.iplot(fig)

Lalu kita Copy data dari dataset provinsi tadi ke dalam variabel baru. Disini kita hanya menggunakan beberapa kolom data saja.

dataset = provinsi[['province_name', 'capital_city', 'population_kmsquare', 'confirmed', 'deceased']]
dataset.head()

Lalu kita cek banyaknya nilai null dari setiap kolom dari variabel yang baru saja di buat.

dataset.isnull().sum()

Linear Regresi Dataset Provinsi

Sintak ini digunakan untuk meng-copy data dari variabel yang kita buat tadi ke dalam variabel baru. Variabel ini digunakan untuk proses Linear Regresi.

dtLR = dataset.copy()
print(dtLR.shape)
dtLR.head()

Lalu kita lihat nilai korelasi setiap kolom yang ada pada variabel yang kita gunakan ini.

plt.figure(figsize=(12,10))
p=sns.heatmap(dataset.corr(), annot=True,cmap ='RdYlGn')

Sintak dibawah ini digunakn untuk menghapus kolom-kolom yang memiliki relasi paling kecil.

dtLR = dtLR.drop(['province_name','capital_city','population_kmsquare'], axis=1)
dtLR.head(5)

Lalu kita pisahkan data ke dalam variabel X dan Y untuk proses Analisa Linear Regresi.

#-----Proses linear regression
X_LR=dtLR.iloc[:, :-1].values
Y_LR=dtLR.iloc[:, 1].values

Sintak dibawah ini digunakan untuk mendefinisikan data testing dan training yang digunakan.

from sklearn.model_selection import train_test_split
X_train_1, X_test_1, y_train_1, y_test_1 = train_test_split(X_LR, Y_LR, test_size = 0.20, random_state = 0)

Deklarasikan sintak untuk linear regresi tersebut serta panggil data training yang digunakan.

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train_1, y_train_1)

Sintak dibawah ini digunakan untuk melakukan proses prediksi data testing yang kita gunakan.

pred = regressor.predict(X_test_1)

Lalu kita gambarkan sebaran data dan hubungan antar kolom dari kolom confirmed dan deceased.

plt.scatter(X_test_1, y_test_1, color = 'red')
plt.plot(X_train_1, regressor.predict(X_train_1), color = 'blue' )
plt.title('confirmed vs deceased')
plt.xlabel('confirmed')
plt.ylabel('deceased')
plt.show()

Sekian materi tentang Analisa Data Covid-19 Indonesia Menggunakan Pemograman PYTHON. Untuk Project lengkapnya dapat didownload pada link ((GITHUB)) kami ini.

Leave a Reply