如何在Python中的seaborn中绘制聚合数据帧?

时间:2015-12-15 15:23:29

标签: python pandas matplotlib seaborn

我有一个包含重复的跨时间测量数据框。我试图用seaborn绘制这个数据帧的汇总和汇总版本。数据是:

A = pandas.DataFrame({"measurement": [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
                      "t": [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
                      "value": [10, 10.5, 10.4, 10.6, 10.01,
                                10, 10, 10, 10, 10]})
A["cond"] = "A"
B = pandas.DataFrame({"measurement": [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
                      "t": [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
                      "value": [20, 40.5, 5.4, 1.6, 1.01,
                                30, 50, 60, 4, 3]})
B["cond"] = "B"
df = pandas.concat([A, B])

“cond”是条件,“measurement”是不同的重复(每个条件2个),“t”是时间维度。为了平均每次复制的时间,我使用agg

x = df.groupby(["measurement", "cond"]).agg({"value": np.mean})

这将返回分层数据帧。我想用seaborn绘制这些值,以显示测量结果。这不起作用:

sns.violinplot(x="cond", y="value", hue="cond", data=x)

错误:ValueError: Could not interperet input 'cond'

如何展平agg返回的数据框,以便可以使用seaborn进行绘制?

1 个答案:

答案 0 :(得分:1)

您可以将参数as_index=False用于groupby

x = df.groupby(["measurement", "cond"], as_index=False).agg({"value": np.mean})

enter image description here