首页 > 解决方案 > 使用相同的列名和类别 Python/Seaborn 绘制不同的预测

问题描述

我有不同组的df。我有两个预测(iqr,中位数)。

cntx_iqr    pred_iqr    cntx_median pred_median
18-54        83          K18-54         72
R18-54       34          R18-54         48
25-54        33          18-34          47
K18-54       29          18-54          47
18-34        27          R25-54         29
K18-34       25          25-54          23
K25-54       24          K25-54         14
R18-34       22          R18-34          8
R25-54       17          K18-34          6         

现在我想使用 seaborn 绘制它们,并且我已经为飞行员融化了数据。但是,它看起来不适合我。

pd.melt(df, id_vars=['cntx_iqr', 'cntx_median'], value_name='category', var_name="kind")

我的目标是比较(pred_iqr,pred_median)这 2 个groups (cntx_iqr, cntx_median)可能是堆栈条形图或其他一些有用图的预测,以了解每个组对于这 2 个预测的不同之处。

任何帮助/建议将不胜感激

提前致谢

标签: pythonmatplotlibseaborndata-visualization

解决方案


不确定您是如何获得数据框的,但您需要先匹配这些值:

df = df[['cntx_iqr','pred_iqr']].merge(df[['cntx_median','pred_median']],
                                  left_on="cntx_iqr",right_on="cntx_median")

df.head()

    cntx_iqr    pred_iqr    cntx_median pred_median
0   18-54   83  18-54   47
1   R18-54  34  R18-54  48
2   25-54   33  25-54   23
3   K18-54  29  K18-54  72
4   18-34   27  18-34   47

一旦你有了这个,你可以做一个散点图:

sns.scatterplot(x = 'pred_iqr',y = 'pred_median',data=df)

在此处输入图像描述

条形图需要一些旋转,但应该是:

sns.barplot(x = 'cntx_iqr', y = 'value', hue='variable',
            data = df.melt(id_vars='cntx_iqr',value_vars=['pred_iqr','pred_median']))

在此处输入图像描述


推荐阅读