【问题标题】:plotting value_counts() in seaborn barplot在 seaborn barplot 中绘制 value_counts()
【发布时间】:2015-10-06 05:59:12
【问题描述】:

我无法在 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)

但两者都返回空白图。

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

【问题讨论】:

    标签: python pandas seaborn


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在最新的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 两次(或对唯一值和计数进行其他排序)以确保它们正确匹配。

      【讨论】:

        猜你喜欢
        • 2022-12-08
        • 2016-05-12
        • 2021-05-06
        • 1970-01-01
        • 1970-01-01
        • 2021-03-24
        • 2020-05-30
        • 2017-08-30
        • 1970-01-01
        相关资源
        最近更新 更多