使用错误栏绘制python pandas pivot_table

时间:2016-04-04 11:34:30

标签: python pandas matplotlib pivot-table

我有CSV数据代表一组实验样本。我一直在使用pandas pivot_table功能来总结这些数据(hmean)。我可以使用pyplot轻松地绘制这些数据。

我想在标准偏差方面添加错误栏。我可以向pivot_table添加一个std计算但是我无法弄清楚如何绘制它。

示例数据:

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

如果我能将它作为散点图也会很好,但是现在只需要获得误差条就足够了。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并且看起来pandas不支持直接从pivottable绘制错误栏。但是,您可以使用groupby

获得所需的结果
means = samples.groupby('Cores').means()
errors = samples.groupby('Cores').errors()

means.plot.bar(yerr=errors)

这对我来说有一组类似的实验结果,我希望按类别分组。以上内容与pandas documentation中给出的示例非常相似。您可能需要进行修改才能使用hmean()代替mean()