Kursus

Apa itu TabPy
TabPy adalah kerangka kerja yang memungkinkan Tableau mengeksekusi kode Python. Ini memungkinkan pengguna menjalankan skrip Python di dalam calculated field Tableau atau menerapkan fungsi pada server TabPy menggunakan Python API.
TabPy adalah alat yang kuat dengan berbagai konfigurasi dan utilitas. Anda dapat mengintegrasikannya dengan visualisasi Tableau, dan setiap kali parameter diubah, skrip Python akan berjalan otomatis untuk memberikan pengalaman visualisasi yang dinamis.
Mengapa TabPy?
Walaupun Tableau menyediakan fungsionalitas kaya untuk membuat, memanipulasi, dan membersihkan field data, kita dibatasi pada fungsionalitas statistik sederhana. Untuk membuka statistik tingkat lanjut seperti pembelajaran mesin, kita akan mengintegrasikan pustaka Python yang kuat dengan Tableau.
Pelajari berbagai teknik statistik di Tableau dengan mengikuti kursus interaktif DataCamp.
Dalam tutorial ini, kita akan mempelajari cara menyiapkan server TabPy dan mengerjakan proyek pembelajaran mesin sederhana. Kita akan menggunakan algoritme K Means untuk membagi listing AirBnB Amsterdam ke dalam berbagai klaster.
Menyiapkan TabPy
Menyiapkan server TabPy itu sederhana. Anda dapat memasang TabPy menggunakan `pip` di terminal atau `!pip` di Jupyter Notebook. Ini akan otomatis memasang server dan client API untuk Python.
pip install tabpy
Untuk menjalankan server, kita akan mengetik `tabpy` di terminal. Butuh beberapa detik hingga muncul bahwa server berjalan secara lokal pada port 9004.
tabpy
Keluaran
... Password file is not specified: Authentication is not enabled
... Call context logging is disabled
... Initializing TabPy...
... Initializing TabPy Server...
... Done initializing TabPy.
... Setting max request size to 104857600 bytes
... Initializing models...
... Web service listening on port 9004
Konfigurasi Server TabPy
Anda dapat mengonfigurasi server TabPy menggunakan file konfigurasi dan perintah di bawah ini.
tabpy --config=path/to/my/config/file.conf
Anda dapat mengonfigurasi:
- Koneksi HTTP vs HTTPS
- Manajemen Pengguna
- Logging
TabPy memberi Anda kebebasan untuk menyesuaikan server berdasarkan kebijakan perusahaan terkait keamanan dan penjaminan mutu. Anda dapat melihat contoh file konfigurasi dan mempelajari cara menyiapkan server dengan persyaratan tertentu.
Menerapkan TabPy ke Heroku
Jika Anda menggunakan Tableau Cloud atau Tableau Server, Anda perlu menerapkan server TabPy ke platform cloud atau web hosting. Anda dapat melakukannya dengan menggunakan file Docker atau langsung menerapkan server di Heroku.
Untuk menjalankan server jarak jauh di Heroku:
- Masuk ke akun Heroku Anda melalui browser, dan jika Anda belum memiliki akun, daftar gratis.
- Buka repositori TabPy di GitHub dan klik tombol "Deploy to Heroku" di Readme.

- Ikuti instruksinya. Tulis nama server dan pilih lokasi server.
- Atur variabel lingkungan username dan password.
Server Anda diterapkan tanpa repot. Anda dapat menghubungkan Tableau dengan URL dan nomor port.
Menghubungkan ke TabPy
Pastikan server TabPy Anda berjalan secara lokal atau jarak jauh sebelum menghubungkannya dengan Tableau.
Untuk menghubungkan server, kita harus mengklik menu Help dan memilih Settings and Performance > Manage Analytics Extension Connection. Ini akan memunculkan jendela baru dengan berbagai jenis koneksi: TabPy, Einstein Discovery, RServe, dan Analytics Extension API.

Kita akan memilih opsi TabPy, yang akan memunculkan jendela lain yang meminta kita menambahkan Hostname, Port, Username, dan Password. Kita akan mengabaikan opsi username dan password karena belum menyiapkannya.
Pada langkah berikutnya, kita akan menambahkan Hostname sebagai “localhost” dan Port menjadi “9004” lalu tekan Test Connection. Setelah lolos uji, kita akan menyimpan konfigurasi koneksi.

