如何用简洁Pythonic代码计算CSV文件中high列的平均值?
解决CSV文件"high"列平均值计算的Python风格方案
我来帮你搞定这个问题!先看看你现有代码里的小bug,再给你几个简洁、符合Python风格的解决方案~
首先修正你现有代码的问题
你写的代码里,循环计算了high = int(row['high']),但没有把这个值添加到highs列表中,导致最后highs是空的,执行sum(highs)/len(highs)会报错。修正后的基础版本如下:
import csv with open('2010-Jan-June.csv', 'r', encoding='utf8', newline='') as f: highs = [] for row in csv.DictReader(f, delimiter=','): highs.append(int(row['high'])) # 关键:把high添加到列表 print(sum(highs)/len(highs))
更Pythonic的简洁方案
方案1:用生成器表达式节省内存(适合大文件)
不需要显式构建完整列表,用生成器逐行读取计算,内存占用更低,同时避免空文件除以0的风险:
import csv with open('2010-Jan-June.csv', 'r', encoding='utf8', newline='') as f: reader = csv.DictReader(f) total_high = 0 count = 0 for row in reader: total_high += int(row['high']) count += 1 print(total_high / count if count > 0 else 0)
方案2:一行搞定的pandas方案(最简洁)
如果可以使用第三方库,pandas处理CSV数据堪称神器,一行代码就能完成计算,还自动处理空值、类型转换等细节:
import pandas as pd # 读取CSV并直接计算"high"列的平均值 print(pd.read_csv('2010-Jan-June.csv')['high'].mean())
内容的提问来源于stack exchange,提问作者ArchivistG
相关产品推荐
相关产品推荐

