
TabPy Tools
TabPy Tools adalah paket Python untuk menerapkan dan mengelola fungsi Python di server TabPy.
Mari kita telusuri lebih dalam fungsionalitas TabPy tools.
Menghubungkan ke TabPy
Fungsi client akan memungkinkan Anda menghubungkan API Python ke server TabPy menggunakan URL dan PORT.
rom tabpy.tabpy_tools.client import Client
client = Client('http://localhost:9004/')
Kita dapat menggunakan objek “client” untuk mengatur autentikasi dan mengelola fungsi Python di server.
Autentikasi
Anda dapat menetapkan nama pengguna dan kata sandi menggunakan fungsi “set_credentials”. Diperlukan kredensial untuk menerapkan model di server.
Catatan: jalankan fungsi ini hanya jika Anda telah mengaktifkan autentikasi di server TabPy. Baca dokumentasi konfigurasi server untuk mempelajari lebih lanjut.
client.set_credentials('username', 'password')
Menerapkan Fungsi
Buat sebuah fungsi dan publikasikan menggunakan fungsi `client.deploy()`. Fungsi ini memerlukan tiga argumen: nama fungsi, fungsi Python, dan deskripsi.
Fungsi addition menjumlahkan dua field data dan mengembalikan daftar. Nantinya, fungsi “add” akan diakses di Tableau.
client.deploy('add', addition, 'Adds two numbers x and y')
Menerapkan Model
Saat Anda telah melatih model pembelajaran mesin dan menerapkan fungsi inferensi model, Tableau akan secara otomatis menyimpan definisi model dan fungsi menggunakan cloudpickle. Definisi tersebut tetap berada di memori server untuk memberikan waktu respons yang lebih cepat.
Singkatnya, Anda tidak perlu melatih ulang model setiap kali ada perubahan di Tableau. Kita akan mempelajari lebih lanjut tentang penerapan model di bagian berikutnya.
Menghapus Endpoint
Untuk menghapus fungsi atau model, gunakan fungsi `remove`. Anda hanya perlu menyertakan nama fungsi.
client.remove('add')
>>> Untuk fitur yang lebih lanjut, lihat repositori TabPy/tabpy di GitHub.
Menerapkan Fungsi Python Menggunakan IDE
Seperti pada bagian pertama, kita akan membuat fungsi Koefisien Korelasi Pearson. Alih-alih menulis fungsi di Tableau, kita akan menerapkannya ke server menggunakan API Python lalu mengakses fungsi tersebut menggunakan kalkulasi Tableau.
Pada bagian ini, kita akan menggunakan dataset Sales Store Product dari Kaggle untuk menghitung korelasi antara field data penjualan dan laba.

Dataset Kaggle Sales Store Product
Sebelum kita mulai menulis kode Python, pastikan Anda memiliki paket TabPy terbaru.
pip install -U tabpy
Jalankan server secara lokal menggunakan terminal.
tabpy
TabPy Client
Jika Anda familier dengan Python, bagian ini cukup mudah dipahami. Anda dapat mempelajari semua tentang fungsi Python dengan mengikuti kursus pengantar Python.
- Kita akan mengimpor Client dari tabpy_tools dan NumPy untuk perhitungan.
- Hubungkan server TabPy menggunakan URL dan PORT.
- Buat pearson_correlation_coefficient() yang akan menerima x dan y serta mengembalikan satu kolom koefisien korelasi.
- Gunakan fungsi client.deploy() untuk memublikasikan fungsi “pcc”. Fungsi ini memerlukan tiga argumen: nama, fungsi, dan deskripsi.
from tabpy.tabpy_tools.client import Client
import numpy as np
client = Client('http://localhost:9004/')
def pearson_correlation_coefficient(x,y):
return np.corrcoef(x,y)[0,1]
client.deploy('pcc', pearson_correlation_coefficient, 'correlation coefficient is extracted of x and y')
Kueri TabPy
Sekarang kita akan memanggil fungsi ini di Tableau menggunakan tabpy.query(). Fungsi ini memerlukan nama fungsi Python dan placeholder argumen seperti _arg1 dan _arg2.
- Di dalam SCRIPT_REAL, tambahkan skrip kueri dan agregasikan field data.
- Skrip kueri diawali dengan return dan diakhiri dengan [‘response’] untuk mengekstrak hasil dari JSON.
- Atur kalkulasi tabel bawaan ke field data Customer Name.
- Apply lalu tekan OK.

