
In 2013, Tableau introduced R Integration, the ability to call R scripts in calculated fields. This opened up possibilities such as K-means clustering, Random Forest models, and sentiment analysis. With the release of Tableau 10.2, we can enjoy a new, fancy addition to this feature: the Python Integration through TabPy, the Tableau Python Server.
Python is a widely used general-purpose programming language, popular among academia and industry alike. It provides a wide variety of statistical and machine learning techniques and is highly extensible. Together, Python and Tableau are the data science dream team to cover any organization’s data analysis needs.
In this tutorial, I’m going to walk you through the installation and connecting Tableau with TabPy. I will also give you an example of calling a Python function from Tableau to calculate correlation coefficients for a trellis chart.
1. Install and start Python and TabPy
Start by clicking on the Clone or download button in the upper right corner of the TabPy repository page, downloading the zip file, and extracting it.

Protip: If you are familiar with Git, you can download TabPy directly from the repository:
> git clone git://github.com/tableau/TabPy

Within the TabPy directory, execute setup.sh
(or setup.bat
if you are on Windows). This script downloads and installs Python, TabPy, and all necessary dependencies. After completion, TabPy is starting up and listens on port 9004.
2. Connecting Tableau to TabPy
In Tableau 10.2 (and later versions), a connection to TabPy can be added in Help > Settings and Performance > Manage External Service Connection:

Set port to 9004:

3. Adding Python code to a Calculated Field
You can invoke Calculated Field functions called SCRIPT_STR, SCRIPT_REAL, SCRIPT_BOOL, and SCRIPT_INT to embed your Python script in Tableau:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SCRIPT_REAL(' | |
import numpy as np | |
return np.corrcoef(_arg1,_arg2)[0,1] | |
', | |
SUM([Sales]), SUM([Profit])) |

4. Use Calculated Field in Tableau
Now you can use your Python calculation as Calculated Field in your Tableau worksheet:

Feel free to download the Tableau Packaged Workbook (twbx) here.
Update 3 Jan 2017: Translated to Japanese by Tomohiro Iwahashi: Tableau + Python 連携 (Tabpy) を使ってみよう!
Update 30 Mar 2017: A German translation of this post is published on the official Tableau blog: TabPy Tutorial: Integration von Python mit Tableau für Advanced Analytics
TabPy Tutorial: Integrating #Python with #Tableau for Advanced Analytics #data16 https://t.co/HAIJDNJK6Z pic.twitter.com/NR7R9MmV4h
— Alexander Loth (@xlth) November 7, 2016