Sinopsis
Contents
Kalian pasti sudah sering menggunakan format penyimpanan data tabel dengan Excel yang terdiri dari baris dan kolom yang sudah banyak digunakan, ada juga format pertukaran yang bersifat terbuka seperti JSON, XML, SQLITE, CSV, dan yang lainnya. Kalau kalian menggunakan bahasa yang lain untuk menyimpan data menggunakan format binary atau disebut teknik serialisasi dan deserialisasi, maka di Matlab menggunakan format *.mat yang sangat mudah digunakan bahkan semua variabel yang ada di memory langsung bisa di save lho. Untuk versi R2009a keatas Matlab sudah dilengkapi dengan library seperti di Pandas (Python) yaitu readtable. Kalian ikuti saja point-point dibawah ini
- Format Binary Data IO di Matlab
- Membaca file CSV, Excel
- Bekerja dengan Format Currency dan Datenum
Dua point diatas akan sering kalian gunakan untuk menyimpan data yang efektif di Matlab.
Format Binary Data IO di Matlab
Untuk menyimpan sebuah variabel kalian bisa menggunakan perintah save. Kalau kalian cek di Workspace Window yang menampilkan informasi Variable
Bisa disimpan dengan perintah save
Dengan perintah save file.mat maka semua variabel yang ada di memory akan tersimpan dalam sebuah disk/file. Untuk meload kembali, cukup perintah load() dengan struct sebagai penampung variabelnya.
data = load('dataku.mat')
Untuk akses variabel a cukup perintah berikut
a = data.a
Coba kalian pelajari lagi mengenai struct di Bab sebelumnya. Sedangkan untuk akses variabel b pun juga sama koq.
b = data.b
Tentu adakalanya kalian tidak ingin menyimpan semua variabel tapi hanya tertentu saja, misalkan ada 4 variabel dibawah ini, hanya 2 saja disimpan.
clc;clear all;close all a = 1; b = [2,3] c = [4,5;6,7] d = 'persamaan kecepatan' save('dataku.mat','c','d')
Perintah diatas akan menyimpan variabel c dan d saja dan untuk load sama juga koq dengan sebelumnya cukup perintah load
Membaca file CSV, Excel
Excel sangat banyak digunakan oleh kalangan umum sebagai format penyimpanan data berjenis tabel ataupun CSV. Kalian bisa menggunakan perintah readtable() untuk aksesnya yang banyak mendukung beragam format data seperti:
- .txt, .dat, or .csv for delimited text files
- .xls, .xlsb, .xlsm, .xlsx, .xltm, .xltx, or .ods for spreadsheet files
Penulis kasih contoh data excel saja yang lebih mudah.
Kalian bisa akses dengan perintah berikut
clc;clear all;close all; data = readtable('data excel.xlsx')
Tentu untuk akses perkolom sangat mudah juga seperti struct sesuai dengan nama kolomnya
Akses sesuai dengan kolom yang dipilih
Kalian juga bisa memilih nama kolom tertentu yang ingin di import menggunakan perintah berikut
clc;clear all;close all opts = detectImportOptions('data excel.xlsx'); opts.SelectedVariableNames = {'no','jumlah'}; data = readtable('data excel.xlsx',opts)
Mengubah Tabel ke Array
Seperti contoh diatas dengan tabel yang berisi angka semuanya, kalian bisa gunakan function table2array untuk menghasilkan array dari sebuah tabel
Memilih Data Perbaris
Atau hanya menampilkan baris tertentu saja
data.barang(3:4)
Memilih Data Perbaris dan Kolom
Kalian juga bisa memilih data berdasarkan baris dan kolom yang diinginkan
data(3:4,{'barang','jumlah'})
Menyimpan data ke excel dan CSV
Kalau kalian ingin menyimpan data dalam bentuk excel ataupun CSV sangat gampang koq menggunakan perintah berikut:
clc;clear all;close all; no = reshape([1:5],5,1); nama = {'bejo';'pamungkas';'bagus';'tika';'eko'}; tinggi = [176;163;131;133;119]; T = table(no,nama,tinggi); writetable(T,'data ku.txt','Delimiter',',') writetable(T,'data ku.xlsx')
Mengubah Array menjadi Table – Array2Table
Array juga bisa kalian konvert menjadi Table, tapi ingat ya, susunan table lebih kepada urutan baris dan kolom, jadi jangan lupa transpose
clc;clear all;close all; tinggi = [145,146,156,157,167,168]; berat_badan = [45,41,40,50,51,45]; data = array2table(transpose([tinggi;berat_badan]),... 'VariableNames',{'tinggi','berat_badan'})
hasil
data = 6×2 table tinggi berat_badan ______ ___________ 145 45 146 41 156 40 157 50 167 51 168 45
Atau kalian kelupaan untuk menambahkan kolom no, maka berikan perintah addvars seperti berikut
%kalian lupa untuk menambahkan no no = transpose([1:length(tinggi)]); data = addvars(data,no,'Before','tinggi'); %tampilkan data head(data)
hasil
ans = 6×3 table no tinggi berat_badan __ ______ ___________ 1 145 45 2 146 41 3 156 40 4 157 50 5 167 51 6 168 45
atau mungkin malah mau delete column dengan perintah removevars
data = removevars(data,{'tinggi'}); head(data)
hasil
ans = 6×2 table no berat_badan __ ___________ 1 45 2 41 3 40 4 50 5 51 6 45
Bekerja dengan Format Currency dan Date
Data dengan format Currency dan Date banyak ditemui kalau kalian bekerja dengan analisis saham ataupun Forecasting Time Series Data. Ada beberapa function penting yang kalian harus pahami yaitu
- Datestr : mengubah format tanggal menjadi string/huruf
- Datenum: mengubah format tanggal menjadi angka
- Serta currency menggunakan regex
Pada dasarnya format penyajian date/tanggal adalah char dalam Matlab dengan banyak variasi penyajian seperti
- dd/mm/yy
- dd/mm/yyyy
- dd-mm-yyy
- mm-dd-yy
- mm-dd-yyy
- jan-19,1988
Mengubah Format Date dan Currency
ada banyak sekali format penyajian date diatas yang disesuaikan oleh konsumen. Nah untuk handle beragam format penyajian tersebut, kalian bisa menggunakan datestr sebagai pengolah date.
Perhatikan kolom Date dengan format point 6, oiya kalau ada nama kolom sama dengan keyword maka akan di rename otomatis oleh Matlab, misalkan nama kolom Date akan direname menjadi x___Date_
Dengan perintah
data =readtable('TLKM Historical Data.csv');
Terdapat beberapa format yang harus kalian cermati yaitu Date dan Currency, kalian bisa ubah format Date menggunakan teknik berikut
data =readtable('TLKM Historical Data.csv'); formatOut = 'mm/dd/yy'; %format keluaran yang diinginkan data.x____Date_ = datestr(data.x____Date_,formatOut); data
Menghasilkan format mm/dd/yy sesuai yang kita inginkan
Tentu format Currency harus kalian ubah (format sepator ribuan masih menggunakan american standar yaitu penggunaan pemisah koma), kalian berikan saja perintah regex().
data =readtable('TLKM Historical Data.csv'); formatOut = 'mm/dd/yy'; %format keluaran yang diinginkan tanggal = datestr(data.x____Date_,formatOut); data.x____Date_ = datestr(data.x____Date_,formatOut) data.Price = regexprep(data.Price,',',''); data.Open = regexprep(data.Open,',',''); data.High = regexprep(data.High,',',''); data.Low = regexprep(data.Low,',',''); data
Mengubah format date tidak harus dilakukan, ini hanya contoh saja agar mudah dilihat oleh kita yang terbiasa dengan format indonesia.
Seleksi Date
Terkadang dalam melakukan pengolahan data berbasis time series hanya memerlukan sebagian bulan atau tahun tertentu saja, misalkan saja hanya ingin menampilkan data untuk tahun 2020 saja, menggunakan perintah day(), month(), dan year() dalam operasi seleksi data.
clc;clear all;close all; data =readtable('TLKM Historical Data.csv'); data.Price = regexprep(data.Price,',',''); data.Open = regexprep(data.Open,',',''); data.High = regexprep(data.High,',',''); data.Low = regexprep(data.Low,',',''); %untuk menampilkan 1 seleksi saja seleksi = year(data.x____Date_)==2020; disp('Data tahun 2020') disp(data(seleksi,{'x____Date_','Price','Open'})) %jika menampilkan lebih dari 1 seleksi tahun = year(data.x____Date_)==2019 ; bulan = month(data.x____Date_)<=2; seleksi = logical(tahun.*bulan); disp('Data 2 bulan pertama tahun 2019') disp(data(seleksi,{'x____Date_','Price','Open'}));
Hasil
Data tahun 2020 x____Date_ Price Open ___________ ______ ______ Jan 5, 2020 '3940' '3930' Data 2 bulan pertama tahun 2019 x____Date_ Price Open ____________ ______ ______ Feb 24, 2019 '3910' '3900' Feb 17, 2019 '3840' '3830' Feb 10, 2019 '3790' '3870' Feb 3, 2019 '3850' '3890' Jan 27, 2019 '3870' '3880' Jan 20, 2019 '3880' '4040' Jan 13, 2019 '4020' '3810'
Sumber Dataset
Kalian harus paham ya karena sangat membantu kalau kalian bekerja dengan time series data. Oiya untuk data *.csv nya didapatkan dari www.investing.com Sebagai contoh saham emitem TLKM indonesia https://www.investing.com/equities/telkom-indones-historical-data
Ntar kalian pelajari juga ya mengenai https://www.softscients.web.id/2020/01/dasar-dasar-pemrograman-matlab-grafik.html agar lebih bagus buat visualisasi datanya.