2016-04-04 15 views
0

私は一連の実験サンプルを表すCSVデータを持っています。私はこのデータ(hmean)を要約するためにpandas pivot_table機能を使用しています。私はpyplotでこのデータを簡単にプロットすることができます。エラーバーを使ってpython pandas pivot_tableをプロット

このプロットの標準偏差に関してエラーバーを追加したいと思います。私は、ピボットテーブルに標準の計算を追加することができますが、私はどのようにプロットを得るために把握することはできません。

例データ:

Version,Cores,Rate 
B, 24, 17284.202851 
B, 24, 16978.950593 
B, 24, 17420.640853 
B, 24, 18459.647352 
B, 24, 18432.847955 
A, 24, 8718.459497 
A, 24, 8709.560992 
A, 24, 8712.219874 
A, 24, 8697.659670 
A, 24, 8687.926290 
B, 48, 21478.308781 
B, 48, 21478.500370 
B, 48, 21459.274459 
B, 48, 21479.346576 
B, 48, 21443.547086 
A, 48, 17706.794211 
A, 48, 17840.683281 
A, 48, 17728.789484 
A, 48, 17677.580304 
A, 48, 17834.253133 

ピボット:

import pandas as pd 
import scipy.stats as sp 

# read in the data                                                        
samples=pd.read_csv(sys.stdin) 

aggfunc=[sp.hmean] 

summary=pd.pivot_table(samples, index='Cores', values='Rate', 
         columns=['Version'], 
         aggfunc=aggfunc) 

print(summary) 

プロット:

import matplotlib 
import matplotlib.pyplot as plt 
ax=summary.plot(logx=True, grid=True, style='o-', fontsize=10) 
ax.set_xticks(summary.index) 
ax.set_xticklabels(summary.index) 
plt.savefig("fig.pdf") 

私は、これはあまりにも散布図であることを得ることができればそれはいいだろうが、用今すぐエラーバーを取得するだけで十分です。

答えて

0

私は同様の問題を抱えていました。パンダがピボットテーブルから直接エラーバーをプロットすることはサポートされていません。

means = samples.groupby('Cores').means() 
errors = samples.groupby('Cores').errors() 

means.plot.bar(yerr=errors) 

これは私がカテゴリ別にグループ化したいの実験結果の同様のセットで私の作品:しかし、あなたはgroupbyを使用したい結果を得ることができます。上記はパンダdocumentationで与えられた例に非常に似ています。 mean()の代わりにhmean()を使用するには、修正が必要な場合があります。

関連する問題