How to Calculate Standard Deviation by Group in Pandas


You can use the following methods to calculate the standard deviation by group in pandas:

Method 1: Calculate Standard Deviation of One Column Grouped by One Column

df.groupby(['group_col'])['value_col'].std()

Method 2: Calculate Standard Deviation of Multiple Columns Grouped by One Column

df.groupby(['group_col'])['value_col1', 'value_col2'].std()

Method 3: Calculate Standard Deviation of One Column Grouped by Multiple Columns

df.groupby(['group_col1', 'group_col2'])['value_col'].std()

The following examples show how to use each method in practice with the following pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'F', 'F', 'G', 'F', 'F', 'G', 'G'],
                   'points': [30, 22, 19, 14, 14, 11, 20, 28],
                   'assists': [4, 3, 7, 7, 12, 15, 8, 4]})

#view DataFrame
print(df)

  team position  points  assists
0    A        G      30        4
1    A        F      22        3
2    A        F      19        7
3    A        G      14        7
4    B        F      14       12
5    B        F      11       15
6    B        G      20        8
7    B        G      28        4

Example 1: Calculate Standard Deviation of One Column Grouped by One Column

The following code shows how to calculate the standard deviation of the points column, grouped by the team column:

#calculate standard deviation of points grouped by team
df.groupby('team')['points'].std()

team
A    6.70199
B    7.50000
Name: points, dtype: float64

From the output we can see:

  • The standard deviation of points for team A is 6.70199.
  • The standard deviation of points for team B is 7.5.

Example 2: Calculate Standard Deviation of Multiple Columns Grouped by One Column

The following code shows how to calculate the standard deviation of the points column and the standard deviation of the assists column, grouped by the team column:

#calculate standard deviation of points and assists grouped by team
df.groupby('team')[['points', 'assists']].std()

	points	assists
team		
A	6.70199	2.061553
B	7.50000	4.787136

The output displays the standard deviation of the points column and the assists column for each team.

Example 3: Calculate Standard Deviation of One Column Grouped by Multiple Columns

The following code shows how to calculate the standard deviation of the points column, grouped by the team and position columns:

#calculate standard deviation of points, grouped by team and position
df.groupby(['team', 'position'])['points'].std()

team  position
A     F            2.121320
      G           11.313708
B     F            2.121320
      G            5.656854
Name: points, dtype: float64

From the output we can see:

  • The standard deviation of points for players on team A and position F is 2.12.
  • The standard deviation of points for players on team A and position G is 11.31.
  • The standard deviation of points for players on team B and position F is 2.12.
  • The standard deviation of points for players on team B and position G is 5.65.

Additional Resources

The following tutorials explain how to perform other common tasks in pandas:

How to Calculate Mean by Group in Pandas
How to Calculate Max Value by Group in Pandas
How to Calculate Sum by Group in Pandas
How to Calculate Quantiles by Group in Pandas

Featured Posts

Leave a Reply

Your email address will not be published. Required fields are marked *