当我在 coursera 中使用 python 在数据科学中运行以下代码时出错
Posted
技术标签:
【中文标题】当我在 coursera 中使用 python 在数据科学中运行以下代码时出错【英文标题】:An error when I run the following code in data science with python in coursera 【发布时间】:2021-07-19 22:53:36 【问题描述】:当我针对该问题运行以下代码时出现错误。 题: 让我们探讨一下小时候喂母乳和从医疗保健提供者那里接种季节性流感疫苗之间的关系。返回我们认识的儿童在小时候喝过母乳和不认识的儿童的平均流感疫苗数量的元组。
这个函数应该返回一个元组的形式(使用正确的数字):
(2.5, 0.1)
代码:
def average_influenza_doses():
# YOUR CODE HERE
# raise NotImplementedError()
import pandas as pd
import numpy as np
df = pd.read_csv("assests/NISPUF17.csv", index_col=0)
cbf_flu=df.loc[:,['CBF_01','P_NUMFLU']]
cbf_flu1=cbf_flu[cbf_flu['CBF_01'] ==1].dropna()
cbf_flu2=cbf_flu[cbf_flu['CBF_01'] ==2].dropna()
flu1=cbf_flu1['P_NUMFLU'].values.copy()
flu1[np.isnan(flu1)] = 0
f1=np.sum(flu1)/len(flu1)
flu2=cbf_flu2['P_NUMFLU'].values.copy()
flu2[np.isnan(flu2)] = 0
f2=np.sum(flu2)/len(flu2)
aid =(f1,f2)
return aid
assert len(average_influenza_doses())==2
, "在一个元组中返回两个值,第一个表示是,第二个表示否。"
【问题讨论】:
您好,欢迎来到 *** 社区。请阅读这篇有用的帖子以提出更好的问题。请分享您遇到的错误。提供您拥有的输入和您想要的输出将有助于回答您的问题。 ***.com/questions/20109391/… 【参考方案1】:你拼错了目录:
错误:df = pd.read_csv("assets/NISPUF17.csv", index_col=0)
RIGHT:df = pd.read_csv("assets/NISPUF17.csv", index_col=0)
我只发现了这个错误
【讨论】:
【参考方案2】:您的代码应如下所示。不要使用.values
,只需获取 Pandas 系列并对其应用聚合函数 .sum()
。
import pandas as pd
import numpy as np
def average_influenza_doses():
df = pd.read_csv("assets/NISPUF17.csv", index_col=0)
cbf_flu = df[['CBF_01','P_NUMFLU']]
cbf_flu1 = cbf_flu[cbf_flu['CBF_01'] == 1].dropna()
cbf_flu2 = cbf_flu[cbf_flu['CBF_01'] == 2].dropna()
flu1 = cbf_flu1['P_NUMFLU']
f1 = flu1.sum() / flu1.size
flu2 = cbf_flu2['P_NUMFLU']
f2 = flu2.sum() / flu2.size
print(f1, f2)
return (f1,f2)
【讨论】:
另外,不要忘记修复您从中读取 csv 的文件源。【参考方案3】:回答这个问题的方法之一:
键入以下代码以读取给定的数据集
import pandas as pd
df=pd.read_csv('assets/NISPUF17.csv',index_col=0)
df
主要代码
def average_influenza_doses():
# YOUR CODE HERE
BF_Flu=df[df['CBF_01']==1]
avg_BF=BF_Flu['P_NUMFLU'].mean()
NBF_Flu=df[df['CBF_01']==2]
avg_NBF=NBF_Flu['P_NUMFLU'].mean()
tup=(avg_BF,avg_NBF)
return tup
raise NotImplementedError()
使用以下代码执行
average_influenza_doses()
使用已经给出的以下代码进行检查
assert len(average_influenza_doses())==2, "Return two values in a tuple, the first for yes and the second for no."
[CBF_01]=1 - 收到母乳
[CBF_01]=1 - 未收到母乳
[P_NUMFLU] - 受流感影响的儿童人数
【讨论】:
【参考方案4】: def average_influenza_doses():
# YOUR CODE HERE
df=pd.read_csv('assets/NISPUF17.csv',index_col=0)
bf = df[df['CBF_01']==1]
nbf = df[df['CBF_01']!=1]
mean_bf = bf['P_NUMFLU'].mean()
mean_nbf = nbf['P_NUMFLU'].mean()
return ((mean_bf,mean_nbf))
【讨论】:
以上是关于当我在 coursera 中使用 python 在数据科学中运行以下代码时出错的主要内容,如果未能解决你的问题,请参考以下文章
python Coursera - 打开文本文件并使用正则表达式计算嵌入在文本中的数字。