You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV流感数据处理问题:提取目标年份活动等级并计算均值

问题解决:按年份计算北卡罗来纳州流感活动等级均值

原代码的问题分析

  • 筛选条件错误:row[0] == 'Level'不成立,因为row[0]的实际格式是Level 1、Level 2这类带数字的字符串,这个条件会过滤掉所有有效数据
  • 数据存储方式不合理:用单一列表存储所有等级,无法区分不同年份的数据,后续无法按年份计算均值

修改后的完整代码

import csv

with open('influenza (2).csv', 'r') as influenza_file:
    contents_1 = csv.reader(influenza_file)
    rows = []
    row_count = 1

    for row in contents_1:
        if 16259 <= row_count <= 16751:
            columns_selected = [row[3], row[7]]
            rows.append(columns_selected)
        row_count += 1

target_year = ['2013-14', '2014-15', '2015-16', '2016-17', '2017-18', '2018-19', '2019-20', '2020-21', '2021-22']

# 用字典按年份存储对应的等级数值
year_levels = {year: [] for year in target_year}

for row in rows:
    level_str, year = row[0], row[1]
    # 只处理目标年份内的数据,且等级字符串符合Level X格式
    if year in target_year and level_str.startswith('Level '):
        # 提取数字部分并转为整数
        level = int(level_str.replace('Level ', ''))
        year_levels[year].append(level)

# 计算每个年份的平均等级
year_avg = {}
for year, levels in year_levels.items():
    if levels:  # 避免空列表除以0
        year_avg[year] = sum(levels) / len(levels)
    else:
        year_avg[year] = 0  # 或根据需求设为None

# 输出结果
for year, avg in year_avg.items():
    print(f"{year} 年度平均流感活动等级: {avg:.2f}")

修改说明

  1. 修正筛选逻辑:将row[0] == 'Level'改为level_str.startswith('Level '),确保能匹配所有带等级的字符串
  2. 改用字典存储:创建year_levels字典,键是目标年份,值是对应年份的所有等级数值列表,方便按年份分组
  3. 数据类型转换:把提取出的等级字符串转为整数,才能进行均值计算
  4. 均值计算与输出:遍历字典计算每个年份的平均值,处理空数据的情况,最后格式化输出结果

内容的提问来源于stack exchange,提问作者Nick Brewen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:35:00