Lewati ke konten utama

Klaster K Means di Tableau dengan Tutorial TabPy

Pelajari pentingnya TabPy dan cara membuat model klastering K Means menggunakan skrip Python di Tableau.
Diperbarui 28 Sep 2026  · 12 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Tutorial TabPy

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.

Deploy ke Heroku

  • 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. 

Kelola Koneksi Analytics Extension

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. 

Kelola Koneksi Analytics Extensions

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. 

Dataset penjualan toko

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. 

Table Calculation

Untuk memvisualisasikan scatter plot kategori produk dan segmentasi pelanggan: 

  1. Seret dan letakkan field data Product Category dan Sales ke rak Columns.
  2. Lalu, seret dan letakkan field data Customer Segment dan Profit ke rak Rows. 
  3. Seret dan letakkan Customer Name ke tombol Detail di bagian Marks. 
  4. Terakhir, seret dan letakkan calculated field baru Correlation ke tombol Label di bagian Marks. 

Scatter plot kategori produk dan segmentasi pelanggan

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. 

listings

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()

dataframe final

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 garis dengan pola seperti siku

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. 

Membuat Parameter

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. 

  1. Kita akan mengonversi argumen satu dan dua menjadi tipe numerik menggunakan LabelEncoder.
  2. Ambil semua argumen dan beri nama variabel yang sesuai. 
  3. Kita akan menumpuk semua argumen masukan kecuali N ke dalam kolom. 
  4. Definisikan model dengan jumlah klaster “N”. Kita dapat mengubah variabel ini menggunakan parameter N Clusters.
  5. Terakhir, latih dan prediksi klaster menggunakan fitur-fitur tersebut.  
  6. 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.  

calculated field Kmean

Visualisasi Data

Untuk membuat visualisasi di bawah ini, kita harus mengikuti serangkaian langkah.

  1. Seret dan letakkan field data Price ke rak Columns dan Number of Reviews ke rak Rows. 
  2. Buka menu Analysis di bagian atas dan hapus centang Aggregate Measures. 
  3. Seret dan letakkan field data Host Id ke Detail di bagian Marks, dan calculated field Kmean ke Color. 
  4. Ubah calculated field Kmean menjadi Discrete dengan klik kanan dan mengakses opsinya.  
  5. Klik kanan pada N Clusters di bagian Parameters dan pilih Show Parameters untuk menampilkan penggeser di kanan. 
  6. Sesuaikan penggeser N Clusters ke 3 atau 4 untuk melihat hasil secara real-time.   

Klastering Price vs Number of Reviews

Pada bagian berikutnya, kita akan membuat beberapa lembar visualisasi dengan mengubah field data dan jumlah klaster.  

  1. Price v/s Availability: kita dapat melihat empat klaster. Berdasarkan informasi ini, kita dapat membuat sistem rekomendasi untuk Airbnb atau bisnis hotel apa pun. 
  2. Review v/s Availability: kita hanya dapat melihat dua klaster besar meskipun N Clusters adalah 3.  
  3. Listings v/s Price: kita dapat melihat klaster merah, biru, dan hijau. Kuning di sudut dikelilingi oleh hijau dan biru. 

berbagai klaster

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. 

Klastering Kmean Geografis

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.

Topik
Tableau
Data Science
Python

Kursus Tableau

Kursus

Pengantar Tableau

6 jam
328.6K
Mulailah perjalanan Anda dengan Tableau melalui kursus Pengenalan Tableau kami. Pelajari dasar-dasar Tableau, termasuk fitur-fiturnya dan dasbor.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya