How to Use Python Visual in Power BI

Cody Schneider8 min read

Thinking about using a Python visual in Power BI? You've come to the right place. While Power BI's built-in charts cover most use cases, Python opens up a universe of custom visuals and advanced analytics that standard tools just can't match. This guide will walk you through exactly how to set up your environment and create your first Python visual, step-by-step.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Why Use Python in Power BI Anyway?

Before jumping into the "how," let's quickly cover the "why." You might be wondering if it's worth the effort. For many data professionals, the answer is a resounding yes. Here are a few key reasons:

  • Endless Customization: Python's visualization libraries, like Matplotlib and Seaborn, give you full control over every pixel of your chart. You can create specialized visuals like violin plots, advanced heatmaps, ridgeline plots, or intricate statistical charts that are not available in the standard Power BI library.
  • Advanced Analytics On-the-Fly: The true power of this integration is running Python's analytical libraries directly within your report. You can perform complex statistical analysis, run clustering algorithms, or even apply machine learning models to your data and visualize the results without ever leaving Power BI.
  • Leverage Existing Skills: If you or your team already have Python expertise, integrating it with Power BI means you can bring those powerful skills directly into your business reporting. You don't have to abandon your favorite tools, you can make them work together.

Setting Up Your Environment: Getting Ready to Code

The most important part of this process happens before you even open Power BI. You need a working Python environment installed on your machine with the necessary data libraries. If you don't get this part right, nothing else will work.

Step 1: Install Python

First things first, you need Python. If you don't already have it, head over to the official Python.org download page. We recommend downloading the latest stable version of Python 3. During the installation process, make sure you check the box that says "Add Python to PATH." This is a simple but critical step that allows Power BI to find your Python installation automatically.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Step 2: Install the Necessary Libraries

Once Python is installed, you need to install the scientific libraries that Power BI will use. For data visuals, you'll primarily need Pandas, Matplotlib, and Seaborn.

  • Pandas: The core library for data handling and manipulation in Python. Power BI uses a Pandas DataFrame to pass your data into the Python script.
  • Matplotlib: The foundational plotting library for Python. It provides the building blocks for creating static, animated, and interactive visualizations.
  • Seaborn: Built on top of Matplotlib, Seaborn provides a high-level interface for drawing attractive and informative statistical graphics. It makes complex charts much easier and prettier to create.

To install them, open your command prompt (or Terminal on Mac) and run the following command:

pip install pandas matplotlib seaborn

This command tells 'pip', Python's package manager, to download and install those three libraries for you.

Step 3: Connect Power BI to Python

With Python and the libraries installed, it's time to tell Power BI where to find them. Luckily, Power BI is usually smart enough to detect them on its own if you added Python to your PATH.

To check, open Power BI Desktop and follow these steps:

  1. Go to File > Options and settings > Options.
  2. In the Options window, scroll down to the "Python scripting" section under Global.
  3. You should see that Power BI has detected your Python home directory. If it's blank or incorrect, you can manually set the path to your Python installation folder.

Once this is configured, Power BI is ready to run Python scripts.

Creating Your First Python Visual: A Step-by-Step Guide

Now for the fun part. Let's create a visual. For this example, imagine we have a simple sales dataset with columns for Product Category, Sales USD, and Units Sold.

Step 1: Add the Python Visual to Your Report

In the Visualizations pane on the right-hand side of Power BI, click the icon with the Python logo (it looks like 'Py'). This will add a blank Python visual placeholder to your report canvas and open a Python script editor at the bottom of the screen.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Step 2: Add Your Data Fields

Before you can write any code, you need to tell Power BI which data to pass to your Python script. From the Fields pane, drag Product Category, Sales USD, and Units Sold into the Values box under the Visualizations section.

As you add fields, Power BI automatically creates a Pandas DataFrame available inside your script editor. This DataFrame is always named dataset. The script editor even gives you a helpful comment reminding you of this:

