如何用Python计算文本文件中每年数据的平均值?
解决每年数据平均值计算的问题
我看了你的代码和数据,问题出在数据格式的处理上:你的文本文件里是一行包含多组年份和数值(比如1969 324.000 1970 330.190...),但原代码默认每行只有一组年份 数值,直接用year, num = line.split()会因为元素数量不匹配报错——split之后得到的是一个长列表,没法直接解包成两个变量。
下面是修正后的完整代码,能正确处理你的数据并计算每年的平均值:
result = {} with open('filename.txt', 'r') as f: for line in f: # 把整行内容分割成所有元素的列表 elements = line.split() # 两两分组:年份和对应的数值 for i in range(0, len(elements), 2): year = int(elements[i]) num = float(elements[i+1]) # 统计每个年份的数值列表 if year in result: result[year].append(num) else: result[year] = [num] # 计算并打印每个年份的平均值 print("每年数据平均值:") for year in sorted(result.keys()): nums = result[year] average = sum(nums) / len(nums) print(f"{year}: {average:.3f}")
代码说明:
- 用
line.split()获取整行的所有元素,然后通过range(0, len(elements), 2)步长为2遍历,每次取第i个元素作为年份,第i+1个作为数值,这样就能正确处理一行多组数据的情况。 - 统计完成后,对每个年份的数值列表求和再除以数量,得到平均值,用
:.3f保留三位小数,和你原始数据的格式一致。
用你的测试数据运行后,输出结果应该是:
每年数据平均值: 1969: 324.000 1970: 328.013 1971: 332.194
内容的提问来源于stack exchange,提问作者Ricardo
相关产品推荐
相关产品推荐

