Ana içeriğe atla

TabPy ile Tableau’da Python Fonksiyonları ve Prophet Tahmin Modeli Dağıtımı

Facebook Prophet tahmin modelini Tableau sunucusuna dağıtarak Tableau’da gelişmiş Python betik yazmayı ve dinamik zaman serisi görselleştirme oluşturmayı öğrenin.
Güncel 3 Eki 2026  · 12 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Tabpy logosu

TabPy Araçları

TabPy Tools, TabPy sunucusunda Python fonksiyonlarını dağıtmak ve yönetmek için bir Python paketidir. 

TabPy araçlarının işlevlerine derinlemesine bakalım.

TabPy’ye Bağlanma

İstemci fonksiyonu, URL ve PORT kullanarak Python API’sini TabPy sunucusuna bağlamanızı sağlar. 

rom tabpy.tabpy_tools.client import Client

client = Client('http://localhost:9004/')

“client” nesnesini kimlik doğrulaması ayarlamak ve sunucudaki Python fonksiyonlarını yönetmek için kullanabiliriz. 

Kimlik Doğrulama

Kullanıcı adı ve şifrenizi “set_credentials” fonksiyonunu kullanarak ayarlayabilirsiniz. Sunucuya bir model dağıtmak için kimlik bilgilerini ayarlamak gereklidir. 

Not: Bu fonksiyonu yalnızca TabPy sunucusunda kimlik doğrulamayı etkinleştirdiyseniz çalıştırın. Daha fazla bilgi için sunucu yapılandırma belgelerini okuyun.  

client.set_credentials('username', 'password')

Bir Fonksiyonu Dağıtma

Bir fonksiyon oluşturun ve `client.deploy()` fonksiyonunu kullanarak yayınlayın. Üç argüman gerekir: fonksiyon adı, Python fonksiyonu ve açıklama. 

addition fonksiyonu iki veri alanını toplar ve liste olarak döndürür. Daha sonra “add” fonksiyonuna Tableau’dan erişilecektir.

client.deploy('add', addition, 'Adds two numbers x and y')

Bir Modeli Dağıtma

Bir makine öğrenmesi modelini eğitip model çıkarım fonksiyonunu dağıttığınızda, Tableau modeli ve fonksiyon tanımını cloudpickle kullanarak otomatik olarak kaydeder. Daha hızlı yanıt süresi sağlamak için sunucu belleğinde kalır. 

Kısacası, Tableau’da bir şeyler değiştiğinde modelinizi yeniden eğitmeniz gerekmez. Modellerin dağıtımı hakkında daha fazlasını ilerleyen bölümlerde öğreneceğiz. 

Uç Noktaları Kaldırma

Bir fonksiyonu veya modeli kaldırmak için `remove` fonksiyonunu kullanın. Yalnızca bir fonksiyon adı gerekir. 

client.remove('add')

>>> Daha gelişmiş özellikler için GitHub’daki TabPy/tabpy deposuna göz atın.

IDE Kullanarak Bir Python Fonksiyonu Dağıtma

Birinci bölüme benzer şekilde, Pearson Korelasyon Katsayısı fonksiyonu oluşturacağız. Fonksiyonu Tableau’da yazmak yerine Python API’si ile sunucuya dağıtacak ve ardından Tableau hesaplaması kullanarak fonksiyona erişeceğiz.

Bu bölümde, satış ve kâr veri alanları arasındaki korelasyonu hesaplamak için Kaggle’daki Sales Store Product veri setini kullanacağız. 

Kaggle Veri Kümesi

Kaggle Veri Kümesi Sales Store Product

Python kodu yazmaya geçmeden önce en güncel TabPy paketine sahip olduğunuzdan emin olun.

pip install -U tabpy

Sunucuyu yerelde bir terminal üzerinden çalıştırın.

tabpy

TabPy İstemcisi 

