Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
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.
Advertisements
