Time Series Analysis & Data Visualization Show Hai, semuanya. Kembali kita lanjutkan bahasan sebelumnya tentan Python Data Science menggunakan Pandas. Jika kalian belum baca tulisan sebelumnya, bisa diakses link berikut ini, Nah sekarag kita akan mencoba untuk memanfaatkan fitur time series & visualisasi data pada Pandas. Pandas memiliki banyak fitur manipulasi dan analisis data time series yang mampu mengelola data Time, Date sampai Datetime[1]. Pandas menggabungkan banyak library time series mulai dari formating date time Numpy Time, Date dan Datetime PandasBeberapa perintah operasi datetime yang di support oleh Pandas:
import pandas as pdPandas dapat memproses data datetime dariberbagai sumber dan format Terlihat bahwa pandas mampu menerima beragam format datetime, mulai dari format string, numpy
dti = pd.date_range('2018-01-01', periods=3, freq='H')dtigenerate tanggal berurutan dengan frekuensi tetap
dti = dti.tz_localize('UTC')dti konvert ke timezone Indonesia, dti.tz_convert('Asia/Jakarta') assign localize dan convert timezone
generate idx = pd.date_range('2018-01-01', periods=5, freq='H')idxgenerate date_range , freq= ‘H’, periods = 5 Buat pandas Series, dengan index ts = pd.Series(range(len(idx)), index=idx)tsgenerate Series dengan index idx Resampling time series data dengan frekuensi 2H (2 jam) setelah itu dicari rata-rata datanya, ts.resample('2H').mean() hasil resampling 2Hpandas dengan mudah dapat melakukan resampling time series data dan melakukan kalkulasi statistik
friday = pd.Timestamp('2018-01-05')friday.day_name() setelah itu kita tambah 1 hari dengan menggunakan function saturday = friday + pd.Timedelta('1 day')saturday.day_name() menambahkan 1 hari bussines day dengan menggunakan function monday = friday + pd.offsets.BDay()monday.day_name()aritmetic operation pada data time series Time Series AnalysisSelanjutnya kita akan masuk ke analisa data time series menggunakan Pandas, terlebih dahulu kita download data time series dari sensor karbon monoksida (CO) disini. Setelah itu simpan ke folder dengan nama Pandas_Timeseries, setelah itu akses folder dari Jupyter Notebook, sehingga tampak seperti berikut, folder Pandas_Timeseries diakses menggunakan Jupyter NotebookSelanjutnya membuat file notebook baru, dengan menekan dropdown New dilanjutkan dengan memilih python3 membuat file notebook baruSehingga pada page home jupyter terbentuk file notebook yang barusan dika create, File notebook yang berhasil dicreatePada file notebook yang sudah dibuat, kita terlebih dahulu import library yang dibutuhkan, import pandas as pd setelah itu kita baca csv data time series CO yang sudah kita download sebelumnya, CO_TS = pd.read_csv("CO_Sample_TimeSeries.csv", sep=";")CO_TS.head() penggunaan parameter selanjutnya kita periksa data type tiap kolom pada
data frame dengan fungsi CO_TS.info() datatype untuk tiap kolom pada data frame time series COTerlihat pada kolom CO_TS["DateTime"] = pd.to_datetime(CO_TS.Date + " " + CO_TS.Time)CO_TS.head()Membuat kolom `Datetime` Selanjutnya kita hilangkan kolom CO_TS.drop(["Date", "Time"], axis=1, inplace=True)CO_TS.head()Data frame tanpa kolom Date dan Time Selanjutnya kita akan assign kolom CO_TS.index = pd.to_datetime(CO_TS.DateTime)Data frame dengan index Datetime
Karena index data frame sudah dalam tipe data datetime, maka kita dapat melakukan operasi datetime terhadap index, misalnya kita ingin melihat data pada data frame untuk tiap detik ke-10, CO_TS[CO_TS.index.second == 10] Data frame dengan index.second == 10Kita juga dapat langsung memanggil data dengan datetime secara parsial, CO_TS["2020-02-15 12:40"] mengakses data frame dengan datetime parsialAtau bahkan mengambil data pada rentang waktu tertentu, CO_TS["2020-02-15 12:40:00" : "2020-02-15 12:40:10"] mengakses data frame dengan menggunakan rentang waktuSekarang kita akan melakukan resample data pada data time series CO CO_TS.resample('T').mean()
Resample time series permenitResample option yang dapat digunakan, B business day frequency Rolling Sum & Rolling MeanDalam Statistik kita dapat menganalisa running average tertentu untuk mengevaluasi trend data yang sangat berguna untuk smoothing data fluktuatif untuk rentang yang sempit, data dikelompokan pada sejumlah subset yang merupakan hasil rataan, sehingga didapatkan data yang smooth dan dapat dengan mudah melihat trend data. Pandas memiliki feature Sekarang kita buat kolom baru dengan nama CO_TS['rolling_mean'] = CO_TS.rolling(5).mean()CO_TS[["ug/m3", "rolling_mean"]]rolling mean untuk data time series CO Bisa dilihat bahwa hasil Forward atau Backfilling ketika berhadapan dengan missing valuePandas menyediakan function CO_TS["rolling_mean_backfilled"] = CO_TS["rolling_mean"].fillna(method='backfill')CO_TS[["ug/m3", "rolling_mean", "rolling_mean_backfilled"]]backfilling rolling_mean pada time series CO bisa dilihat kita melakukan backfilling untuk data rolling_mean.
Time Series VisualizationPandas menyediakan tool untuk visualisasi data dengan sangat mudah, terutama untuk data time series, misalnya kita ingin melakukan plotting data kadar CO terhadap waktu, CO_TS[['ug/m3']].plot() plot time series kadar CO (ug/m3)Selanjutnya kita akan melakukan multiple plot untuk kolom CO_TS['rolling_mean'] = CO_TS.rolling(20).mean()CO_TS[["rolling_mean", 'ug/m3']].plot()multiple plot untuk kolom `ug/m3` dan `rolling_mean` Secara default pandas ‘bar’ or ‘barh’ for bar plots‘hist’ for histogram‘box’ for boxplot‘kde’ or ‘density’ for density plots‘area’ for area plots‘scatter’ for scatter plots‘hexbin’ for hexagonal bin plots‘pie’ for pie plots untuk melakukan plotting data dengan jenis lain, dapat dilakukan dengan cara berikut, CO_TS[["rolling_mean", 'ug/m3']].plot(kind='bar') bar plot time series kadar CO (ug/m3)
Sekian untuk bahasan kali ini, semoga bermanfaat. Selajutnya akan dibahas Joining dan Merging Data Frame menggunakan Pandas. Terima Kasih. Sumber :
|