कोर्स

TabPy टूल्स
TabPy Tools TabPy सर्वर पर Python फ़ंक्शनों को डिप्लॉय और मैनेज करने के लिए एक Python पैकेज है.
आइए TabPy टूल्स की विशेषताओं को विस्तार से समझते हैं।
TabPy से कनेक्ट करना
क्लाइंट फ़ंक्शन आपको URL और PORT का उपयोग करके Python API को TabPy सर्वर से कनेक्ट करने देता है।
rom tabpy.tabpy_tools.client import Client
client = Client('http://localhost:9004/')
हम “client” ऑब्जेक्ट का उपयोग प्रमाणीकरण सेट करने और सर्वर पर Python फ़ंक्शनों को मैनेज करने के लिए कर सकते हैं।
प्रमाणीकरण
आप “set_credentials” फ़ंक्शन का उपयोग करके अपना यूज़रनेम और पासवर्ड सेट कर सकते हैं। सर्वर पर कोई मॉडल डिप्लॉय करने के लिए क्रेडेंशियल्स सेट करना आवश्यक है।
ध्यान दें: यह फ़ंक्शन तभी चलाएँ जब आपने TabPy सर्वर पर प्रमाणीकरण सक्षम किया हो। अधिक जानने के लिए सर्वर कॉन्फ़िगरेशन दस्तावेज़ पढ़ें।
client.set_credentials('username', 'password')
फ़ंक्शन डिप्लॉय करना
एक फ़ंक्शन बनाएँ और उसे `client.deploy()` फ़ंक्शन से प्रकाशित करें। इसके लिए तीन आर्ग्युमेंट्स चाहिए: फ़ंक्शन का नाम, Python फ़ंक्शन, और विवरण।
addition फ़ंक्शन दो डेटा फ़ील्ड्स को जोड़ता है और सूची लौटाता है। बाद में, “add” फ़ंक्शन Tableau में एक्सेस किया जाएगा।
client.deploy('add', addition, 'Adds two numbers x and y')
मॉडल डिप्लॉय करना
जब आपने कोई मशीन लर्निंग मॉडल ट्रेन कर लिया है और मॉडल इन्फ़रेंस फ़ंक्शन डिप्लॉय कर दिया है, तो Tableau cloudpickle का उपयोग करके मॉडल और फ़ंक्शनों की परिभाषा अपने-आप सहेज लेता है। यह तेज़ प्रतिक्रिया समय देने के लिए सर्वर मेमोरी में रहता है।
सरल शब्दों में, आपको Tableau में कुछ बदलने पर हर बार मॉडल दोबारा ट्रेन करने की ज़रूरत नहीं होती। हम आगे आने वाले भागों में मॉडलों को डिप्लॉय करने के बारे में विस्तार से जानेंगे।
एंडपॉइंट्स हटाना
किसी फ़ंक्शन या मॉडल को हटाने के लिए `remove` फ़ंक्शन का उपयोग करें। इसके लिए सिर्फ़ फ़ंक्शन का नाम चाहिए।
client.remove('add')
>>> अधिक उन्नत सुविधाओं के लिए, GitHub पर TabPy/tabpy रिपॉजिटरी देखें।
IDE का उपयोग करके Python फ़ंक्शन डिप्लॉय करना
पहले भाग की तरह, हम Pearson Correlation Coefficient फ़ंक्शन बनाएँगे। Tableau में फ़ंक्शन लिखने के बजाय, हम इसे Python API का उपयोग करके सर्वर पर डिप्लॉय करेंगे और फिर Tableau कैलकुलेशन से फ़ंक्शन तक पहुँचेंगे।
इस भाग में, हम Kaggle के Sales Store Product डेटासेट का उपयोग बिक्री और मुनाफ़े के डेटा फ़ील्ड्स के बीच सहसंबंध निकालने के लिए करेंगे।