# The following code to create a DataFrame and remove duplicated rows is always executed and acts as a preamble for your script: 
# dataset = pandas.DataFrame(Product Category, Sales USD, Units Sold)
# dataset = dataset.drop_duplicates()

Step 3: Write Your Code for a Simple Scatter Plot

Now, let's write the code to generate a simple scatter plot comparing sales to units sold. In the Python script editor, type the following code:

import matplotlib.pyplot as plt

# Create the scatter plot
dataset.plot(kind='scatter', x='Sales USD', y='Units Sold', color='red')

# Display the plot
plt.show()

Let's break this down:

  • The first line imports the matplotlib.pyplot library, which is the standard workhorse for plotting, and gives it the shortcut plt.
  • The second line calls the .plot() method directly on our dataset DataFrame. We specify the kind of plot ('scatter'), which column to use for the x-axis, and which to use for the y-axis.
  • The final line, plt.show(), is essential. This command tells Matplotlib to render the plot you've just defined. Without it, your script will run, but no visual will appear in Power BI.

Click the "Run" icon in the script editor's title bar, and you should see a scatter plot appear on your report canvas!

Leveling Up: Making a Better Chart with Seaborn

The Matplotlib chart is functional, but we can do a lot better with a little help from Seaborn. Let's create a box plot to see the distribution of sales across different product categories. This is a type of chart that's difficult to create with Power BI's standard options.

Update your script with the following code:

import seaborn as sns
import matplotlib.pyplot as plt

# Set a visually appealing style
sns.set_theme(style="whitegrid")

# Create the box plot using Seaborn
sns.boxplot(x='Product Category', y='Sales USD', data=dataset)

# Display the plot
plt.show()

Here’s what's different:

  • We now import seaborn as sns.
  • sns.set_theme() applies one of Seaborn's pre-built clean styles to our chart.
  • sns.boxplot() is Seaborn's dedicated function for creating box plots. It's more intuitive, you just tell it which columns to use for x and y and which data DataFrame to use.
  • plt.show() is still needed at the end to render the visual.

Run the script again. Instantly, you have a much more professional-looking and informative visual that clearly shows the sales distribution, including medians, quartiles, and outliers for each category.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Important Tips and Common Gotchas

Working with Python in Power BI can be incredibly rewarding, but there are a few things to keep in mind to avoid frustration.

  • Handling Aggregations: By default, Power BI aggregates the data before sending it to the Python script. For example, it will pass the "Sum of Sales USD." If you need to work with the raw, row-level data for your analysis, make sure to select "Don't summarize" for each field in the Values section.
  • Static Visuals: A key limitation to remember is that Python visuals are static images. They don't support interactive cross-filtering like native Power BI visuals. Clicking on a bar in your Python chart will not filter other visuals on the page.
  • Performance: Because the visual reruns the Python script every time your data refreshes or filters change, it can be slower than native visuals, especially with large datasets or complex scripts. Use them where their unique analytic capabilities provide the most value.
  • Publishing to Power BI Service: Publishing a report with a Python visual works, but for the visuals to display and refresh correctly online, your Power BI Gateway (if you're using one) must be configured for Python. This can involve extra setup on the server side.

Final Thoughts

Incorporating Python visuals into Power BI blends the best of both worlds: Power BI’s robust data modeling and an interactive reporting environment with Python's limitless analytical and visualization capabilities. You now have the full process down, from setting up your environment to creating both basic and advanced charts that will make your reports stand out.

While tools like Power BI are incredibly powerful, they come with a significant learning curve - whether you're writing Python scripts or just navigating the interface. We wanted to create something different, eliminating the friction between data and decisions. With Graphed, you simply connect your data and start asking questions in plain English. You can ask for things like, "create a dashboard showing sales trends by product category for the last quarter," and we instantly build the live, interactive visuals for you, without a single line of code required.

Related Articles

How to Enable Data Analysis in Excel

Enable Excel's hidden data analysis tools with our step-by-step guide. Uncover trends, make forecasts, and turn raw numbers into actionable insights today!