Menggunakan Python dengan Perhitungan Tableau
Untuk menjalankan skrip Python di calculated field, Anda memerlukan salah satu fungsi skrip berikut berdasarkan keluaran Anda:
- SCRIPT_BOOL
- SCRIPT_INT
- SCRIPT_REAL
- SCRIPT_STR
Jika fungsi Anda mengembalikan nilai boolean, gunakan fungsi SCRIPT_BOOL. Anda selalu dapat mendapatkan integer lalu mengonversinya ke tipe lain menggunakan fungsi bawaan.
Pada bagian ini, kita akan menggunakan dataset penjualan toko dari Kaggle. Field data Sales dan Profit menghitung koefisien korelasi Pearson.

SCRIPT_REAL memerlukan dua bagian. Pertama adalah skrip Python dalam tanda kutip ganda dan bagian kedua adalah argumen teragregasi.
Kita akan menggunakan paket Python Numpy untuk menghitung korelasi antara argumen Sales dan Profit. Kita tidak dapat menambahkan argumen secara langsung. Sebagai gantinya, kita menggunakan placeholder seperti “_arg1” dan “_arg2”. Misalnya, SUM([Profit]) berada di urutan kedua, dan ditautkan ke “_arg2”.
Kita hanya mengekstrak koefisien korelasi dari matriks np.corrcoef untuk mengembalikan satu kolom.
SCRIPT_REAL("import numpy as np
return np.corrcoef(_arg1,_arg2)[0,1]",
SUM([Sales]),SUM([Profit]))
Setelah menambahkan skrip ke calculated field “Correlation”, klik tombol apply. Itu akan menjalankan skrip dan mengembalikan nilai yang sesuai dengan Customer Name.
Sebelum menekan tombol OK, klik teks “Default Table Calculation” dan ubah opsi dari Automatic ke Customer Name.

Untuk memvisualisasikan scatter plot kategori produk dan segmentasi pelanggan:
- Seret dan letakkan field data Product Category dan Sales ke rak Columns.
- Lalu, seret dan letakkan field data Customer Segment dan Profit ke rak Rows.
- Seret dan letakkan Customer Name ke tombol Detail di bagian Marks.
- Terakhir, seret dan letakkan calculated field baru Correlation ke tombol Label di bagian Marks.

Grafik di atas menunjukkan koefisien korelasi pelanggan berdasarkan kategori produk dan segmen pelanggan. Ada korelasi tinggi antara kategori Furniture dan pelanggan Small Business.
Skrip Python Klastering di Tableau
Pada bagian ini, kita akan menggunakan dataset Airbnb Amsterdam untuk membuat klaster menggunakan algoritme K-means dan kerangka kerja pembelajaran mesin scikit-learn.

Sebelum kita masuk ke penulisan skrip TabPy, kita perlu menganalisis dan memahami dataset di Jupyter Notebook.
Inisialisasi Proyek
Kita akan menggunakan pandas untuk pemasukan dan pembersihan data, matplotlib dan seaborn untuk visualisasi data, dan scikit-learn untuk pemrosesan data dan algoritme klastering.
Pertama, kita akan mengimpor paket Python yang diperlukan dan memasukkan file “listing.csv”. Lalu, kita akan menelusuri nilai hilang menggunakan .isna().sum().
mport pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder
from sklearn.cluster import KMeans
df = pd.read_csv("listings.csv")
df.isna().sum()
Seperti dapat kita amati, ada beberapa nilai hilang pada neighbourhood_group, last_review, dan reviews_per_month. Alih-alih melakukan imputasi atau menghapus kolom-kolom ini, kita tidak akan menyertakannya dalam pelatihan model kita.
id 0
name 38
host_id 0
host_name 4
neighbourhood_group 20030
neighbourhood 0
latitude 0
longitude 0
room_type 0
price 0
minimum_nights 0
number_of_reviews 0
last_review 2406
reviews_per_month 2406
calculated_host_listings_count 0
availability_365 0
dtype: int64
Memroses Data
Kita akan membuat dataframe X yang akan berisi fitur penting untuk pelatihan. Fitur-fitur ini tidak memiliki nilai hilang, ID unik, atau korelasi tinggi. Misalnya, kita tidak akan menyertakan id, name, host_id, host_name, latitude, dan longitude.
Kita memiliki kolom kategorikal, dan untuk mengonversinya menjadi numerik, kita akan menggunakan LabelEncoder(). Untuk menerapkannya ke beberapa kolom kategorikal, kita akan menggunakan fungsi Pandas .apply().
X = df[['neighbourhood',
'room_type',
'price',
'minimum_nights',
'number_of_reviews',
'availability_365',
'calculated_host_listings_count']]
LE = LabelEncoder()
cat = ['neighbourhood','room_type']
X[cat] = X[cat].apply(LE.fit_transform)
X.head()

