如何按升序或降序对海运条形图进行排序
问题描述
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])
相关文章