如何使用if语句来迭代可变数据类型,以移除除以z的操作

2024-10-04 05:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析FreeCodeCamp 2016年的调查数据。https://github.com/freeCodeCamp/2016-new-coder-survey

特别是2016年新编码器调查/清洁数据/2016年FCC新编码器调查-数据.csv你知道吗

我通过将净推荐量(差值)除以每个x值(年龄)的总推荐量(推荐量之和)来规范化绘图。你知道吗

对于一些年龄段的人来说,建议是零,因此我最终被零除,得到零分错误。我已经找到办法了。但是为了学习,我怎样才能用if语句解决这个问题呢?你能解释一下下面的代码有什么问题吗?你知道吗

这里只是我所有的变量,包括完整性。你知道吗

data_file = pd.read_csv('FCC_New_Coders_Survey_Data.csv', dtype={'AttendedBootcamp': float, 'CodeEventOther': object, 'JobRoleInterestOther': object})
AttendedBootcamp = data_file['AttendedBootcamp']
BootcampFullJob = data_file['BootcampFullJobAfter']
BootcampRecommend = data_file['BootcampRecommend']
Age = data_file['Age']
JobYes = data_file[data_file.BootcampFullJobAfter == 1]
JobNo = data_file[data_file.BootcampFullJobAfter == 0]
RecYes = data_file[data_file.BootcampRecommend == 1]
RecNo = data_file[data_file.BootcampRecommend == 0]
RecYesJobYes = data_file[data_file.BootcampRecommend == 1][data_file.BootcampFullJobAfter == 1 ]
RecNoJobYes = data_file[data_file.BootcampRecommend == 0][data_file.BootcampFullJobAfter == 1 ]
RecYesJobNo = data_file[data_file.BootcampRecommend == 1][data_file.BootcampFullJobAfter == 0 ]
RecNoJobNo = data_file[data_file.BootcampRecommend == 0][data_file.BootcampFullJobAfter == 0 ]

这里是我失败的代码

numerator = [len(RecYesJobYes[RecYesJobYes.Age == i]) - len(RecNoJobYes[RecNoJobYes.Age == i]) for i in range(16, 60)]
denomerator = [len(RecYesJobYes[RecYesJobYes.Age == i]) + len(RecNoJobYes[RecNoJobYes.Age == i]) for i in range(16, 60)]

下面是我对异常处理的尝试

try:
    bananasplit = [int(m) / int(b) for b,m in zip(denomerator, numerator)]
except ZeroDivisionError:
        b = 1 in denomerator

这是我的if语句

for b in [int(m) / int(b) for b,m in zip(denomerator, numerator)][:]:
    if ZeroDivisionError:
        b = 1 in denomerator

Tags: csv数据inforagedatalenif
1条回答
网友
1楼 · 发布于 2024-10-04 05:20:38

您可以在列表中这样使用if/else(技术上我们使用的是三元运算符):

bananasplit = [int(m) / int(b) if int(b) != 0 else int(m) for b,m in zip(denomerator, numerator)]

如果要使用异常处理,应使用循环而不是列表:

bananasplit = []
for b, m in zip(denomerator, numerator):
    try:
        bananasplit.append(int(m)/int(b))
    except ZeroDivisionError:
        bananasplit.append(int(m))

相关问题 更多 >