我有一个简单的数据框,如下所述。
如何根据Column_1
和Column_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
groupby
和unstack
的另一种解决方案: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
最后,您可以除以
div
的length
index
-它是length
的df
: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/