Pandas: How to Calculate Mode in a GroupBy Object


You can use the following syntax to calculate the mode in a GroupBy object in pandas:

df.groupby(['group_var'])['value_var'].agg(pd.Series.mode)

The following example shows how to use this syntax in practice.

Example: Calculate Mode in a GroupBy Object

Suppose we have the following pandas DataFrame that shows the points scored by basketball players on various teams:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
                   'points': [10, 10, 12, 15, 19, 23, 20, 20, 26]})

#view DataFrame
print(df)

  team  points
0    A      10
1    A      10
2    A      12
3    A      15
4    B      19
5    B      23
6    C      20
7    C      20
8    C      26

We can use the following syntax to calculate the mode points value for each team:

#calculate mode points value for each team
df.groupby(['team'])['points'].agg(pd.Series.mode)

team
A          10
B    [19, 23]
C          20
Name: points, dtype: object

Here’s how to interpret the output:

  • The mode points value for team A is 10.
  • The mode points values for team B are 19 and 23.
  • The mode points value for team C is 20.

If one group happens to have multiple modes then you can use the following syntax to display each mode on a different row:

#calculate mode points value for each team
df.groupby(['team'])['points'].apply(pd.Series.mode)

team   
A     0    10
B     0    19
      1    23
C     0    20
Name: points, dtype: int64

Note: You can find the complete documentation for the GroupBy operation in pandas here.

Additional Resources

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

Pandas: How to Calculate Cumulative Sum by Group
Pandas: How to Count Unique Values by Group
Pandas: How to Calculate Correlation By Group

Leave a Reply

Your email address will not be published.