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

Python Seaborn Countplot:仅显示n个最常见类别,python,seaborn,Python,Seaborn,我有一个python数组,列出了所有出现的字符串标签。我们称之为标签数组。 使用seaborn作为sns,我想显示此阵列的计数图: sns.countplot(标签\u数组) 这是可行的,但由于我的数组中有太多不同的标签,输出看起来不太好 有没有办法只显示n个最常见的标签。虽然原则上countplot应该知道计数,因此只允许显示其中的一部分,但情况并非如此。因此,在这里使用countplot可能没有太大意义 取而代之的是使用普通的熊猫图。例如,要显示列表中最常见的5个项目 pandas.Seri

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

sns.countplot(标签\u数组)
这是可行的,但由于我的数组中有太多不同的标签,输出看起来不太好


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

虽然原则上
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()

虽然
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()

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

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

见:

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

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

见:

您可以使用
pd.value\u counts()
对事件进行排序

要获得前N个实例,只需编写
pd.value\u counts(labels\u array).iloc[:N]。index
(标签索引)

您可以在
countplot
上应用它,它应该如下所示:

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

您可以使用
pd.value\u counts()
对事件进行排序

要获得前N个实例,只需编写
pd.value\u counts(labels\u array).iloc[:N]。index
(标签索引)

您可以在
countplot
上应用它,它应该如下所示:

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