Kaggle डेटासेट Sales Store Product
Python कोड लिखना शुरू करने से पहले, सुनिश्चित करें कि आपके पास TabPy पैकेज का नवीनतम संस्करण है।
pip install -U tabpy
टर्मिनल का उपयोग करके सर्वर को लोकली चलाएँ।
tabpy
TabPy क्लाइंट
यदि आप Python से परिचित हैं, तो यह भाग आपके लिए काफी सरल होगा। आप Introduction to Python कोर्स लेकर Python फ़ंक्शनों के बारे में सब कुछ सीख सकते हैं।
- tabpy_tools से Client और गणना के लिए NumPy आयात करेंगे।
- URL और PORT का उपयोग करके TabPy सर्वर से कनेक्ट करें।
- pearson_correlation_coefficient() बनाएँ जो x और y लेगा और सहसंबंध गुणांक का एकल कॉलम लौटाएगा।
- “pcc” फ़ंक्शन प्रकाशित करने के लिए client.deploy() फ़ंक्शन का उपयोग करें। इसके लिए तीन आर्ग्युमेंट्स चाहिए: नाम, फ़ंक्शन, और विवरण।
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 क्वेरी
अब हम Tableau में tabpy.query() का उपयोग करके इस फ़ंक्शन को इनवोक करेंगे। इसके लिए Python फ़ंक्शन का नाम और _arg1 तथा _arg2 जैसे आर्ग्युमेंट प्लेसहोल्डर चाहिए।
- SCRIPT_REAL के भीतर क्वेरी स्क्रिप्ट जोड़ें और डेटा फ़ील्ड्स को एग्रीगेट करें।
- क्वेरी स्क्रिप्ट return से शुरू होती है और JSON से परिणाम निकालने के लिए [‘response’] पर समाप्त होती है।
- डिफ़ॉल्ट टेबल कैलकुलेशन को Customer Name डेटा फ़ील्ड पर सेट करें।
- Apply पर क्लिक करें और फिर OK दबाएँ।

Pearson correlation coefficient का calculated field
Tableau स्क्रिप्ट समझने के लिए आप ट्यूटोरियल का पहला भाग देख सकते हैं।
SCRIPT_REAL("return tabpy.query('pcc',_arg1, _arg2)['response']",
SUM([Sales]),SUM([Profit]))
डेटा विज़ुअलाइज़ेशन
अब हम एक विज़ुअलाइज़ेशन बनाएँगे जो प्रोडक्ट कैटेगरी और कस्टमर सेगमेंटेशन के आधार पर सहसंबंध दिखाएगा।
- Customer Name को Marks पैनल में Detail पर और Ship Mode को Color पर ड्रैग-एंड-ड्रॉप करें।
- Customer Segment और pcc (correlation calculated field) को Columns शेल्फ पर ड्रैग-एंड-ड्रॉप करें।
- Product Category को Rows शेल्फ पर ड्रैग-एंड-ड्रॉप करें।

सहसंबंध गुणांक दर्शाता बार चार्ट
अधिकांश मामलों में, Corporate सेक्टर में बिक्री और मुनाफ़े के बीच उच्च सहसंबंध होता है। कुल मिलाकर, आप सहसंबंध गुणांकों का उपयोग करके डेटा-आधारित निर्णय ले सकते हैं जो कंपनी के मुनाफ़े को बढ़ाने में मदद करेंगे।
अन्य सहसंबंध गुणांकों, Python में सहसंबंध की गणना, और सहसंबंध तथा कार्य-कारण संबंध के बीच संबंध के बारे में जानने के लिए हमारा Python details on correlation ट्यूटोरियल पढ़ें।
Prophet मॉडल को Tableau पर डिप्लॉय करना
इस सेक्शन में, हम Facebook Prophet फ़ोरकास्ट मॉडल को डिप्लॉय करना और दिनांक (date) डेटा फ़ील्ड्स में बदलाव करना सीखेंगे। हम 2015 से 2020 तक के Apple Stock Prices पर टाइम सीरीज़ मॉडल ट्रेन करेंगे।

