列的所有排列上的Pandas条件概率

时间:2019-03-21 16:27:41

标签: python pandas numpy conditional probability

我想计算熊猫DataFrame上所有列的排列的条件概率。

例如,我有下表:

+-------+-------+----------+-------+
| Price | Color | Material | Brand |
+-------+-------+----------+-------+
|    10 | red   | leather  |   X   |
|    20 | red   | leather  |   Y   |
|    10 | red   | steel    |   X   |
|    10 | blue  | leather  |   Y   |
|    20 | blue  | leather  |   X   |
|    20 | blue  | leather  |   X   |
+-------+-------+----------+-------+

现在我要计算所有条件概率,即:

  • P(价格|颜色)
  • P(材料|颜色)
  • P(品牌|颜色)
  • P(颜色|价格)
  • ...
  • P(价格|颜色,材料)
  • P(价格|颜色,品牌)
  • P(颜色,价格|品牌)
  • P(颜色,价格|材料)
  • ...
  • P(颜色|品牌,材料,价格)

因此,基本上,对于每个“ P(...)”,我都必须按照“ |”剩余的部分来分割数据并计算出具有该属性的项目所占比例除以该拆分中的所有项目。

即P(价格|颜色,材料) 将返回元组

(red, leather) -> [(X, 10, 0.5), (Y, 20, 0.5)]
(red, steel) -> [(X, 10, 1.0)]
(blue, leather) -> [(X, 10, 0.3333), (X, 20, 0.6666)]

我知道这样做的时间复杂度将非常高。是否有相对平稳的方法可以在python中实现,或者您可以想象得到的任何方式?

0 个答案:

没有答案