问题描述
我想绘制一个直方图,以显示“匹配”列中“ 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]})
解决方法
- 计算均值
- 操纵行和列的多个索引以获取数据集
- 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")
)