Python’a aşinaysanız, bu kısım sizin için oldukça basit olacaktır. Python’a giriş kursunu alarak Python fonksiyonları hakkında her şeyi öğrenebilirsiniz.

  1. tabpy_tools’tan Client’ı ve hesaplama için NumPy’yi içe aktaracağız. 
  2. URL ve PORT kullanarak TabPy sunucusuna bağlanın.
  3. x ve y alıp tek bir sütunda korelasyon katsayısını döndürecek pearson_correlation_coefficient() fonksiyonunu oluşturun. 
  4. “pcc” fonksiyonunu yayınlamak için client.deploy() fonksiyonunu kullanın. Üç argüman gerekir: ad, fonksiyon ve açıklama.  
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')

TabPy Sorgusu 

Şimdi bu fonksiyonu Tableau’da tabpy.query() kullanarak çağıracağız. Python fonksiyon adlarını ve _arg1 ile _arg2 gibi argüman yer tutucularını gerektirir. 

  1. SCRIPT_REAL içinde sorgu betiğini ekleyin ve veri alanlarını toplayın. 
  2. Sorgu betiği return ile başlar ve sonucu JSON’dan çıkarmak için [‘response’] ile biter.
  3. Varsayılan tablo hesaplamasını Customer Name veri alanı olarak ayarlayın.
  4. Apply ve ardından OK düğmesine basın.

PCC hesaplanan Alan

Pearson korelasyon katsayısı hesaplanan alanı

Tableau betiğini anlamak için eğitimin ilk bölümünü inceleyebilirsiniz. 

SCRIPT_REAL("return tabpy.query('pcc',_arg1, _arg2)['response']",
SUM([Sales]),SUM([Profit]))

Veri Görselleştirme 

Şimdi, ürün kategorisine ve müşteri segmentasyonuna göre kategorize edilmiş korelasyonu gösteren bir görselleştirme oluşturacağız.

  1. Customer Name’i Marks panelinde Detail üzerine ve Ship Mode’u Color üzerine sürükleyip bırakın. 
  2. Customer Segment ve pcc (korelasyon hesaplanan alanı) ögelerini Columns rafına sürükleyip bırakın. 
  3. Product Category’yi Rows rafına sürükleyip bırakın.

Korelasyon çubuk grafiği

Korelasyon katsayısı çubuk grafiği 

Çoğu durumda, Corporate sektörde satış ile kâr arasında yüksek bir korelasyon vardır. Genel olarak, korelasyon katsayılarını kullanabilir ve şirketin kârını artırmak için veriye dayalı kararlar alabilirsiniz. 

Diğer korelasyon katsayıları, Python’da korelasyon hesaplama ve korelasyon ile nedensellik arasındaki ilişki hakkında bilgi edinmek için Python ile korelasyon ayrıntıları eğitimimizi okuyun. 

Prophet Modelini Tableau’ya Dağıtma 

Bu bölümde Facebook Prophet tahmin modelini dağıtmayı ve tarih veri alanlarını değiştirmeyi öğreneceğiz. 2015’ten 2020’ye kadar olan Apple Hisse Fiyatları üzerinde zaman serisi modelini eğiteceğiz. 

Apple hisse fiyatları

Kaggle Veri Kümesi Apple Stock Prices (2015-2020)

Tableau’da betik yazmaya ve tahmin görselleştirmesi oluşturmaya geçmeden önce, Python kodunu test etmemiz ve tahmin modelini Jupyter Notebook’ta değerlendirmemiz gerekiyor. 

Facebook Prophet 

Facebook Prophet, tek değişkenli zaman serisi verilerinin otomatik tahmini için açık kaynaklı bir kütüphanedir. Yıllık, haftalık ve günlük mevsimsellik etkilerinde en iyi şekilde çalışır. 

Neden Prophet? 

Kayıp veriler, trend değişimleri ve aykırı değerlerle başa çıkmada iyidir.  

