pythonpandasseabornbar-chartcountplot

Order categories by count in a countplot


I know that seaborn.countplot has the attribute order which can be set to determine the order of the categories. But what I would like to do is have the categories be in order of descending count. I know that I can accomplish this by computing the count manually (using a groupby operation on the original dataframe, etc.) but I am wondering if this functionality exists with seaborn.countplot.


Solution

  • This functionality is not built into seaborn.countplot as far as I know - the order parameter only accepts a list of strings for the categories, and leaves the ordering logic to the user.

    This is not hard to do with value_counts() provided you have a DataFrame though. For example,

    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.set(style='darkgrid')
    
    titanic = sns.load_dataset('titanic')
    sns.countplot(x = 'class',
                  data = titanic,
                  order = titanic['class'].value_counts().index)
    plt.show()
    

    enter image description here