Field terhitung koefisien korelasi Pearson
Anda dapat meninjau bagian pertama tutorial untuk memahami skrip Tableau.
SCRIPT_REAL("return tabpy.query('pcc',_arg1, _arg2)['response']",
SUM([Sales]),SUM([Profit]))
Visualisasi Data
Sekarang kita akan membuat visualisasi yang menampilkan korelasi menurut kategori produk dan segmentasi pelanggan.
- Seret dan letakkan Customer Name pada Detail dan Ship Mode pada Color di panel Marks.
- Seret dan letakkan Customer Segment dan pcc (field korelasi terhitung) di rak Columns.
- Seret dan letakkan Product Category ke rak Rows .

Menampilkan diagram batang koefisien korelasi
Dalam banyak kasus, sektor Corporate memiliki korelasi tinggi antara penjualan dan laba. Secara keseluruhan, Anda dapat menggunakan koefisien korelasi untuk mengambil keputusan berbasis data guna meningkatkan laba perusahaan.
Baca tutorial detail Python tentang korelasi untuk mempelajari koefisien korelasi lainnya, menghitung korelasi di Python, dan hubungan antara korelasi serta kausalitas.
Menerapkan Model Prophet ke Tableau
Pada bagian ini, kita akan mempelajari cara menerapkan model peramalan Facebook Prophet dan memodifikasi field data tanggal. Kita akan melatih model deret waktu pada Harga Saham Apple dari tahun 2015 hingga 2020.

Dataset Kaggle Harga Saham Apple (2015-2020)
Sebelum kita mulai menulis skrip dan membuat visualisasi peramalan di Tableau, kita perlu menguji kode Python dan mengevaluasi model peramalan di Jupyter Notebook.
Facebook Prophet
Facebook Prophet adalah pustaka open-source untuk peramalan otomatis data deret waktu univariat. Pustaka ini bekerja optimal dengan efek musiman tahunan, mingguan, dan harian.
Mengapa Prophet?
Prophet andal dalam menangani data hilang, pergeseran tren, dan outlier.
Instalasi Prophet
Anda dapat memasang paket Python Prophet menggunakan perintah di bawah ini pada terminal.
pip install pystan==2.19.1.1
pip install prophet
Atau jika Anda menggunakan lingkungan Python Anaconda, gunakan perintah di bawah ini.
conda install -c conda-forge prophet
Inisialisasi Proyek
- Kita akan mulai dengan mengimpor pandas untuk ingest dan manipulasi data serta Prophet untuk melatih dan mengevaluasi model peramalan.
- Baca berkas dataset saham Apple (AAPL.csv) menggunakan fungsi read_csv dari pandas.
- Mendefinisikan X dengan kolom date dan high.
- Menampilkan bentuk (shape) dataframe dan memvisualisasikan plot garis deret waktu dari kolom high.
import pandas as pd
from prophet import Prophet
data = pd.read_csv("AAPL.csv")
X = data.loc[:, ['date','high']]
print(X.shape)
X.plot();
Keluaran
(1258, 2)
Saham Apple meningkat seiring waktu. Ada dua kali penurunan, tetapi kemudian pulih ke pertumbuhan yang stabil.

Ikuti tutorial analisis deret waktu Python oleh Hugo Bowne-Anderson untuk pemahaman mendalam. Anda juga dapat mengikuti kursus singkat dari DataCamp tentang analisis deret waktu di Python untuk praktik langsung.
Membangun Model Pembelajaran Mesin
Pada bagian ini, kita akan menyiapkan data untuk model Prophet dan melatihnya pada hiperparameter bawaan.
- Ganti nama kolom menjadi ds dan y
- Ubah kolom ds menjadi datetime (tanggal)
- Definisikan sebuah model menggunakan Prophet()
- Latih model menggunakan model.fit()
X.columns = ['ds', 'y']
X['ds']= pd.to_datetime(X['ds'], format='%Y-%m-%d').dt.date
model = Prophet()
# fit the model
model.fit(X)
Evaluasi Model
Untuk evaluasi, kita harus menambahkan tanggal masa depan ke dataset. Kita dapat melakukannya menggunakan make_future_dataframe.
Kita akan mengatur:
- prediods ke 365 hari
- freq ke “D”. Anda juga dapat mengubahnya ke “Y” tetapi kemudian Anda harus mengubah periods menjadi 1.
- Atur include_history ke false untuk menghilangkan data sebelumnya.
future = model.make_future_dataframe(periods=365,
freq='D',
include_history=False
)
future.tail()
Keluaran
Seperti yang terlihat, dataset future berakhir pada tahun 2021.
ds
360 2021-05-18
361 2021-05-19
362 2021-05-20
363 2021-05-21
364 2021-05-22
Langkah berikutnya adalah menggunakan data ini untuk memprediksi nilai high saham Apple. Setelah itu kita akan menampilkan 'ds', 'yhat', 'yhat_lower', dan 'yhat_upper'.
yhat_lower dan yhat_upper mendefinisikan rentang varians yang dapat diterima. Singkatnya, harga saham dapat naik hingga 485,3 dan turun hingga 365,4. Informasi ini dapat membantu trader harian menilai risiko.
forecast = model.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail
Keluaran
ds yhat yhat_lower yhat_upper
360 2021-05-18 423.757736 365.415878 485.293438
361 2021-05-19 423.862811 365.527086 482.751097
362 2021-05-20 423.918642 365.233839 482.501335
363 2021-05-21 423.842872 364.454184 483.672508
364 2021-05-22 421.187822 360.181717 481.024524
Mari memvisualisasikan data peramalan menggunakan fungsi plot(). Fungsi ini memerlukan nilai prediktif untuk menampilkan bagan titik dan garis dengan rentang yang dapat diterima berwarna biru.
model.plot(forecast)
Visualisasi di bawah menunjukkan bahwa nilai saham Apple akan terus tumbuh tanpa penurunan.

Anda dapat meningkatkan peramalan dengan menyesuaikan hiperparameter terkait peramalan jenuh (saturating forecasts), titik perubahan tren (trend changepoints), musiman (seasonality), efek hari libur, dan regressor, musiman multiplikatif, interval ketidakpastian, serta outlier. Anda juga dapat menyesuaikannya secara otomatis menggunakan penalaan hiperparameter. Pelajari lebih lanjut tentang Facebook Prophet dengan membaca dokumentasi.
Peramalan deret waktu adalah bidang yang luas, dan Anda dapat mempelajari semuanya dengan mengikuti tutorial peramalan deret waktu oleh Moez Ali. Tutorial ini membahas analisis deret waktu, model statistik, kerangka kerja Python, dan AutoML.
Anda juga dapat mengikuti kursus memvisualisasikan data deret waktu di Python, dan mempelajari seluk-beluk bagan garis, mendeteksi musiman, tren, dan noise, serta menampilkan beberapa deret waktu.
Menerapkan Inferensi Model
Pada bagian ini, kita akan menerapkan inferensi model. Ini akan memungkinkan kita menyimpan definisi model dan fungsi di server TabPy untuk memberikan waktu respons yang lebih cepat.
Pertama, kita akan menghubungkan Client menggunakan URL dan PORT. Lalu kita akan mendefinisikan fungsi prophet_forecasting.
- Fungsi akan menerima jumlah tahun untuk peramalan dan menggunakannya untuk membuat data frame tanggal future.
- Membuat prediksi menggunakan model.predict dan dataframe future.
- Ganti nama “yhat” menjadi “y” sehingga kita dapat menggabungkan ramalan dengan data historis.
- Bagian terakhir agak rumit. Di Tableau, kita tidak dapat menambahkan nilai ke field data. Sebagai gantinya, kita akan menggeser nilai Date sebesar 365*n. Di mana n adalah jumlah tahun.
Terakhir, kita akan mengemas dan menerapkannya ke server TabPy menggunakan client.deploy(). Kita akan menetapkan nama fungsi “prophet”. Argumen override akan membantu kita membuat versi model dan fungsi. Ini diperlukan pada tahap awal saat kita melakukan debug kode.
from tabpy.tabpy_tools.client import Client
client = Client('http://localhost:9004/')
def prophet_forecasting(n):
future = model.make_future_dataframe(periods=365*n,include_history=False)
prediction = model.predict(future)
prediction.rename(columns={"yhat":"y"}, inplace=True)
return pd.concat([X,prediction[['ds','y']]])['y'].to_list()[365*n:]
client.deploy('prophet',
prophet_forecasting,
'forecast time series data using prophet',override=True)
Menyiapkan Tableau
Untuk mengendalikan jumlah tahun di Tableau, kita harus membuat parameter Years. Parameter ini akan digunakan dalam fungsi prophet.
Kita dapat membuat parameter Years dengan mengklik kanan di bagian Data dan memilih opsi Create Parameter. Ubah Data type menjadi Integer, Current value menjadi 1, lalu klik Range untuk menambahkan nilai Minimum 1 dan Maximum 5.