Prophet’in Kurulumu

Aşağıdaki komutu terminalde kullanarak Prophet Python paketini kurabilirsiniz. 

pip install pystan==2.19.1.1
pip install prophet

Ya da Anaconda Python ortamını kullanıyorsanız aşağıdaki komutu kullanın. 

conda install -c conda-forge prophet

Proje Başlatma 

  1. Veri alma ve işleme için pandas’ı ve tahmin modellerini eğitip değerlendirmek için Prophet’i içe aktararak başlayacağız. 
  2. Apple hisse veri seti (AAPL.csv) dosyasını pandas read_csv fonksiyonuyla okuyun.
  3. X’i date ve high sütunlarıyla tanımlayın.   
  4. Veri çerçevesinin şeklini görüntüleyin ve high sütununun zaman serisi çizgi grafiğini görselleştirin. 
import pandas as pd
from prophet import Prophet
data = pd.read_csv("AAPL.csv")
X = data.loc[:, ['date','high']]
print(X.shape)
X.plot();

Çıktı

(1258, 2)

Apple hissesi zamanla artmaktadır. İki düşüş yaşamış olsa da istikrarlı büyümeye geri dönmüştür. 

Apple hisse çizgi grafiği

Derinlemesine bilgi için Hugo Bowne-Anderson’ın Python zaman serisi analizi eğitimini izleyin. Ayrıca Python’da zaman serisi analizi üzerine DataCamp’in kısa bir kursunu da alarak uygulamalı deneyim kazanabilirsiniz.  

Makine Öğrenmesi Modelini Kurma

Bu kısımda, verileri Prophet modeli için hazırlayıp varsayılan hiperparametrelerle eğiteceğiz. 

  1. Sütunları ds ve y olarak yeniden adlandırın
  2. ds sütunlarını datetime (tarih) tipine çevirin
  3. Prophet() kullanarak bir model tanımlayın
  4. model.fit() ile modeli eğitin
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)

Model Değerlendirme

Değerlendirme için, veri setine gelecekteki tarihleri eklememiz gerekir. Bunu make_future_dataframe kullanarak yapabiliriz. 

Şunları ayarlayacağız:

  • prediods 365 gün olarak
  • freq “D” olarak. Bunu “Y” olarak da değiştirebilirsiniz, ancak o zaman periods değerini 1’e çekmeniz gerekir.
  • include_history önceki verileri hariç tutmak için false olarak.
future = model.make_future_dataframe(periods=365,
                                    freq='D',
                                    include_history=False
                                    )
future.tail()

Çıktı

Gördüğümüz üzere, future veri seti 2021 yılı ile bitiyor. 

        ds
360 2021-05-18
361 2021-05-19
362 2021-05-20
363 2021-05-21
364 2021-05-22

Sıradaki adım, bu verileri kullanarak Apple hissesinin high değerlerini tahmin etmektir. Sonrasında 'ds', 'yhat', 'yhat_lower' ve 'yhat_upper' değerlerini görüntüleyeceğiz. 

yhat_lower ve yhat_upper kabul edilebilir sapma aralığını tanımlar. Kısaca, hisse fiyatı 485,3’e kadar yükselebilir ve 365,4’e kadar düşebilir. Bu bilgi, günlük işlem yapanların riski değerlendirmesine yardımcı olabilir. 

forecast = model.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail

Çıktı

    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

Tahmin verilerini plot() fonksiyonunu kullanarak görselleştirelim. Kabul edilebilir aralığı mavi renkte gösteren nokta ve çizgi grafiğini görüntülemek için tahmini değerleri gerektirir. 

model.plot(forecast)

Aşağıdaki görselleştirme, Apple hisselerinin düşüş olmadan değer kazanacağını gösteriyor. 

Apple büyüme