Seperti yang kita lihat, dataframe akhir memiliki tujuh kolom dengan nilai numerik.
Mencari Elbow Klaster K Means
Metode Elbow digunakan untuk menentukan jumlah klaster optimal dalam suatu dataset. Kita akan menggunakan n_clusters dan .inertia_ untuk menampilkan grafik garis dengan pola seperti siku. Inertia adalah jumlah kuadrat jarak sampel ke pusat klaster terdekat.
Kode di bawah ini akan berjalan dari 1 hingga 9 dan menambahkan nilai inertia ke array clusters. Lalu, kita akan menggunakan informasi ini untuk membuat grafik garis klaster v/s inertia.
clusters = []
for i in range(1, 10):
km = KMeans(n_clusters=i).fit(X)
clusters.append(km.inertia_)
fig, ax = plt.subplots(figsize=(12, 8))
sns.lineplot(x=list(range(1, 10)), y=clusters, ax=ax)
ax.set_title('Searching for Elbow')
ax.set_xlabel('Clusters')
ax.set_ylabel('Inertia');

Grafik menunjukkan lengkungan pertama pada 3 dan lengkungan kedua pada 4. Kita akan menyertakan kedua jumlah klaster ini dalam analisis visual Tableau.
Anda dapat mempelajari lebih lanjut tentang klastering K Means di Python dengan scikit-learn dengan mengikuti tutorial kami.
Membuat Parameter N-Cluster
Untuk menghindari penambahan jumlah klaster secara manual ke dalam kode, kita akan membuat parameter dengan rentang 1 hingga 10.
Kita dapat membuat parameter dengan klik kanan di bagian Data dan memilih opsi Create Parameter. Ubah Data type ke Integer, Current value ke 1, dan klik Range untuk menambahkan nilai Minimum 1 dan Maksimum 10.

Skrip Python di Calculated Field
Sekarang kita akan memindahkan kode dari Jupyter Notebook ke calculated field Tableau. Calculated field Tableau tidak memerlukan pemuatan dataset. Kita sudah memiliki field data yang diperlukan, dan kita akan menggunakannya melalui argumen SCRIPT_INT.
- Kita akan mengonversi argumen satu dan dua menjadi tipe numerik menggunakan LabelEncoder.
- Ambil semua argumen dan beri nama variabel yang sesuai.
- Kita akan menumpuk semua argumen masukan kecuali N ke dalam kolom.
- Definisikan model dengan jumlah klaster “N”. Kita dapat mengubah variabel ini menggunakan parameter N Clusters.
- Terakhir, latih dan prediksi klaster menggunakan fitur-fitur tersebut.
- Kembalikan keluaran sebagai daftar integer.
Bagian kedua dari skrip adalah field data teragregasi dan sebuah parameter.
Anda dapat meninjau kode di bawah ini untuk memahami hubungan antara argumen dan field data.
SCRIPT_INT("from sklearn.preprocessing import LabelEncoder
from sklearn.cluster import KMeans
LE = LabelEncoder()
neighbourhood = LE.fit_transform(_arg1)
room_type = LE.fit_transform(_arg2)
price = _arg3
minimum_nights = _arg4
number_of_reviews = _arg5
availability_365 = _arg6
calculated_host_listings_count = _arg7
N = _arg8[0]
X = np.column_stack(
[
neighbourhood,
room_type,
price,
minimum_nights,
number_of_reviews,
availability_365,
calculated_host_listings_count,
]
)
kmeans = KMeans(n_clusters=N, random_state=35)
return kmeans.fit_predict(X).tolist()
",
ATTR([Neighbourhood]),
ATTR([Room Type]),
AVG([Price]),
MEDIAN([Minimum Nights]),
SUM([Number Of Reviews]),
AVG([Availability 365]),
AVG([Calculated Host Listings Count]),
[N Clusters]
)
Buat calculated field baru (Kmean) lalu salin dan tempel kode di atas. Pastikan hasil Anda dihitung berdasarkan Host Id. Anda dapat mengubahnya dengan mengklik teks biru Default Table Calculation.

