在seaborn barplot中绘制value_counts()

时间:2015-07-16 16:50:10

标签: python pandas seaborn

我无法在海边拍摄一个画布。这是我可重复的数据:

people = ['Hannah', 'Bethany', 'Kris', 'Alex', 'Earl', 'Lori']
reputation = ['awesome', 'cool', 'brilliant', 'meh', 'awesome', 'cool']
dictionary = dict(zip(people, reputation))
df = pd.DataFrame(dictionary.values(), dictionary.keys())
df = df.rename(columns={0:'reputation'})

然后我想得到一个条形图,显示不同声誉的价值计数。我试过了:

sns.barplot(x = 'reputation', y = df['reputation'].value_counts(), data = df, ci = None)

sns.barplot(x = 'reputation', y = df['reputation'].value_counts().values, data = df, ci = None)

但两者都返回空白图。

知道我能做些什么才能得到这个?

2 个答案:

答案 0 :(得分:18)

在最新的seaborn中,您可以使用countplot功能:

seaborn.countplot(x='reputation', data=df)

要使用barplot执行此操作,您需要以下内容:

seaborn.barplot(x=df.reputation.value_counts().index, y=df.reputation.value_counts())

您无法将'reputation'作为列名传递给x,同时也会传递y中的计数。传递x的“声誉”将使用df.reputation(所有这些,而不仅仅是唯一的值)作为x值,而seaborn已经无法将这些与计数对齐。因此,您需要将唯一值传递为x,将计数传递为y。但是你需要两次调用value_counts(或对唯一值和计数进行一些其他排序)以确保它们匹配正确。

答案 1 :(得分:0)

仅使用countplot,您也可以按照与.value_counts()输出相同的顺序获得条形:

seaborn.countplot(data=df, x='reputation', order=df.reputation.value_counts().index)