Tahmini, doyma tahminleri, trend değişim noktaları, mevsimsellik, tatil etkileri ve regresörler, çarpımsal mevsimsellik, belirsizlik aralıkları ve aykırı değerler ile ilgili hiperparametreleri ayarlayarak iyileştirebilirsiniz. Ayrıca hiperparametre optimizasyonu kullanarak bunları otomatik biçimde de ayarlayabilirsiniz. Facebook Prophet hakkında daha fazla bilgi edinmek için belgeleri okuyun.  

Zaman serisi tahmini geniş bir alandır ve Moez Ali’nin zaman serisi tahmini eğitimini takip ederek her şeyi öğrenebilirsiniz. Eğitim; zaman serisi analizi, istatistiksel modeller, Python çerçeveleri ve AutoML’i kapsar. 

Ayrıca Python’da zaman serisi verilerini görselleştirme kursumuzu alarak çizgi grafikleri, mevsimselliği, trendi ve gürültüyü tespit etmeyi ve birden çok zaman serisini görüntülemeyi öğrenebilirsiniz.  

Model Çıkarımını Dağıtma 

Bu bölümde, model çıkarımını dağıtacağız. Bu sayede modeli ve fonksiyon tanımını TabPy sunucusunda saklayarak daha hızlı yanıt süresi sağlayacağız. 

Önce URL ve PORT kullanarak Client’a bağlanacağız. Ardından prophet_forecasting fonksiyonunu tanımlayacağız. 

  1. Girdi olarak tahmin edilecek yıl sayısını alacak ve bunu kullanarak bir future tarih çerçevesi oluşturacak. 
  2. model.predict ve future veri çerçevesini kullanarak tahminler yapacak. 
  3. Tarihleme açısından tarihi verilerle birleştirebilmek için “yhat” sütununu “y” olarak yeniden adlandıracak. 
  4. Son kısım hassas: Tableau’da data alanına değer ekleyemeyiz. Bunun yerine Tarih değerlerini 365*n kadar kaydıracağız. Burada n yıl sayısıdır.

Son olarak bunu paketleyip client.deploy() kullanarak TabPy sunucusuna dağıtacağız. Fonksiyon adını “prophet” olarak ayarlayacağız. override argümanı, modelin ve fonksiyonun sürümlerini oluşturmamıza yardımcı olur. Bu, kodu hata ayıklarken başlangıç aşamasında gereklidir. 

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)

Tableau’yu Kurma

Tableau içinde yıl sayısını kontrol etmek için bir Years parametresi oluşturmamız gerekiyor. Bu parametre prophet fonksiyonunda kullanılacaktır. 

Data bölümünde sağ tıklayıp Create Parameter seçeneğini seçerek bir Years parametresi oluşturabiliriz. Data type’ı Integer, Current value’yu 1 yapın ve Range’e tıklayarak Minimum 1 ve Maximum 5 değerlerini ekleyin.

Parametre oluştur

Years Parametresini Oluşturma 

Ardından bir Forecast_date hesaplanan alanı oluşturacağız. Date veri alanını kullanacak ve değerleri Years sayısına göre kaydıracağız. 

Forecast tarih alanı

Forecast_date hesaplanan alanı 

DATEADD fonksiyonu, Years değerini Date veri alanına ekleyecek ve ardından günü baz alacak şekilde keser. 

DATETRUNC('day',DATEADD('year',[Years],[Date])))

Sonraki kısımda, bir forecast hesaplanan alanı oluşturacak ve dağıtılmış modele tabpy.query() kullanarak erişeceğiz. Sorgu fonksiyonu iki bölümden oluşur; ilk bölüm Python fonksiyonunun adı, ikinci bölüm ise argümanlar için yer tutucuların listesidir. 

Forecast hesaplanan alan

forecast hesaplanan alanı 