Kaggle डेटासेट Apple Stock Prices (2015-2020)
Tableau पर स्क्रिप्ट लिखने और फ़ोरकास्ट विज़ुअलाइज़ेशन बनाने से पहले, हमें Jupyter Notebook में Python कोड टेस्ट करना और फ़ोरकास्टिंग मॉडल का मूल्यांकन करना होगा।
Facebook Prophet
Facebook Prophet एक ओपन-सोर्स लाइब्रेरी है जो एकवेरिएट टाइम सीरीज़ डेटा के स्वचालित फ़ोरकास्टिंग के लिए बनाई गई है। यह सालाना, साप्ताहिक और दैनिक मौसमी प्रभावों के साथ सबसे अच्छा काम करती है।
Prophet क्यों?
यह मिसिंग डेटा, ट्रेंड शिफ्टिंग, और आउटलायर से अच्छी तरह निपटती है।
Prophet इंस्टॉल करना
आप नीचे दिए गए कमांड का उपयोग करके टर्मिनल में Prophet Python पैकेज इंस्टॉल कर सकते हैं।
pip install pystan==2.19.1.1
pip install prophet
या यदि आप Anaconda Python एनवायरनमेंट का उपयोग कर रहे हैं, तो नीचे दिए गए कमांड का उपयोग करें।
conda install -c conda-forge prophet
प्रोजेक्ट Initialization
- pandas को डेटा इन्गेशन और मैनिपुलेशन के लिए, और फ़ोरकास्टिंग मॉडल को ट्रेन और इवैल्युएट करने के लिए Prophet को इम्पोर्ट करके शुरू करेंगे।
- pandas के read_csv फ़ंक्शन का उपयोग करके Apple स्टॉक डेटासेट (AAPL.csv) फ़ाइल पढ़ें।
- date और high कॉलम्स के साथ X परिभाषित करें।
- डेटाफ़्रेम का आकार दिखाएँ और 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();
आउटपुट
(1258, 2)
Apple का स्टॉक समय के साथ बढ़ रहा है। इसमें दो गिरावट आईं, लेकिन यह स्थिर वृद्धि पर वापस आ गया है।

गहन जानकारी के लिए Hugo Bowne-Anderson का Python time series analysis ट्यूटोरियल देखें। आप DataCamp का कोर्स भी कर सकते हैं ताकि Python में टाइम सीरीज़ विश्लेषण पर हाथ-से-सीख सकें।
मशीन लर्निंग मॉडल बनाना
इस भाग में, हम Prophet मॉडल के लिए डेटा तैयार करेंगे और इसे डिफ़ॉल्ट हाइपरपैरामीटर्स पर ट्रेन करेंगे।
- कॉलम्स का नाम बदलकर ds और y करें
- ds कॉलम्स को datetime (date) में बदलें
- Prophet() का उपयोग करके एक model परिभाषित करें
- 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)
मॉडल मूल्यांकन
मूल्यांकन के लिए, हमें डेटासेट में भविष्य की तिथियाँ जोड़नी होंगी। हम यह make_future_dataframe का उपयोग करके कर सकते हैं।
हम सेट करेंगे:
- prediods 365 दिनों के लिए
- freq “D” के लिए। आप इसे “Y” भी कर सकते हैं, लेकिन तब आपको periods को 1 करना होगा।
- include_history को false करें ताकि पिछला डेटा शामिल न हो।
future = model.make_future_dataframe(periods=365,
freq='D',
include_history=False
)
future.tail()
आउटपुट
जैसा कि हम देख सकते हैं, future डेटासेट वर्ष 2021 पर समाप्त होता है।
ds
360 2021-05-18
361 2021-05-19
362 2021-05-20
363 2021-05-21
364 2021-05-22
अगला कदम इस डेटा का उपयोग करके Apple स्टॉक के high मानों की भविष्यवाणी करना है। उसके बाद हम 'ds', 'yhat', 'yhat_lower', और 'yhat_upper' प्रदर्शित करेंगे।
yhat_lower और yhat_upper स्वीकार्य विचलन की सीमा दर्शाते हैं। सरल शब्दों में, स्टॉक की कीमत 485.3 तक बढ़ सकती है और 365.4 तक गिर सकती है। यह जानकारी डे-ट्रेडर्स को जोखिम आकलन में मदद कर सकती है।
forecast = model.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail
आउटपुट
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
आइए plot() फ़ंक्शन का उपयोग करके फ़ोरकास्ट डेटा को विज़ुअलाइज़ करें। इसके लिए प्रेडिक्टिव मान चाहिए होते हैं, ताकि डॉट और लाइन चार्ट के साथ स्वीकृत सीमा को नीले रंग में दिखाया जा सके।
model.plot(forecast)
नीचे दिया गया विज़ुअलाइज़ेशन दिखाता है कि Apple के स्टॉक्स बिना गिरावट के मूल्य में वृद्धि करेंगे।

