如何在 Python 中绘制 seaborn 中的聚合数据帧?
how to plot aggregated dataframes in seaborn in Python?
我有一个跨时间测量的数据框,其中包含重复项。我正在尝试使用 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})
此 returns 一个分层数据框。我想用 seaborn 绘制这些值,以将测量值显示为分布。这不起作用:
sns.violinplot(x="cond", y="value", hue="cond", data=x)
它的错误是:ValueError: Could not interperet input 'cond'
如何将 agg
返回的数据帧展平以便用 seaborn 绘制?
您可以只为 groupby
使用参数 as_index=False
:
x = df.groupby(["measurement", "cond"], as_index=False).agg({"value": np.mean})
我有一个跨时间测量的数据框,其中包含重复项。我正在尝试使用 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})
此 returns 一个分层数据框。我想用 seaborn 绘制这些值,以将测量值显示为分布。这不起作用:
sns.violinplot(x="cond", y="value", hue="cond", data=x)
它的错误是:ValueError: Could not interperet input 'cond'
如何将 agg
返回的数据帧展平以便用 seaborn 绘制?
您可以只为 groupby
使用参数 as_index=False
:
x = df.groupby(["measurement", "cond"], as_index=False).agg({"value": np.mean})