Seaborn Countplot:仅显示n个最常见的类别

时间:2017-11-21 08:34:28

标签: python seaborn

我有一个python数组列出了所有字符串标签的出现。我们称之为labels_array。 使用seaborn作为sns我想显示这个数组的计数图:

sns.countplot(labels_array) 这很有效,但由于它们的数组中有太多不同的标签,因此输出效果不佳。

有没有办法只显示n个最常见的标签。

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题(和这个问题),发现这个问题已经得到了回答。

countplot函数具有参数order,您可以在其中指定要绘制计数的值。 如前所述,可以使用value_counts函数获得最常出现的值。

请参阅: limit the number of groups shown in seaborn countplot?

答案 1 :(得分:0)

虽然countplot原则上应该知道计数,因此只允许显示其中的一部分,但事实并非如此。因此,使用countplot可能在这里没有多大意义。

相反,只需使用普通的熊猫图。例如。显示列表中最常见的5个项目

pandas.Series(labels_array).value_counts()[:5].plot(kind="bar")

完整示例:

import string
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

l = list(string.ascii_lowercase)
n = np.random.rand(len(l))
a = np.random.choice(l, p=n/n.sum(),size=400)

s = pd.Series(a)
s.value_counts()[:5].plot(kind="bar")

plt.show()

答案 2 :(得分:0)

您可以使用pd.value_counts()对出现的事件进行排序。

要获得前N次出现,您只需编写pd.value_counts(labels_array).iloc[:N].index(标签索引)

您可以在countplot上应用它,它应该看起来像这样:

sns.countplot(labels_array, order=pd.value_counts(labels_array).iloc[:N].index)