आप saturating forecasts, trend changepoints, seasonality, holiday effects और regressors, multiplicative seasonality, uncertainty intervals तथा outliers से जुड़े हाइपरपैरामीटर्स को समायोजित करके फ़ोरकास्ट में सुधार कर सकते हैं। आप हाइपरपैरामीटर ट्यूनिंग के जरिए इन्हें स्वतः भी समायोजित कर सकते हैं। Facebook Prophet के बारे में अधिक जानने के लिए दस्तावेज़ पढ़ें।
टाइम सीरीज़ फ़ोरकास्टिंग एक व्यापक विषय है, और आप Moez Ali के हमारे time series forecasting ट्यूटोरियल का अनुसरण करके इसके बारे में सब कुछ सीख सकते हैं। यह ट्यूटोरियल टाइम सीरीज़ विश्लेषण, सांख्यिकीय मॉडल, Python फ़्रेमवर्क, और AutoML को कवर करता है।
आप हमारा visualizing time series data in Python कोर्स भी कर सकते हैं, और लाइन चार्ट, सीज़नैलिटी का पता लगाना, ट्रेंड और शोर, तथा एकाधिक टाइम सीरीज़ प्रदर्शित करना सीख सकते हैं।
मॉडल इन्फ़रेंस डिप्लॉय करना
इस सेक्शन में, हम मॉडल इन्फ़रेंस डिप्लॉय करेंगे। इससे हमें TabPy सर्वर में मॉडल और फ़ंक्शन की परिभाषा संग्रहीत करने में मदद मिलेगी ताकि प्रतिक्रिया समय तेज़ हो सके।
हम पहले URL और PORT का उपयोग करके Client से कनेक्ट करेंगे। फिर prophet_forecasting फ़ंक्शन परिभाषित करेंगे।
- यह पूर्वानुमान के लिए वर्षों की संख्या इनपुट के रूप में लेगा और उसका उपयोग करके एक future डेट फ़्रेम बनाएगा।
- model.predict और future डेटाफ़्रेम का उपयोग करके प्रेडिक्शन करेगा।
- “yhat” का नाम बदलकर “y” कर देंगे ताकि हम फ़ोरकास्ट को ऐतिहासिक डेटा के साथ जोड़ सकें।
- अंतिम भाग थोड़ा मुश्किल है। Tableau में हम data फ़ील्ड में मान जोड़ नहीं सकते। इसके बजाय, हम Date मानों को 365*n से शिफ्ट करेंगे, जहाँ n वर्षों की संख्या है।
अंत में, हम client.deploy() का उपयोग करके इसे पैकेज करेंगे और TabPy सर्वर पर डिप्लॉय करेंगे। हम फ़ंक्शन का नाम “prophet” सेट करेंगे। override आर्ग्युमेंट हमें मॉडल और फ़ंक्शन के वर्ज़न बनाने में मदद करेगा। यह शुरुआती चरण में आवश्यक होता है जब हम कोड को डिबग कर रहे होते हैं।
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 सेट करना
Tableau के भीतर वर्षों की संख्या को नियंत्रित करने के लिए, हमें एक Years पैरामीटर बनाना होगा। इसका उपयोग prophet फ़ंक्शन में किया जाएगा।
Data सेक्शन में राइट-क्लिक करके और Create Parameter विकल्प चुनकर हम Years पैरामीटर बना सकते हैं। Data type को Integer करें, Current value को 1 पर सेट करें, और Range पर क्लिक करके Minimum 1 और Maximum 5 मान जोड़ें।

Years पैरामीटर बनाना
इसके बाद, हम एक Forecast_date calculated field बनाएँगे। हम Date डेटा फ़ील्ड का उपयोग करेंगे और मानों को Years की संख्या के अनुसार शिफ्ट करेंगे।

Forecast_date गणना किया गया फ़ील्ड
DATEADD फ़ंक्शन Years को Date डेटा फ़ील्ड में जोड़ेगा और फिर उसे दिन के स्तर तक ट्रंकेट करेगा।
DATETRUNC('day',DATEADD('year',[Years],[Date])))
अगले भाग में, हम एक forecast गणना किया गया फ़ील्ड बनाएंगे और tabpy.query() का उपयोग करके डिप्लॉय किए गए मॉडल तक पहुँचेंगे। क्वेरी फ़ंक्शन दो भागों से बना है: पहला भाग Python फ़ंक्शन का नाम है और दूसरा भाग आर्ग्युमेंट्स के लिए प्लेसहोल्डर्स की सूची है।

