双杠直方图

问题描述

我想绘制一个直方图,以显示“匹配”列中“ amb_o”,“ intel_o”,“ sinc_o”,“ fun_o”,“ attr_o”,“ sinc_o”列的平均值。因此,对于match(1)与no match(0),我希望看到“ amb_o”的平均值彼此相邻,并且与其他5列相同。换句话说,我想查看6个属性的平均评分,以匹配结束的日期与没有匹配结束的日期的平均值。我该怎么办?

(此数据来自一项快速约会实验,其中参与者根据野心,智慧,诚意等属性将日期定为0-10。

matchesdf = (dating.filter(['amb_o','intel_o','sinc_o','fun_o','attr_o','shar_o','match']))

# example of dataframe

dating = pd.DataFrame({'amb_o': [7,8,5],'intel_o': [5,9,2],'sinc_o': [8,'fun_o': [6,'match': [0,1,1]})

解决方法

  1. 计算均值
  2. 操纵行和列的多个索引以获取数据集
  3. plot()
dating = pd.DataFrame({'amb_o': [7,8,5],'intel_o': [5,9,2],'sinc_o': [8,'fun_o': [6,'match': [0,1,1]})

dfa = (dating
     .groupby("match")
     .agg({c:"mean" for c in dating.columns if c!="match"})
)
dfa.columns.set_names("cat",inplace=True)
(dfa
    # bring match as part of row multi-index
    .unstack().to_frame()
     # rows to columns for plot
    .T
    .plot(kind="hist")
)

enter image description here