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

Python初学者作业求助:用Numpy实现CSV变量日平均值计算函数

解决思路与代码实现

我们可以用numpy完成这个任务,核心分为读取文件、分组统计、生成全年结果三个核心步骤,完全不用Pandas:

步骤说明

  • 读取CSV并定位变量列:用numpy读取文件,通过表头找到目标变量所在的列
  • 按日期分组存值:用字典存储每天的所有变量数据,方便后续计算平均
  • 生成365天结果:覆盖2021年全年每一天,确保结果刚好365个值

完整代码

import numpy as np

def daily_average(data, csv_file_name1: str, variable: str):
    # 读取CSV文件,保留表头和所有数据
    raw_data = np.genfromtxt(
        csv_file_name1,
        delimiter=' ',
        skip_header=0,
        dtype=None,
        encoding='utf-8'
    )
    
    # 提取表头,找到目标变量的列索引
    header = raw_data[0]
    try:
        var_col_idx = list(header).index(variable)
    except ValueError:
        raise ValueError(f"文件中不存在变量 {variable}")
    
    # 提取数据行(跳过表头)
    data_rows = raw_data[1:]
    
    # 用字典存储每天的变量值列表
    daily_values = {}
    for row in data_rows:
        date = row[0]
        value = float(row[var_col_idx])
        if date not in daily_values:
            daily_values[date] = []
        daily_values[date].append(value)
    
    # 生成2021年全年的所有日期(平年刚好365天)
    start_date = np.datetime64('2021-01-01')
    end_date = np.datetime64('2021-12-31')
    all_dates = np.arange(start_date, end_date + np.timedelta64(1, 'D'), dtype='datetime64[D]')
    
    # 计算每天的平均值,缺失数据用NaN标记
    daily_avg = []
    for date in all_dates:
        date_str = str(date)
        if date_str in daily_values:
            daily_avg.append(np.mean(daily_values[date_str]))
        else:
            daily_avg.append(np.nan)
    
    return np.array(daily_avg)

代码细节解释

  1. 文件读取:np.genfromtxt支持读取混合类型数据,能同时保留字符串格式的日期和数值型的变量数据
  2. 变量列定位:通过表头列表查找索引,避免硬编码列位置,适配不同的CSV结构
  3. 分组存储:字典的键是日期字符串,值是当天所有变量值的列表,方便后续批量计算均值
  4. 全年日期生成:用numpy.datetime64生成连续日期,确保结果严格对应365天,不会遗漏或多算
  5. 缺失值处理:如果某天没有数据,返回NaN表示缺失,你也可以根据需求改成0或其他默认值

使用示例

假设你的CSV文件名为weather_data.csv,要计算variable2的日平均值,调用方式如下:

avg_result = daily_average(None, "weather_data.csv", "variable2")
print(avg_result)

注:函数签名中的data参数看起来没有实际作用,调用时传入None即可,要是作业里的笔误,也可以直接删除这个参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:25:14