如何按升序或降序对海运条形图进行排序

2022-02-27 00:00:00 python pandas data-visualization seaborn

问题描述

EXCEL文件包含有关7000 Apple App Store的信息,如下所示

这是我的代码->;

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd 
apple_store_data = pd.read_excel(r'apple_store.xlsx')
sns.barplot(data=apple_store_data,y='PrimaryGenre',x='AvgRating',color='g')
plt.show()

它给出如下输出->;


解决方案

若要按字母顺序对栏进行排序,可以使用ordered=True使列categorical:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

df = pd.DataFrame({'Genre': np.random.choice(['helium', 'neon', 'argon', 'krypton', 'xenon', 'radon', 'oganesson'], 50),
                   'Rating': np.random.randint(1, 11, 50)})
df['Genre'] = pd.Categorical(df['Genre'], ordered=True)
ax = sns.barplot(data=df, y='Genre', x='Rating', palette='husl')
ax.tick_params(axis='y', length=0)
plt.tight_layout()
plt.show()

要按降序排列条形图,可以使用以下代码。在这种情况下,不需要将该列设置为绝对列。

ax = sns.barplot(data=df, y='Genre', x='Rating', palette='plasma',
                 order=df.groupby('Genre')['Rating'].agg('mean').sort_values(ascending=False).index)

ps:要仅显示例如前5名,请使用... .index[:5]

ax = sns.barplot(data=df, y='Genre', x='Rating', palette='plasma',
                 order=df.groupby('Genre')['Rating'].agg('mean').sort_values(ascending=False).index[:5])

相关文章