如何在Python 3中逐行遍历CSV数值数据并按10行分组求均值
解析单列CSV并按10行分组计算均值
你的问题核心是没搞清楚单列CSV的结构:每行只有一个数值,所以row[1]是不存在的,这也是你之前尝试相加时出错的原因。下面直接给你可行的解决方案,按需求实现每10行计算均值并做条件判断:
步骤说明
- 先读取CSV文件,把所有数值转成
float类型存入列表,方便后续处理 - 按每10行一组拆分数据,最后一组不足10行也正常处理
- 对每组计算均值,然后根据均值执行你的条件判断逻辑
完整代码示例
import csv # 读取所有数值到列表 data = [] with open('grayramp_line28_NoHblank.csv', newline='') as f: reader = csv.reader(f) for row in reader: # 单列数据,取row[0]转成float num = float(row[0]) data.append(num) # 按每10行分组处理 group_size = 10 for i in range(0, len(data), group_size): # 取出当前组的10个数据(最后一组可能不足10个) group = data[i:i+group_size] # 计算均值 avg = sum(group) / len(group) print(f"第{i//group_size + 1}组均值: {avg:.4f}") # 这里写你的条件判断逻辑,示例: if avg > 0: print(" 均值大于0,执行对应操作") elif avg < -0.16: print(" 均值小于-0.16,执行对应操作") else: print(" 均值在范围内,执行对应操作")
关键说明
- 你的原始代码里
row[1]会引发索引错误,因为CSV是单列,每行只有row[0]有效 - 用
range(0, len(data), group_size)可以自动按步长10遍历所有分组,不用手动计数 - 最后一组不足10行时,
data[i:i+group_size]会自动取到列表末尾,len(group)会正确计算当前组的行数,均值计算不会出错
内容的提问来源于stack exchange,提问作者forkram
相关产品推荐
相关产品推荐

