我无法在海边拍摄一个画布。这是我可重复的数据:
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)
但两者都返回空白图。
知道我能做些什么才能得到这个?
答案 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)