使用groupby()为一种性别、年龄组和婚姻状况进行选择,并使用value_counts()显示频率分布



需要按帮助分组

我想输出一个频率表,显示所有年龄组的女性("RIAGENDR"==2(的婚姻状况("DMDMARTLx"(。下面的代码返回了年龄组分层并正确计算了婚姻状况,但我很难理解为什么我不能从数据框中只选择女性。

da["agegrp"] = pd.cut(da.RIDAGEYR, [18, 30, 40, 50, 60, 70, 80])
da["RIAGENDRf"] = da["RIAGENDR"] == 2
da.groupby(['agegrp', 'RIAGENDRf']) ['DMDMARTLx'].value_counts()
agegrp    RIAGENDRf  DMDMARTLx       
(18, 30]  False      Never Married       262
Married             104
Living w Partner     95
Separated             7
Divorced              2
Widowed               2
True       Never Married       259
Married             158
Living w Partner    114
Divorced             11
Separated            11
...

如果我使用[]来选择da["RIAGENDR"]==2内的数据,我会得到一个值错误:

da["agegrp"] = pd.cut(da.RIDAGEYR, [18, 30, 40, 50, 60, 70, 80])
da["RIAGENDRf"] = [da["RIAGENDR"]==2]
da.groupby(['agegrp', 'RIAGENDRf']) ['DMDMARTLx'].value_counts()
ValueError: Length of values does not match length of index

这是否意味着我需要填写或删除缺失的数据?

如果你想要一个女性数据帧,那么你必须写:

da_women = da[da["RIAGENDR"] == 2]

最新更新