## Adding a Percentage Column to a Pandas Pivot Table

Pandas is a powerful data analysis library that provides users with many tools to manipulate and analyze data in Python. One of these tools is the pivot table function, which allows you to summarize and aggregate your data in various ways.

One common task when working with pivot tables is to add a column that represents the percentage of a total for each row or column. In this article, we will explore how to add a percentage column to a pandas pivot table.

## Syntax for Adding a Percentage Column to a Pivot Table

First, let’s look at the syntax for adding a percentage column to a pivot table in pandas. Assume we have a data frame named “data” that contains the following columns: “category,” “value,” and “date.”

To create a pivot table that summarizes the total value by category and date, we would use the following syntax:

“`python

## import pandas as pd

data = pd.read_csv(“data.csv”)

pivot_table = pd.pivot_table(data, values=”value”, index=[“category”, “date”], aggfunc=sum)

“`

To add a percentage column to this pivot table, we can use the following syntax:

“`python

pivot_table[“percentage”] = pivot_table[“value”] / pivot_table[“value”].sum() * 100

pivot_table[“percentage”] = pivot_table[“percentage”].round(2)

“`

Here, we first calculate the percentage of each value by dividing it by the sum of all the values. We then multiply by 100 to convert the result to a percentage and use the round() function to round the result to two decimal places.

Finally, we assign this new column to the pivot table by setting the value of a new “percentage” column to the calculated percentage column.

## Creating a Pivot Table with Percentages

Let’s now look at an example of how to create a pivot table with percentages in pandas. Consider the following data set, which shows the sales of different products in different regions:

| Product | Region | Sales |

| ——- | —— | —– |

| A | North | 100 |

| B | North | 200 |

| C | North | 300 |

| A | South | 400 |

| B | South | 500 |

| C | South | 600 |

## We can use a pivot table to summarize the total sales by product and region:

“`python

## import pandas as pd

data = {

“Product”: [“A”, “B”, “C”, “A”, “B”, “C”],

“Region”: [“North”, “North”, “North”, “South”, “South”, “South”],

“Sales”: [100, 200, 300, 400, 500, 600]

}

df = pd.DataFrame(data)

pivot_table = pd.pivot_table(df, values=”Sales”, index=”Product”, columns=”Region”, aggfunc=sum)

“`

## This creates a pivot table that looks like this:

| Product | North | South |

| ——- | —– | —– |

| A | 100 | 400 |

| B | 200 | 500 |

| C | 300 | 600 |

To add a percentage column to this pivot table, we can use the syntax we discussed earlier:

“`python

pivot_table[“Total”] = pivot_table.sum(axis=1)

pivot_table[“North %”] = pivot_table[“North”] / pivot_table[“Total”] * 100

pivot_table[“South %”] = pivot_table[“South”] / pivot_table[“Total”] * 100

pivot_table = pivot_table.round(2)

“`

In this syntax, we first calculate the total sales for each product by summing the values in the “North” and “South” columns. We then calculate the percentage of sales in each region by dividing the sales in that region by the total sales.

We round the result to two decimal places using the round() function. This will add two new columns to the pivot table containing the percentages of sales in each region:

| Product | North | South | Total | North % | South % |

| ——- | —– | —– | —– | ——- | ——- |

| A | 100 | 400 | 500 | 20.00 | 80.00 |

| B | 200 | 500 | 700 | 28.57 | 71.43 |

| C | 300 | 600 | 900 | 33.33 | 66.67 |

## Adding a Percentage Column to the Pivot Table

We can add a percentage column to a pivot table in pandas by dividing a column by the sum of the same column and multiplying by 100. We can then round the result to the desired number of decimal places.

Let’s demonstrate this by modifying the pivot table example above to add a percentage column:

“`python

## import pandas as pd

data = {

“Product”: [“A”, “B”, “C”, “A”, “B”, “C”],

“Region”: [“North”, “North”, “North”, “South”, “South”, “South”],

“Sales”: [100, 200, 300, 400, 500, 600]

}

df = pd.DataFrame(data)

pivot_table = pd.pivot_table(df, values=”Sales”, index=”Product”, columns=”Region”, aggfunc=sum)

pivot_table[“Total”] = pivot_table.sum(axis=1)

pivot_table[“North %”] = pivot_table[“North”] / pivot_table[“Total”] * 100

pivot_table[“South %”] = pivot_table[“South”] / pivot_table[“Total”] * 100

pivot_table = pivot_table.round(2)

## print(pivot_table)

“`

## This will output the pivot table with the percentage columns added:

| Product | North | South | Total | North % | South % |

| ——- | —– | —– | —– | ——- | ——- |

| A | 100 | 400 | 500 | 20.00 | 80.00 |

| B | 200 | 500 | 700 | 28.57 | 71.43 |

| C | 300 | 600 | 900 | 33.33 | 66.67 |

## Conclusion

In conclusion, adding a percentage column to a pandas pivot table is a straightforward task that can be accomplished using basic arithmetic and the round() function. By doing so, you can get a more informative summary of your data that shows the relative proportions of values in different categories.

We hope this article has been helpful in demonstrating how to add a percentage column to a pivot table in pandas. Remember to use the syntax we outlined and adjust the code to fit your data sets and analysis needs.

For more tutorials on performing common operations in pandas, check out some of the links and resources listed below. The article discusses adding a percentage column to a pandas pivot table.

Adding a percentage column is a common task when working with pivot tables, and it can be accomplished using basic arithmetic and the round() function. We looked at the syntax for adding a percentage column to a pivot table and explored an example of creating a pivot table with percentages.

The ability to add a percentage column to a pivot table is crucial for data analysts and provides a more informative summary of data. By following the syntax we outlined, you can adjust the code to fit your data sets and analysis needs.

With these tips, you can successfully add a percentage column to pandas pivot tables and achieve more insightful data analysis.