从熊猫df创建矩阵以显示Disease_Symptom之间的预测

时间:2019-03-20 22:12:34

标签: python dataframe matrix

大家好,我是python datafram的初学者::

我的数据框是熊猫格式的,如下所示 标头[疾病,症状]

    Disease     Symptom
   0 di1         sy1
   1 di1         sy4
   2 di1         sy7
   3 di3         sy2
   4 di3         sy4
   5 di3         sy7 

## di =疾病,sy =症状

我想研究对与症状相关的每种疾病的预测,我希望有人能帮助我创建矩阵脚本 提供每种疾病是否与症状有关的信息。

ID  s1 s2 s3 s4 s5 s6 s7
di1  1  0  0  1  0  0  0
di2  0  1  0  0  0  1  1
di3  0  1  0  1  0  0  0
di4  0  0  0  0  0  0  1
di5  0  1  0  1  0  0  0

这个想法是,如果一种疾病与基质症状1无关,那么该症状是否与基质症状1相关联

如果有人帮助我非常感谢!谢谢。

1 个答案:

答案 0 :(得分:0)

您可以结合使用pandas.get_dummiespandas.DataFrame.groupby来获得它。

为简单起见,我将按如下方式创建我的初始数据框:

>>> df
  Disease Symptom
0      d1      s1
1      d1      s4
2      d1      s7
3      d3      s2
4      d3      s4
5      d3      s7

我可以使用pd.get_dummies()方法为“症状”功能生成虚拟列。

>>> df_g = pd.get_dummies(df,columns=['Symptom'])
>>> df_g
  Disease  Symptom_s1  Symptom_s2  Symptom_s4  Symptom_s7
0      d1           1           0           0           0
1      d1           0           0           1           0
2      d1           0           0           0           1
3      d3           0           1           0           0
4      d3           0           0           1           0
5      d3           0           0           0           1

现在,我可以根据df.groupby()的列值使用Disease打包多行,并对那些一键编码的矢量求和,以获得最终的期望结果。

>>> df_gg = df_g.groupby(['Disease'], as_index=False).sum()
>>> df_gg
  Disease  Symptom_s1  Symptom_s2  Symptom_s4  Symptom_s7
0      d1           1           0           1           1
1      d3           0           1           1           1

Symptom_s3Symptom_s5是简单的零列,可以在以后附加。我的示例df没有s6来通过get_dummies()获取列。