【发布时间】:2020-04-29 14:03:31
【问题描述】:
有没有办法在使用 seaborn 时制作散点图,其中 (x, y) 值是配对的?我希望 x 轴代表条件 A 下的值,y 轴代表条件 B 下的值。具体来说,假设 x 轴是治疗前的患者体重,y 轴是治疗后的患者体重。我的数据格式如下:
df = pd.DataFrame(
{'n': [1, 2, 3, 1, 2, 3],
'treatment': ['before', 'before', 'before', 'after', 'after', 'after'],
'weight': np.random.rand(6)})
n treatment weight
0 1 before 0.431438
1 2 before 0.053631
2 3 before 0.567058
3 1 after 0.324254
4 2 after 0.624151
5 3 after 0.519498
我认为这符合整洁的数据,但我想要绘制的单个变量是重量。我为 seaborn 看到的所有文档都显示了配对数据的示例,例如绘制每个项目的变量 x 与每个项目的变量 y。例如,sepal_length 与 sepal_width。但是,如果我的 x 和 y 来自同一列,我该如何绘制 x 与 y?
解决方案是否可以重新格式化我的数据,以便我有一个 weight_before 和一个 weight_after 列?如果是这样,您能否提供使用 pandas 修改数据的最简洁方法?我知道我可以执行以下操作,但我觉得这不是很好的语法。
df['weight_before'] = df['weight']
df.loc[df['treatment'] != 'before', 'weight_before'] = np.nan
# and similar for df['weight_after']
【问题讨论】: