如何用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_idgroupby('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
相关产品推荐
相关产品推荐

