Export Import Data

By | January 15, 2021
2,888 Views

Sinopsis

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

  1. Format Binary Data IO di Matlab
  2. Membaca file CSV, Excel
  3. 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

Sangat bermanfaat bukan? Format *.mat mampu menyimpan beragam jenis variabel di Matlab dan memudahkan kalian mengatur pertukaran data dengan cepat. Tapi kalau orang lain tidak punya Matlab gimana? Sebenarnya format *.mat bisa dibaca koq menggunakan Octave, Net Framework, Java, serta Python dengan pustaka yang banyak disediakan oleh komunitas kalau pun tidak mau menggunakan format*.mat kalian bisa menggunakan  pertukaran data yang umum yang bersifat open seperti CSV, Excel bisa kalian gunakan seperti tulisan selanjutnya.

 

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:

  1. .txt, .dat, or .csv for delimited text files
  2. .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

  1. Datestr : mengubah format tanggal menjadi string/huruf
  2. Datenum: mengubah format tanggal menjadi angka
  3. Serta currency menggunakan regex

Pada dasarnya format penyajian date/tanggal adalah char dalam Matlab dengan banyak variasi penyajian seperti

  1. dd/mm/yy
  2. dd/mm/yyyy
  3. dd-mm-yyy
  4. mm-dd-yy
  5. mm-dd-yyy
  6. 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.