微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于 Dataframes 和 Series 和字典的 CODING Q

如何解决基于 Dataframes 和 Series 和字典的 CODING Q

看看是否有任何证据表明疫苗有效性与儿童性别之间存在联系会很有趣。计算感染了水痘但接种了水痘疫苗(至少一剂水痘)的儿童与接种了疫苗但未感染水痘的儿童的比例。按性别返回结果。

这个函数应该以(使用正确的数字)的形式返回一个字典:

{"male":0.2,"female":0.4}

注意:为了帮助验证,自动分级器正在寻找的水痘_by_sex()['female'] 值以数字 0.0077 开头。 请编写相同的功能代码

解决方法

试试下面的代码:

使用以下代码读取给定的数据集

import pandas as pd
df=pd.read_csv('assets/NISPUF17.csv',index_col=0)
df

主要代码

def chickenpox_by_sex():
    # YOUR CODE HERE
    male_df=df[df['SEX']==1]           
    vac_m=male_df[male_df['P_NUMVRC']>=1]  
    cp_m=vac_m[vac_m['HAD_CPOX']==1]       
    counts_cp_m=cp_m['SEX'].count()
    ncp_m=vac_m[vac_m['HAD_CPOX']==2]
    counts_ncp_m=ncp_m['SEX'].count()
    male=counts_cp_m/counts_ncp_m
    female_df=df[df['SEX']==2]               
    vac_f=female_df[female_df['P_NUMVRC']>=1]  
    cp_f=vac_f[vac_f['HAD_CPOX']==1]       
    counts_cp_f=cp_f['SEX'].count()
    ncp_f=vac_f[vac_f['HAD_CPOX']==2]
    counts_ncp_f=ncp_f['SEX'].count()
    female=counts_cp_f/counts_ncp_f
    ratio_dict={"male":male,"female":female}
    return ratio_dict
    raise NotImplementedError()

使用以下代码检查

chickenpox_by_sex()['female']

完成此操作的最终代码

assert len(chickenpox_by_sex())==2,"Return a dictionary with two items,the first for males and the second for females."

=> [SEX] -> 性别=1(男);性别=2(女性)

=> [HAD_COP] -> 感染水痘 = 1;未感染水痘 = 2

=> [P_NUMVRC]>=1 -> 给予一剂或多剂

*ratio(male) = (接种和感染水痘)/(接种和未感染水痘)

*ratio(female) = (已接种并感染水痘)/(已接种并未感染水痘)

变量名:

male - 男性数据框

vac_m - 已接种疫苗的男性

cp_m - 接种并感染了水痘(男性)

counts_cp_m - 接种和感染水痘的计数

ncp_m - 已接种水痘但未感染水痘(男性)

counts_ncp_m - 接种过水痘但未感染水痘

同样适用于女性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。