forecast गणना किया गया फ़ील्ड
हमारे मामले में, यह सिर्फ एक आर्ग्युमेंट है, इसलिए हम _arg1 जोड़ेंगे। हम क्वेरी को SCRIPT_REAL नामक Tableau फ़ंक्शन में रैप करेंगे और इनपुट के रूप में Years पैरामीटर देंगे। OK बटन दबाने से पहले, सुनिश्चित करें कि परिणाम Forecast_date के साथ कैलकुलेट किए गए हैं। आप इसे नीले टेक्स्ट (Default Table Calculation) पर क्लिक करके बदल सकते हैं।
SCRIPT_REAL("return tabpy.query('prophet',_arg1[0])['response']",
[Years]
)
इसके बाद हम High डेटा फ़ील्ड और Years पैरामीटर्स का उपयोग करके एक Actual गणना किया गया फ़ील्ड बनाएंगे।

Actual गणना किया गया फ़ील्ड
LOOKUP हमें High मानों को Years*365 से ऑफ़सेट करने में मदद करेगा। उदाहरण के लिए, यदि Years पैरामीटर 2 है, तो यह मानों को 730 से ऑफ़सेट करेगा।
LOOKUP(SUM([High]),[Years]*365)
Actual बनाम Forecast
हम आखिर तक पहुँच गए हैं। Actual बनाम Forecast की लाइन चार्ट प्लॉट करने के लिए, हम ये सरल चरणों का पालन करेंगे:
- बाएँ नीचे स्थित Parameters सेक्शन में जाएँ, Years पैरामीटर पर राइट-क्लिक करें, और Show Parameters चुनें।
- Forecast_date को खींचकर Columns शेल्फ में छोड़ें। इसे Day में बदलें।
- Dimensions से Measure Names को खींचकर Filters में छोड़ें। केवल Actual और forecast चुनें।
- Dimensions से Measure Names को खींचकर Color में छोड़ें।
- अंत में, Measures से Measure Names को खींचकर Rows शेल्फ में छोड़ें।
सभी चरणों का पालन करने के बाद, आप Actual और forecast को अलग-अलग रंगों में देखेंगे।

Actual बनाम Forecast लाइन प्लॉट
ऊपर दिया गया लाइन चार्ट परफेक्ट नहीं है और इसे हाइपरपैरामीटर ट्यूनिंग, क्रॉस-वैलिडेशन, मिसिंग वैल्यूज़ और डेट्स के इम्प्यूटेशन, और डेट फ़ंक्शन में सुधार की आवश्यकता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने TabPy सर्वर पर एक मशीन लर्निंग मॉडल बनाना और डिप्लॉय करना सीखा और Tableau स्क्रिप्ट का उपयोग करके उसे एक्सेस किया। हमने tabpy_tools की बुनियादी बातें भी सीखी और यह भी कि कैसे हम इसका उपयोग फ़ंक्शंस या मॉडल्स को डिप्लॉय करने में कर सकते हैं।
DataCamp कोर्स करके financial forecasting के बारे में और जानें। आप income statements, balance sheet और forecast ratios, कच्चे डेटा का फॉर्मैटिंग, तिथियों और वित्तीय अवधियों का प्रबंधन, और पूर्वानुमानों में assumptions तथा variances को समझना सीखेंगे।
टाइम सीरीज़ फ़ोरकास्टिंग आधार रेखा है; हम अपनी भविष्यवाणियों को अन्य मशीन लर्निंग एल्गोरिद्म पर डेटा ट्रेन करके बेहतर बनाते हैं, जैसे:
- Autoregressive Integrated Moving Average (ARIMA)
- Seasonal Autoregressive Integrated Moving Average (SARIMA)
- Exponential Smoothing (ES)
- XGBoost
- LSTM (Deep Learning)
- Temporal Fusion Transformer (Google)
यदि आप Tableau में नए हैं और डेटा विज़ुअलाइज़ेशन तथा सांख्यिकीय गणना के बारे में सब कुछ सीखना चाहते हैं, तो Tableau fundamentals स्किल ट्रैक करें।
यह इस श्रृंखला का अंतिम भाग है। पहले भाग में, हमने TabPy के बारे में सब कुछ सीखा और Tableau के भीतर Python स्क्रिप्ट चलाकर Amsterdam के Airbnb लिस्टिंग्स के विभिन्न क्लस्टर्स बनाए।