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.