In this tutorial we will learn how to rank the dataframe in python pandas by ascending and descending order with maximum rank value, minimum rank value , average rank value and dense rank . We will see an example for each. We will be ranking the dataframe on row wise on different methods
In this tutorial we will be dealing with following examples
- Rank the dataframe by ascending and descending order
- Rank the dataframe by dense rank if found 2 values are same
- Rank the dataframe by Maximum rank if found 2 values are same
- Rank the dataframe by Minimum rank if found 2 values are same
- Rank the dataframe by group
Create data frame:
import pandas as pd import numpy as np #Create a DataFrame d = { 'Name':['Alisa','Bobby','Cathrine','Alisa','Bobby','Cathrine', 'Alisa','Bobby','Cathrine','Alisa','Bobby','Cathrine'], 'Subject':['Mathematics','Mathematics','Mathematics','Science','Science','Science', 'History','History','History','Economics','Economics','Economics'], 'Score':[62,47,55,74,31,77,85,63,42,62,89,85]} df = pd.DataFrame(d,columns=['Name','Subject','Score']) df
Resultant dataframe will be
Ranking the dataframe in python pandas on ascending order:
Now lets rank the dataframe in ascending order of score as shown below
# Ranking of score ascending order df['score_ranked']=df['Score'].rank(ascending=1) df
so the result will be
Ranking the dataframe in python pandas on descending order:
rank the dataframe in descending order of score as shown below
# Ranking of score descending order df['score_ranked']=df['Score'].rank(ascending=0) df
so the result will be
Rank the dataframe in python pandas by minimum value of the rank
rank the dataframe in descending order of score and if found two scores are same then assign the minimum rank to both the score as shown below
# Ranking of score in descending order by minimum value df['score_ranked']=df['Score'].rank(ascending=0,method='min') df
in this example score 62 is found twice and is ranked by minimum value of 7
so the result will be
Rank the dataframe in python pandas by maximum value of the rank
rank the dataframe in descending order of score and if found two scores are same then assign the maximum rank to both the score as shown below
# Ranking of score in descending order by maximum value df['score_ranked']=df['Score'].rank(ascending=0,method='max') df
In this example score 62 is found twice and is ranked by maximum value of 8
so the result will be
Rank the dataframe in python pandas by dense rank
rank the dataframe in descending order of score and if found two scores are same then assign the same rank . Dense rank does not skip any rank (in min and max ranks are skipped)
# Ranking of score in descending order by dense df['score_ranked']=df['Score'].rank(ascending=0,method='dense') df
so the result will be
Rank the dataframe in python pandas by Group
rank the dataframe in descending order of score by subject . so ranking is done by subject wise
# Rank by Group df["group_rank"] = df.groupby("Subject")["Score"].rank(ascending=0,method='dense') df
so the result will be