Plot the Size of each Group in a Groupby object in Pandas

Pandas is a powerful Python library for data analysis that allows grouping of data using groupby(). Visualizing the size of each group helps understand data distribution patterns. Python provides libraries like Matplotlib, Seaborn, and Plotly to create informative plots from grouped data.

Sample Dataset

Let's start by creating a sample dataset to demonstrate plotting group sizes ?

import pandas as pd

# Creating sample data
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [10, 12, 30, 14, 50, 16]}
df = pd.DataFrame(data)
print(df)
  Group_name  Values
0          A      10
1          A      12
2          B      30
3          B      14
4          B      50
5          C      16

Getting Group Sizes

First, let's see how to get the size of each group using groupby() ?

import pandas as pd

data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [10, 12, 30, 14, 50, 16]}
df = pd.DataFrame(data)

# Get size of each group
group_sizes = df.groupby('Group_name').size()
print(group_sizes)
print(f"\nData type: {type(group_sizes)}")
Group_name
A    2
B    3
C    1
dtype: int64

Data type: <class 'pandas.core.series.Series'>

Method 1: Using Matplotlib

Matplotlib provides direct plotting capabilities from pandas Series objects ?

import pandas as pd
import matplotlib.pyplot as plt

# Creating sample data
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [10, 12, 30, 14, 50, 16]}
df = pd.DataFrame(data)

# Get group sizes and plot
group_sizes = df.groupby('Group_name').size()
group_sizes.plot(kind='bar')
plt.xlabel('Group Name')
plt.ylabel('Group Size')
plt.title('Size of Each Group')
plt.xticks(rotation=0)
plt.show()

Method 2: Using Seaborn

Seaborn requires converting the Series to a DataFrame for better control ?

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Creating sample data
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [10, 12, 30, 14, 50, 16]}
df = pd.DataFrame(data)

# Get group sizes and reset index for seaborn
group_sizes = df.groupby('Group_name').size().reset_index(name='Size')
print(group_sizes)

# Create bar plot with seaborn
sns.barplot(data=group_sizes, x='Group_name', y='Size')
plt.xlabel('Group Name')
plt.ylabel('Group Size')
plt.title('Size of Each Group')
plt.show()
  Group_name  Size
0          A     2
1          B     3
2          C     1

Method 3: Using Plotly

Plotly creates interactive plots that allow zooming and hovering ?

import pandas as pd
import plotly.express as px

# Creating sample data
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [10, 12, 30, 14, 50, 16]}
df = pd.DataFrame(data)

# Get group sizes for plotly
group_sizes = df.groupby('Group_name').size().reset_index(name='Size')

# Create interactive bar plot
fig = px.bar(group_sizes, 
             x='Group_name', 
             y='Size',
             title='Size of Each Group',
             labels={'Group_name': 'Group Name', 'Size': 'Group Size'})
fig.show()

Alternative Visualization: Pie Chart

You can also visualize group sizes using pie charts to show proportions ?

import pandas as pd
import matplotlib.pyplot as plt

# Creating sample data
data = {'Group_name': ['A', 'A', 'B', 'B', 'B', 'C'],
        'Values': [10, 12, 30, 14, 50, 16]}
df = pd.DataFrame(data)

# Get group sizes
group_sizes = df.groupby('Group_name').size()

# Create pie chart
plt.figure(figsize=(8, 6))
plt.pie(group_sizes.values, labels=group_sizes.index, autopct='%1.1f%%')
plt.title('Group Size Distribution')
plt.axis('equal')
plt.show()

Comparison

Library Interactive Ease of Use Best For
Matplotlib No Moderate Static plots with full control
Seaborn No Easy Statistical visualizations
Plotly Yes Easy Interactive dashboards

Conclusion

Use df.groupby('column').size() to get group sizes, then visualize with your preferred library. Matplotlib offers precise control, Seaborn provides statistical styling, and Plotly creates interactive plots for better data exploration.

Updated on: 2026-03-27T09:19:31+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements