让我们假设我们有一个DataFrame
带有一些列,并且我需要找到给定A
和B
(这是{{ 1}})。我该如何计算?
对于一个变量,就是在给定C
的情况下找到DataFrame
的条件概率,这很简单,我可以这样制作一个A
然后是一个B
:
groupby()
但是,如果我选择2列,则此方法将无效:
value_counts()
因为这不再是df.groupby('A')['B'].value_counts() / df.groupby('A')['B'].count()
对象,而是df.groupby('A')[['B', 'C']]
对象,因此我无法应用SeriesGroupBy
函数。
编辑
示例:
这是DataFrameGroupBy
的一部分
>
如果我想找到某人在其旅行舱中幸存的条件概率,则为以下输出:
现在,我想找到一个人在给定两个变量后才能幸存的条件概率,比如说他的旅行班级和性别。
答案 0 :(得分:2)
IIUC,只需反转您的groupby
模式-按条件分组,然后将value_counts
应用于“幸存”:
df.groupby(['pclass', 'sex'])['survived'].value_counts(normalize=True)
如果您需要将输出作为DataFrame
,请使用Series.reset_index
:
df.groupby(['pclass', 'sex'])['survived'].value_counts(normalize=True).reset_index(name='prob')