Bizim durumumuzda yalnızca tek bir argüman var, bu yüzden _arg1 ekleyeceğiz. Sorguyu SCRIPT_REAL adlı Tableau fonksiyonuyla sarmalayacak ve girdi olarak Years parametresini vereceğiz. OK düğmesine basmadan önce sonuçların Forecast_date boyunca hesaplandığından emin olun. Bunu mavi metne (Default Table Calculation) tıklayarak değiştirebilirsiniz.

SCRIPT_REAL("return tabpy.query('prophet',_arg1[0])['response']",
[Years]
)

Ardından High veri alanını ve Years parametrelerini kullanarak bir Actual hesaplanan alanı oluşturacağız. 

Actual hesaplanan alan

Actual hesaplanan alanı 

LOOKUP, High değerlerini Years*365 kadar kaydırmamıza yardımcı olur. Örneğin, Years parametresi 2 ise, değerleri 730 kadar kaydıracaktır.

LOOKUP(SUM([High]),[Years]*365)

Gerçek vs. Tahmin

Nihayet sona geldik. Gerçek vs. Tahmin çizgi grafiğini çizmek için şu basit adımları izleyeceğiz:

  1. Sol alttaki Parameters bölümüne gidin, Years parametresine sağ tıklayın ve Show Parameters’ı seçin.
  2. Forecast_date’i Columns rafına sürükleyip bırakın. Day olarak değiştirin.
  3. Dimensions’tan Measure Names’i Filters’a sürükleyip bırakın. Yalnızca Actual ve forecast’ı seçin. 
  4. Dimensions’tan Measure Names’i Color’a sürükleyip bırakın.
  5. Son olarak, Measures’tan Measure Names’i Rows rafına sürükleyip bırakın.

Tüm adımları uyguladıktan sonra, Actual ve forecastı farklı renklerde göreceksiniz. 

Gerçek vs. Tahmin çizgi grafiği

Gerçek vs. Tahmin çizgi grafiği

Yukarıdaki çizgi grafik mükemmel olmaktan uzaktır ve hiperparametre ayarı, çapraz doğrulama, eksik değerlerin ve tarihlerinin tamamlanması ve tarih fonksiyonunun iyileştirilmesini gerektirir. 

Sonuç

Bu eğitimde, bir makine öğrenmesi modelini TabPy sunucusunda nasıl kurup dağıtacağımızı ve Tableau betiği kullanarak buna nasıl erişeceğimizi öğrendik. Ayrıca tabpy_tools’un temel bilgilerini ve bunu fonksiyon veya model dağıtmak için nasıl kullanabileceğimizi de gördük. 

DataCamp kursunu alarak finansal tahmin hakkında daha fazla bilgi edinin. Gelir tabloları, bilanço ve tahmin oranları, ham verileri biçimlendirme, tarihleri ve finansal dönemleri yönetme ile varsayımlar ve tahminlerdeki varyansları anlamayı öğreneceksiniz.

Zaman serisi tahmini başlangıçtır; tahminlerimizi aşağıdaki gibi diğer makine öğrenmesi algoritmalarıyla eğiterek geliştirebiliriz:

  • Otoregresif Entegre Hareketli Ortalama (ARIMA)
  • Mevsimsel Otoregresif Entegre Hareketli Ortalama (SARIMA)
  • Üstel Düzgünleştirme (ES)
  • XGBoost
  • LSTM (Derin Öğrenme)
  • Temporal Fusion Transformer (Google)

Tableau’ya yeniyseniz ve veri görselleştirme ile istatistiksel hesaplama hakkında her şeyi öğrenmek istiyorsanız, Tableau fundamentals yetkinlik yolunu takip edin. 

Bu seri’nin son bölümüdür. TabPy eğitiminin ilk bölümünde TabPy hakkında her şeyi öğrenmiş ve Tableau içinde Python betiği çalıştırarak Amsterdam’daki Airbnb ilanlarının çeşitli kümelerini oluşturmuştuk.

Konular
Python
Veri Bilimi
Tableau

Python için Kurslar 

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör