我有一个python数组列出了所有字符串标签的出现。我们称之为labels_array。 使用seaborn作为sns我想显示这个数组的计数图:
sns.countplot(labels_array)
这很有效,但由于它们的数组中有太多不同的标签,因此输出效果不佳。
有没有办法只显示n个最常见的标签。
答案 0 :(得分:1)
我遇到了同样的问题(和这个问题),发现这个问题已经得到了回答。
countplot
函数具有参数order
,您可以在其中指定要绘制计数的值。
如前所述,可以使用value_counts
函数获得最常出现的值。
答案 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)