Visualisasi Data
Untuk membuat visualisasi di bawah ini, kita harus mengikuti serangkaian langkah.
- Seret dan letakkan field data Price ke rak Columns dan Number of Reviews ke rak Rows.
- Buka menu Analysis di bagian atas dan hapus centang Aggregate Measures.
- Seret dan letakkan field data Host Id ke Detail di bagian Marks, dan calculated field Kmean ke Color.
- Ubah calculated field Kmean menjadi Discrete dengan klik kanan dan mengakses opsinya.
- Klik kanan pada N Clusters di bagian Parameters dan pilih Show Parameters untuk menampilkan penggeser di kanan.
- Sesuaikan penggeser N Clusters ke 3 atau 4 untuk melihat hasil secara real-time.

Pada bagian berikutnya, kita akan membuat beberapa lembar visualisasi dengan mengubah field data dan jumlah klaster.
- Price v/s Availability: kita dapat melihat empat klaster. Berdasarkan informasi ini, kita dapat membuat sistem rekomendasi untuk Airbnb atau bisnis hotel apa pun.
- Review v/s Availability: kita hanya dapat melihat dua klaster besar meskipun N Clusters adalah 3.
- Listings v/s Price: kita dapat melihat klaster merah, biru, dan hijau. Kuning di sudut dikelilingi oleh hijau dan biru.

Pelajari lebih lanjut tentang analitik dan visualisasi lanjutan dengan mengikuti kursus Analyzing Data in Tableau. Ini akan membantu Anda memahami persiapan data, eksplorasi, analisis pemetaan, grup, set, dan parameter.
Jika Anda menikmati tutorial klastering ini, coba konversi titik data ke peta. Cukup seret dan letakkan Latitude dan Longitude ke rak Columns dan Rows.

Anda juga dapat membuat klaster tanpa TabPy dengan mengikuti tutorial Analisis Klaster di Tableau.
Kesimpulan
Dengan mengintegrasikan TabPy, Anda akan membuka pintu ke berbagai kemungkinan untuk mengotomatiskan dan meningkatkan penyiapan analitik data Anda saat ini. Kita juga dapat menggunakannya untuk mengintegrasikan model deep learning ke dalam dasbor analitik, menjalankan tugas statistik kompleks, serta menerapkan integrasi dan pengembangan berkelanjutan.
Integrasi TabPy hadir dengan beberapa batasan, seperti keluaran tunggal. Batasan ini hanya akan memengaruhi individu yang merupakan Data Scientist atau Machine Learning Engineer.
Pada pos ini, kita telah mempelajari tentang TabPy (server Python untuk Tableau) dan cara menggunakannya untuk membuat klaster K Means. Membuat klaster penting bagi industri e-commerce, perjalanan, dan hiburan untuk memahami perilaku pelanggan. Kita telah menggunakan klaster K Means, tetapi Anda dapat menggunakan algoritme lain untuk mendapatkan hasil yang lebih baik.
Berikut adalah daftar algoritme klastering teratas:
- Affinity Propagation
- Agglomerative Hierarchical Clustering
- BIRCH (Balanced Iterative Reducing and Clustering using Hierarchies)
- DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
- Gaussian Mixture Models (GMM)
- Mean Shift Clustering
Jika Anda baru mengenal Tableau dan ingin mempelajari segala hal tentang visualisasi data dan komputasi statistik, ikuti jalur keterampilan Tableau Fundamentals.
Pada bagian kedua dari seri tutorial ini, kami menjelajahi skrip Python yang kompleks menggunakan TabPy. Kita akan mempelajari cara menerapkan model peramalan Facebook Prophet pada server TabPy dan membuat visualisasi deret waktu yang dinamis.
