Saturday, 13 April 2024

Pandas: Get number of groups in a DataFrameGroupBy object

Using ‘len’ function, we can get the number of groups in DataFrameGroupBy object.

Example

group_by_city = df.groupby('City')
group_by_gender_city = df.groupby(['Gender', 'City'])
print('\nTotal groups in group_by_city are : ', len(group_by_city))
print('Total groups in group_by_gender_city are : ', len(group_by_gender_city))

Find the below working application.

 

count_groups.py

import pandas as pd


# Print the content of DataFrameGroupBy object
def print_group_by_result(group_by_object, label):
    print('*'*50)
    print(label,'\n')
    for group_name, group_data in group_by_object:
        print("Group Name:", group_name)
        print(group_data)
        print()
    print('*' * 50)


# Create a sample DataFrame
data = {'Name': ['Krishna', 'Chamu', 'Joel', 'Gopi', 'Sravya', "Raj"],
        'Age': [34, 25, 29, 41, 52, 23],
        'City': ['Bangalore', 'Chennai', 'Hyderabad', 'Hyderabad', 'Bangalore', 'Chennai'],
        'Gender': ['Male', 'Female', 'Male', 'Male', 'Female', 'Male']}

df = pd.DataFrame(data)
print(df)

group_by_city = df.groupby('City')
group_by_gender_city = df.groupby(['Gender', 'City'])
print('\nTotal groups in group_by_city are : ', len(group_by_city))
print('Total groups in group_by_gender_city are : ', len(group_by_gender_city))

print('\nGroup by city is')
print('type of group_by_city is : ', type(group_by_city))
print_group_by_result(group_by_city, 'Group by city details')

print('\nGroup by Gender and City is')
print('type of group_by_gender_city is : ', type(group_by_gender_city))
print_group_by_result(group_by_gender_city, 'Group by Gender and City details')

Output

      Name  Age       City  Gender
0  Krishna   34  Bangalore    Male
1    Chamu   25    Chennai  Female
2     Joel   29  Hyderabad    Male
3     Gopi   41  Hyderabad    Male
4   Sravya   52  Bangalore  Female
5      Raj   23    Chennai    Male

Total groups in group_by_city are :  3
Total groups in group_by_gender_city are :  5

Total groups in group_by_city are :             Name  Age  Gender
City                        
Bangalore     2    2       2
Chennai       2    2       2
Hyderabad     2    2       1
Total groups in group_by_gender_city are :                    Name  Age
Gender City                
Female Bangalore     1    1
       Chennai       1    1
Male   Bangalore     1    1
       Chennai       1    1
       Hyderabad     2    2

Group by city is
type of group_by_city is :  <class 'pandas.core.groupby.generic.DataFrameGroupBy'>
**************************************************
Group by city details 

Group Name: Bangalore
      Name  Age       City  Gender
0  Krishna   34  Bangalore    Male
4   Sravya   52  Bangalore  Female

Group Name: Chennai
    Name  Age     City  Gender
1  Chamu   25  Chennai  Female
5    Raj   23  Chennai    Male

Group Name: Hyderabad
   Name  Age       City Gender
2  Joel   29  Hyderabad   Male
3  Gopi   41  Hyderabad   Male

**************************************************

Group by Gender and City is
type of group_by_gender_city is :  <class 'pandas.core.groupby.generic.DataFrameGroupBy'>
**************************************************
Group by Gender and City details 

Group Name: ('Female', 'Bangalore')
     Name  Age       City  Gender
4  Sravya   52  Bangalore  Female

Group Name: ('Female', 'Chennai')
    Name  Age     City  Gender
1  Chamu   25  Chennai  Female

Group Name: ('Male', 'Bangalore')
      Name  Age       City Gender
0  Krishna   34  Bangalore   Male

Group Name: ('Male', 'Chennai')
  Name  Age     City Gender
5  Raj   23  Chennai   Male

Group Name: ('Male', 'Hyderabad')
   Name  Age       City Gender
2  Joel   29  Hyderabad   Male
3  Gopi   41  Hyderabad   Male

**************************************************


  

Previous                                                 Next                                                 Home

No comments:

Post a Comment