Python Pandas - Sort DataFrame in descending order according to the element frequency

To sort a Pandas DataFrame in descending order according to element frequency, you need to group the data, count occurrences, and use sort_values() with ascending=False.

Basic Syntax

The key is combining groupby(), count(), and sort_values() ?

df.groupby(['column']).count().sort_values(['count_column'], ascending=False)

Creating Sample Data

Let's create a DataFrame with car data to demonstrate frequency sorting ?

import pandas as pd

# Create DataFrame with duplicate car entries
dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'BMW', 'Mustang', 'Mercedes', 'Lexus'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 2000],
    "Place": ['Pune', 'Delhi', 'Mumbai', 'Hyderabad', 'Bangalore', 'Chandigarh']
})

print("Original DataFrame:")
print(dataFrame)
Original DataFrame:
       Car  Reg_Price      Place
0      BMW       7000       Pune
1    Lexus       1500      Delhi
2      BMW       5000     Mumbai
3  Mustang       8000  Hyderabad
4 Mercedes       9000  Bangalore
5    Lexus       2000 Chandigarh

Sorting by Element Frequency

Group by the 'Car' column, count occurrences, and sort in descending order ?

import pandas as pd

dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'BMW', 'Mustang', 'Mercedes', 'Lexus'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 2000],
    "Place": ['Pune', 'Delhi', 'Mumbai', 'Hyderabad', 'Bangalore', 'Chandigarh']
})

# Sort by element frequency in descending order
frequency_sorted = dataFrame.groupby(['Car'])['Reg_Price'].count().reset_index(name='Count').sort_values(['Count'], ascending=False)

print("DataFrame sorted by frequency (descending):")
print(frequency_sorted)
DataFrame sorted by frequency (descending):
       Car  Count
0      BMW      2
1    Lexus      2
3  Mercedes      1
2  Mustang      1

Alternative Using value_counts()

You can also use value_counts() for a simpler approach ?

import pandas as pd

dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'BMW', 'Mustang', 'Mercedes', 'Lexus'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 2000],
    "Place": ['Pune', 'Delhi', 'Mumbai', 'Hyderabad', 'Bangalore', 'Chandigarh']
})

# Using value_counts() - automatically sorts in descending order
frequency_counts = dataFrame['Car'].value_counts().reset_index()
frequency_counts.columns = ['Car', 'Count']

print("Using value_counts():")
print(frequency_counts)
Using value_counts():
       Car  Count
0      BMW      2
1    Lexus      2
2 Mercedes      1
3  Mustang      1

Method Comparison

Method Syntax Default Order
groupby().count() More verbose but flexible Must specify ascending=False
value_counts() Simpler and direct Descending by default

Conclusion

Use groupby().count().sort_values(ascending=False) for complex frequency analysis or value_counts() for simple frequency sorting. Both methods effectively sort DataFrames by element frequency in descending order.

Updated on: 2026-03-26T02:42:42+05:30

778 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements