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

如何用Python计算CSV文件中温度高于12的各区间平均值?

解决方案:用Python计算温度高于12的连续区间平均值

没问题,我来帮你搞定这个需求!下面提供两种实现方式——一种用pandas(高效简洁,适合处理批量数据),另一种纯Python原生代码(无需第三方库,适合轻量场景)。

方法一:使用pandas库(推荐)

pandas的分组功能可以快速识别连续的温度区间,代码逻辑清晰易维护:

import pandas as pd

# 1. 读取CSV文件(假设你的文件名为temperature_data.csv,第一行是表头R3,R4)
df = pd.read_csv('temperature_data.csv')

# 2. 标记温度是否高于12
df['is_above_12'] = df['R4'] > 12

# 3. 为连续的高温区间创建分组标签
# 原理:当温度从"低于12"切换到"高于12"时,分组号递增
df['group_id'] = (~df['is_above_12']).cumsum()

# 4. 过滤出高温区间并计算每个分组的平均值
high_temp_groups = df[df['is_above_12']].groupby('group_id')['R4'].mean()

# 5. 将结果赋值给T1、T2、T3(对应3个高温区间)
T1, T2, T3 = high_temp_groups.values

# 输出结果
print(f"T1: {round(T1, 4)}, T2: {round(T2, 4)}, T3: {round(T3, 4)}")

代码解释:

  • (~df['is_above_12']).cumsum():对"温度低于12"的布尔值取反后累加,这样连续的高温行会被分配到同一个group_id
  • groupby('group_id')['R4'].mean():按分组计算每个区间的温度平均值
  • 最后直接通过values提取均值,对应你需要的T1、T2、T3

方法二:纯Python原生实现(无需第三方库)

如果你不想依赖pandas,用原生代码也能实现,核心是遍历数据并收集连续的高温值:

# 1. 读取CSV文件并提取温度数据
temperature_list = []
with open('temperature_data.csv', 'r') as file:
    next(file)  # 跳过表头行
    for line in file:
        # 分割每行数据,提取温度值(注意转换为浮点数)
        _, temp_str = line.strip().split(',')
        temperature_list.append(float(temp_str))

# 2. 识别连续的高温区间
high_temp_intervals = []
current_interval = []

for temp in temperature_list:
    if temp > 12:
        current_interval.append(temp)
    else:
        # 当遇到低于12的温度时,若当前区间有数据则保存
        if current_interval:
            high_temp_intervals.append(current_interval)
            current_interval = []
# 处理文件末尾的最后一个高温区间(如果存在)
if current_interval:
    high_temp_intervals.append(current_interval)

# 3. 计算每个区间的平均值
T1, T2, T3 = [sum(interval) / len(interval) for interval in high_temp_intervals]

# 输出结果
print(f"T1: {round(T1, 4)}, T2: {round(T2, 4)}, T3: {round(T3, 4)}")

代码解释:

  • 遍历温度列表时,持续收集高于12的温度值到current_interval
  • 一旦遇到低于12的温度,就把当前收集的区间存入high_temp_intervals,并重置当前区间
  • 最后对每个区间计算均值,得到T1、T2、T3

验证示例数据

用你提供的示例数据测试,两种方法都会得到:

  • T1:第一个15℃左右区间的平均值
  • T2:第二个15℃左右区间的平均值
  • T3:第三个16℃左右区间的平均值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 21:32:35