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

如何编写代码批量计算任意多列均值并输出至CSV文件

嘿,我来帮你搞定批量计算各探头每日均值的需求!下面给你两种实用的实现方案,你可以根据自己的技术栈和数据情况选择:

方案一:使用Python标准库 csv 模块

如果不想额外安装第三方库,用Python自带的csv模块就能搞定,代码逻辑清晰,适合理解底层流程:

import csv

def calculate_daily_averages(input_file, output_file):
    # 读取输入文件的所有数据
    with open(input_file, 'r', newline='') as infile:
        reader = csv.reader(infile)
        # 提取表头(也就是各个探头的名称)
        probe_names = next(reader)
        # 读取所有行的原始数据
        raw_data = list(reader)
    
    # 将字符串格式的数值转为浮点型,方便计算
    numeric_data = []
    for row in raw_data:
        try:
            numeric_row = [float(val) for val in row]
            numeric_data.append(numeric_row)
        except ValueError:
            # 如果遇到非数值的单元格,可以选择跳过该行或者做其他处理
            print(f"跳过包含非数值的行:{row}")
    
    # 批量计算每一列的均值
    probe_averages = []
    for col_idx in range(len(probe_names)):
        # 提取当前探头的所有采集数据
        probe_values = [row[col_idx] for row in numeric_data]
        # 计算均值(确保数据不为空)
        if probe_values:
            avg = sum(probe_values) / len(probe_values)
            probe_averages.append((probe_names[col_idx], round(avg, 2)))  # 保留两位小数
        else:
            probe_averages.append((probe_names[col_idx], None))  # 空数据标记为None
    
    # 将结果写入输出CSV
    with open(output_file, 'w', newline='') as outfile:
        writer = csv.writer(outfile)
        # 写入结果表头
        writer.writerow(['探头名称', '每日平均值'])
        # 批量写入所有探头的均值
        writer.writerows(probe_averages)

# 替换成你的输入输出文件路径,直接调用函数即可
calculate_daily_averages('your_input_data.csv', 'daily_probe_averages.csv')

代码说明:

  • 先读取输入文件的表头和所有数据,把字符串转成数值类型
  • 遍历每一列(对应每个探头),提取该列所有数据计算均值
  • 处理了可能的非数值行,避免程序报错
  • 最后把探头名称和对应均值批量写入新的CSV文件
方案二:使用 pandas 库(推荐,代码更简洁)

如果可以安装第三方库,pandas处理表格数据效率极高,几行代码就能完成批量计算:

首先需要安装pandas(如果还没装):

pip install pandas

然后是核心代码:

import pandas as pd

# 读取输入CSV,默认第一行是表头(探头名称)
df = pd.read_csv('your_input_data.csv')

# 批量计算每列的均值,axis=0表示按列计算;忽略缺失值
daily_avg = df.mean(axis=0, skipna=True).reset_index()

# 重命名列名,让输出更清晰
daily_avg.columns = ['探头名称', '每日平均值']

# 将结果写入CSV,index=False表示不写入行索引
daily_avg.to_csv('daily_probe_averages.csv', index=False, float_format='%.2f')

代码说明:

  • pd.read_csv直接读取整个表格数据,无需手动处理行和列
  • mean(axis=0)一键计算所有列的均值,自动忽略缺失值
  • 最后用to_csv直接输出结果,还能指定数值格式(比如保留两位小数)

额外注意事项:

  • 确保输入文件路径正确,如果文件不在代码同目录,要写完整的绝对路径
  • 如果数据中有大量缺失值,可以先通过df.dropna()清理无效行,或者在计算时调整参数
  • 两种方案都支持任意数量的探头列,不管你有多少个探头,都能批量处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:50:28