我有一个简单的数据框,如下所述。

如何根据Column_1Column_2计算Column_3中一个出现的概率?

Column_1是结果(一个或零)。

Column_2 Column_3是一种分类。

因此,第一行对于LM型居住在带有汽车的A号楼的人来说意味着1。

Column_1 Column_2 Column_3
 1        A         LM
 1        B         LO
 0        C         LP
 1        D         LM
 0        A         LK
 1        A         LM


如果我理解正确的结果可能是

    LM    LO    LP    LK
A  .33                0
B              .167
C               0
D  .167

最佳答案

您可以使用pivot_table

print (df.pivot_table(index='Column_2',
                      columns='Column_3',
                      values='Column_1',
                      aggfunc='sum',
                      fill_value=0))
Column_3  LK  LM  LO  LP
Column_2
A          0   2   0   0
B          0   0   1   0
C          0   0   0   0
D          0   1   0   0


groupbyunstack的另一种解决方案:

df1 = df.groupby(['Column_2','Column_3'])['Column_1'].sum().unstack(fill_value=0)
print (df1)
Column_3  LK  LM  LO  LP
Column_2
A          0   2   0   0
B          0   0   1   0
C          0   0   0   0
D          0   1   0   0


最后,您可以除以divlength index-它是lengthdf

print (df1.div(len(df.index)))
Column_3   LK        LM        LO   LP
Column_2
A         0.0  0.333333  0.000000  0.0
B         0.0  0.000000  0.166667  0.0
C         0.0  0.000000  0.000000  0.0
D         0.0  0.166667  0.000000  0.0

关于python - Pandas 的概率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41416740/

10-12 19:24