我在海运中遇到了麻烦,这是我的可复制数据:
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)
但都返回空白图。
你知道我该怎么做才能拿到这个吗?
3条答案
按热度按时间xmd2e60i1#
在最新的seaborn中,可以使用
countplot
函数:要使用
barplot
执行此操作,您需要如下代码:不能将
'reputation'
作为列名传递给x
,同时还要传递y
中的计数。为x
传递“reputation”将使用df.reputation
的 *values(所有的,不仅仅是唯一的)作为x
值,seaborn无法将这些值与计数值对齐,因此需要将唯一值作为x
传递,将计数值作为y
传递,但是需要调用value_counts
两次(或者对唯一值和计数进行一些其他排序)以确保它们正确匹配。fcg9iug32#
仅使用
countplot
,您也可以获得与.value_counts()
输出相同顺序的条形:laik7k3q3#
如answer所示,
sns.countplot
是一个很好的选项,但它是一个轴级图,有ax=
,需要其他matplotlib
方法来调整大小。或者,将
sns.catplot
与kind='count'
配合使用,kind='count'
是height=
和aspect=
的图形级别图。