2017-04-19 9 views
2

私はseabornを使用してbarplotを作成しようとしています。barplot x軸のデータからの構築pandas seaborn python

revels_data = pd.read_csv("testtt.txt") rd = revels_data 

ax = sns.barplot(x="Packet number", y="Contents", data=rd) plt.show() 

私はそれぞれのバーの内側の色によって分割されている(x軸上)の各パケット番号のバーを作成しようとしている:私のデータは、私のコードは、現在の形で

Packet number,Flavour,Contents 
1,orange,4 
2,orange,3 
3,orange,2 
4,orange,4 
... 
36, orange,3 
1, coffee,5 
2, coffee,3 
... 
1, raisin,4 
etc. 

ですy軸上のパケットごとの合計内容を持つフレーバー。

は、各パケットすなわち

total_1 = (rd.loc[rd["Packet number"] == 1, "Contents"].sum()) 

ではなく、私はそこから行くと思いますか、それを行うための簡単な方法があるかどうか確認の合計をしようとして開始しました。

アドバイスはありがとうございます!

答えて

2

これにはhueを使用します。同様に、現在、各カテゴリの平均を表示しています。異なる機能を計算するには、estimatorを使用します。

このように、あなたのコードは次のようになります。

ax = sns.barplot(x="Packet number", y="Contents", hue="Flavour", data=rd) 

それとも、代わりに平均値の合計を表示する場合:

ax = sns.barplot(x="Packet number", y="Contents", hue="Flavour", estimator=np.sum, data=rd) 

編集

場合積み重ねられたバープロットに興味があります。パンダを使って直接作れるのですが、あなたはnあなたのデータを最初にグループ分けしてください:

# Sum (or mean if you'd rather) the Contents per packet number and flavor 
# unstack() will turn the flavor into columns, and fillna will put 0 in 
# all missing columns 
grouped = rd.groupby(["Packet number", "Flavour"])["Contents"].sum().unstack().fillna(0) 

# The x axis is taken from the index. The y axis from the columns 
grouped.plot(kind="bar", stacked=True) 
+0

素晴らしい、ありがとうございます。どのように私は、各味のために複数のバーを持つ代わりに、その1つのバーの中に味の分割を持つ単一のバーを持っていますか? – mystifier

+0

シーボーンではできないと思います。ただし、「パンダ」で直接行うことは可能です。私は投稿にそれを追加します – tmrlvi

+0

華麗な、ありがとう – mystifier

関連する問題