2016-04-04 19 views
0

Bir dizi deney numunesini temsil eden CSV verilerine sahibim. Bu verileri özetlemek için pivot_table işlevlerini panda kullanıyorum (hmean). Bu verileri pyplot ile kolayca çizebilirim.Plot python pandaları pivot_table hata çubuklarıyla

Bu alana standart sapma açısından hata çubukları eklemek istiyorum. Pivot_table dosyasına bir std hesaplaması ekleyebilirim, ancak nasıl çizileceğini anlayamıyorum.

Örnek veriler:

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 

Pivot:

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) 

çiziliyor:

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") 

Bu da bir dağılım çizim olmaya alabilirsem bu güzel olurdu, ama için Şimdi sadece hata çubukları almak yeterli olacaktır.

cevap

0

Benzer bir sorunla karşılaştım ve pandaların hata çubuklarını doğrudan bir döner tablonun çizimini desteklemediği görülüyor. Ama sen groupby kullanarak istediğiniz sonucu elde edebilirsiniz:

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

means.plot.bar(yerr=errors) 

Bu kategoriye göre gruplandırılmış istediğiniz deneysel sonuçlarla benzer bir set ile benim için çalışıyor. Yukarıdaki pandalar documentation'da verilen örneğe çok benzemektedir. mean() yerine hmean()'u kullanmak için değişiklik yapmanız gerekebilir.

İlgili konular