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)
しかし、どちらも空のプロットを返します。
これを得るために私が何ができるか考えていますか?
最新のseabornでは、countplot
関数を使用できます。
seaborn.countplot(x='reputation', data=df)
barplot
でこれを行うには、次のようなものが必要です。
seaborn.barplot(x=df.reputation.value_counts().index, y=df.reputation.value_counts())
x
にカウントを渡しながら、'reputation'
を列名としてy
に渡すことはできません。 x
の「評判」を渡すと、x
の値として、df.reputation
の-values(一意のものだけでなくすべて)が使用されます。シーボーンには、これらを数に合わせる方法はありません。したがって、一意の値をx
として渡し、カウントをy
として渡す必要があります。ただし、正しく一致するようにするには、value_counts
を2回呼び出す(または一意の値とカウントの両方で他の並べ替えを行う)必要があります。
countplot
だけを使用しても、.value_counts()
出力と同じ順序でバーを取得できます。
seaborn.countplot(data=df, x='reputation', order=df.reputation.value_counts().index)