Python计算CSV列平均值结果偏差及除零错误问题求助
问题修复说明
平均值计算偏差的原因
- 计数器
lenl初始值设置错误:初始设为1.0后,每匹配1条符合条件的记录加1,最终计算时分母为「符合条件的记录总数+1」,相当于多计入了1条不存在的样本,导致结果比真实值偏低,完全匹配你遇到的偏差表现。 - 冗余运算问题:平均值计算放在了循环内部,虽然最终返回的是最后一次计算的全量结果,但属于无意义的重复运算。
初始lenl=0.0触发除零错误的原因
平均值计算逻辑放在了循环体内部,若遍历的第一条记录不符合筛选条件,lenl还未完成递增就会执行除法运算,此时lenl仍为0,直接触发除零报错,哪怕后续存在符合条件的记录,程序也会在第一次循环时崩溃。
额外注意点
原代码中csv_reader属于写法错误,Python标准csv库的读取方法是csv.reader(),且需要传入文件对象而非直接传文件名,否则会触发运行报错。
修复后完整代码
import csv date_index = 0 temp_index = 2 def average_temperature(weather, filter): # 补充文件打开逻辑,编码可根据CSV实际存储格式调整 thefile = csv.reader(open("Temperatures.csv", encoding="utf-8")) suml = 0.0 lenl = 0.0 for row in thefile: if filter in row[date_index]: suml += float(row[temp_index]) lenl += 1.0 # 遍历完成后统一计算平均值,同时处理无匹配记录的边界场景 if lenl == 0: # 无匹配记录时可根据业务需求调整返回值,比如返回None或抛出明确提示 return 0.0 return suml / lenl
内容的提问来源于stack exchange,提问作者Breezy
相关产品推荐
相关产品推荐

