5 Best Ways to Plot a Pie Chart for Pandas DataFrame with Matplotlib

πŸ’‘ Problem Formulation: Data visualization is an essential aspect of data analysis. Suppose we have a pandas DataFrame and we want to visualize the distribution of categorical data as a pie chart using matplotlib. For example, if we have sales data categorized by region, we might want to plot a pie chart to understand the sales distribution better. This article solves this problem by illustrating how to plot a pie chart with DataFrame.

Method 1: Basic Pie Chart

Pie charts are a graphical representation of data that displays data in a circular graph. The pieces of the graph are proportional to the fraction of the whole in each category. In Matplotlib, we can create a basic pie chart using the plt.pie() function and passing the relevant column data as values, and using the index as labels if the DataFrame has an appropriate index set.

Here’s an example:

import pandas as pd
import matplotlib.pyplot as plt

# Sample data
data = {'Fruits': ['Apple', 'Banana', 'Cherry'], 'Quantity': [50, 30, 20]}
df = pd.DataFrame(data).set_index('Fruits')

# Plotting the pie chart
plt.pie(df['Quantity'], labels=df.index)
plt.title('Fruit Sales Distribution')
plt.show()

The output of this code snippet is a pie chart visualization of the quantity of fruits sold.

This code snippet creates a simple pie chart from a pandas DataFrame called df. It sets the fruits as index labels and uses the ‘Quantity’ column as the values for the pie chart. The plt.title() function adds a title to the chart and plt.show() displays it.

Method 2: Adding Custom Colors

To make a pie chart more visually appealing, you can specify a list of custom colors using the colors parameter. The colors should be in a format that Matplotlib can recognize, for example, as named colors or hex color codes.

Here’s an example:

# Assuming data and df from Method 1

# Custom colors for the pie chart
colors = ['#FF9999', '#FFE033', '#66B2FF']

# Plotting the pie chart with custom colors
plt.pie(df['Quantity'], labels=df.index, colors=colors)
plt.title('Fruit Sales Distribution - Custom Colors')
plt.show()

The output will be the same pie chart with the specified colors applied to each piece of the pie.

This snippet builds upon the previous chart and adds the colors array to customize the color of each fruit category in the pie chart. This enhances the visual appeal of the chart.

Method 3: Exploding Slices

Sometimes a particular category needs to be highlighted in a pie chart. This can be achieved through ‘exploding’ one or more slices of the pie, which offsets them from the center. Matplotlib’s explode parameter takes a list of values that indicate the fraction of the radius with which to offset each slice.

Here’s an example:

# Assuming data and df from Method 1

# Exploding the 'Banana' slice
explode = (0, 0.1, 0) # Only 'Banana' slice is exploded out

plt.pie(df['Quantity'], labels=df.index, explode=explode)
plt.title('Fruit Sales Distribution - Exploded View')
plt.show()

The output will show the pie chart with the ‘Banana’ slice offset from the center.

In this example, the explode variable is defined with values corresponding to each ‘Fruit’ in the DataFrame, to offset only the ‘Banana’ slice. This visually emphasizes the ‘Banana’ data point.

Method 4: Adding Percentage Labels

For a more informative pie chart, we can display the percentage of each slice. Matplotlib enables this by using the autopct parameter, which automatically calculates and formats the percentage labels onto the pie chart.

Here’s an example:

# Assuming data and df from Method 1

plt.pie(df['Quantity'], labels=df.index, autopct='%1.1f%%')
plt.title('Fruit Sales Distribution - Percentage Labels')
plt.show()

The output is a pie chart with each slice’s percentage displayed within it.

This code adds the autopct parameter to automatically calculate the percentage of each category and add it to the chart. The format string '%1.1f%%' is used to round the percentage to one decimal place.

Bonus One-Liner Method 5: Comprehensive Pie Chart

Create a comprehensive pie chart with a single line of code, by chaining methods together. This method uses all tricks mentioned before, creating a beautifully styled pie chart with explorative slices and percentage labels, all in one fell swoop.

Here’s an example:

# Assuming data, df, colors, and explode from previous methods

df['Quantity'].plot.pie(labels=df.index, autopct='%1.1f%%', explode=explode, colors=colors, shadow=True, startangle=90)
plt.title('Comprehensive Fruit Sales Distribution Pie Chart')
plt.ylabel('')  # To remove the 'Quantity' label
plt.show()

The output creates a detailed pie chart with all the previously mentioned stylistic customizations applied.

By leveraging pandas’ built-in plotting functionality which uses Matplotlib under the hood, you can create a pie chart directly from the DataFrame with all customizations applied. This efficient line of code showcases the power of pandas for data visualization.

Summary/Discussion

  • Method 1: Basic Pie Chart. Easy to implement for quick visualizations. Does not offer much visual customization.
  • Method 2: Adding Custom Colors. Makes the chart more visually appealing. Requires a manual selection of colors, which may not be suitable for dynamic datasets.
  • Method 3: Exploding Slices. Draws attention to particular categories. Could mislead if overused and not well justified.
  • Method 4: Adding Percentage Labels. Offers detailed insight into the dataset. Percentage labels might become cluttered with many small slices.
  • Bonus Method 5: Comprehensive Pie Chart. Quick and feature-rich chart creation. Might require further customization that involves breaking down the one-liner into more controlled steps.