Membuat Parameter Years
Setelah itu, kita akan membuat field terhitung Forecast_date . Kita akan menggunakan field data Date dan menggeser nilainya sesuai jumlah Years.

Field terhitung Forecast_date
Fungsi DATEADD akan menambahkan Years ke field data Date lalu memotongnya menjadi hari.
DATETRUNC('day',DATEADD('year',[Years],[Date])))
Pada bagian berikutnya, kita akan membuat field terhitung forecast dan mengakses model yang diterapkan menggunakan tabpy.query(). Fungsi kueri terdiri dari dua bagian, bagian pertama adalah nama fungsi Python dan bagian kedua adalah daftar placeholder untuk argumen.

Field terhitung forecast
Pada kasus kita, hanya ada satu argumen, jadi kita akan menambahkan _arg1. Kita akan membungkus kueri dalam fungsi Tableau bernama SCRIPT_REAL dan memberikan parameter Years sebagai masukan. Sebelum Anda menekan tombol OK, pastikan hasil dihitung berdasarkan Forecast_date. Anda dapat mengubahnya dengan mengklik teks biru (Default Table Calculation).
SCRIPT_REAL("return tabpy.query('prophet',_arg1[0])['response']",
[Years]
)
Setelah itu kita akan membuat field terhitung Actual menggunakan field data High dan parameter Years.

Field terhitung Actual
LOOKUP akan membantu kita menggeser nilai High sebesar Years*365. Misalnya, jika parameter Years bernilai 2, maka nilainya akan digeser sebesar 730.
LOOKUP(SUM([High]),[Years]*365)
Actual vs. Forecast
Kita akhirnya sampai di bagian akhir. Untuk memplot bagan garis Actual vs. Forecast, ikuti langkah sederhana berikut:
- Buka bagian Parameters di kiri bawah, klik kanan pada parameter Years, lalu pilih Show Parameters.
- Seret dan letakkan Forecast_date ke rak Columns. Ubah ke Day.
- Seret dan letakkan Measure Names dari Dimensions ke Filters. Pilih hanya Actual dan forecast.
- Seret dan letakkan Measure Names dari Dimensions ke Color.
- Terakhir, seret dan letakkan Measure Names dari Measures ke rak Rows.
Setelah mengikuti semua langkah, Anda akan melihat Actual dan forecast dalam warna yang berbeda.

Plot garis Actual vs. Forecast
Bagan garis di atas masih jauh dari sempurna dan memerlukan penalaan hiperparameter, validasi silang, imputasi nilai serta tanggal yang hilang, dan peningkatan fungsi tanggal.
Kesimpulan
Dalam tutorial ini, kita telah mempelajari cara membangun dan menerapkan model pembelajaran mesin di server TabPy serta mengaksesnya menggunakan skrip Tableau. Kita juga mempelajari dasar-dasar tabpy_tools dan cara menggunakannya untuk menerapkan fungsi atau model.
Pelajari lebih lanjut tentang peramalan keuangan dengan mengikuti kursus DataCamp. Anda akan mempelajari cara memahami laporan laba rugi, neraca dan rasio peramalan, memformat data mentah, mengelola tanggal dan periode keuangan, serta asumsi dan variasi dalam ramalan.
Peramalan deret waktu adalah landasan; kita meningkatkan prediksi dengan melatih data pada algoritma pembelajaran mesin lainnya seperti:
- Autoregressive Integrated Moving Average (ARIMA)
- Seasonal Autoregressive Integrated Moving Average (SARIMA)
- Exponential Smoothing (ES)
- XGBoost
- LSTM (Deep Learning)
- Temporal Fusion Transformer (Google)
Jika Anda baru menggunakan Tableau dan ingin mempelajari seluk-beluk visualisasi data dan komputasi statistik, ikuti jalur keterampilan dasar-dasar Tableau.
Ini adalah bagian terakhir dari seri ini. Pada bagian pertama tutorial TabPy ini, kita mempelajari segala hal tentang TabPy dan mengeksekusi skrip Python di dalam Tableau untuk membuat berbagai klaster listing Airbnb Amsterdam.
