从CSV提取AFG国家人口数据后无法计算平均值的问题求助
解决AFG人口平均值计算问题
你的代码有几个关键问题导致无法计算平均值,直接给你修正后的方案:
问题分析
- 每次循环只创建单元素列表
a=[population],没有累积所有符合条件的人口数据 - Python普通列表没有
mean()方法,得用sum()除以len()计算平均值 - 人口数据是字符串类型,必须转成整数才能参与数值运算
- 平均值应该在收集完所有数据后计算,不是每循环一次就算一次
修正后的代码
import csv # 别忘了导入csv模块,原代码漏了这行 # 初始化空列表存储所有AFG的人口数据 afg_populations = [] with open('ciudades.csv', 'r') as city: # 用with语句自动关闭文件更安全 lineas = csv.reader(city) next(lineas) # 如果csv第一行是表头,就跳过;没有表头就删掉这行 for row in lineas: # 按列索引取值更稳妥,避免变量名冲突(原代码里的a是循环变量,又用来存列表,会混乱) _, name, countrycode, district, population = row if countrycode == 'AFG': # 转成整数后添加到列表 afg_populations.append(int(population)) # 计算并打印平均值 if afg_populations: # 先判断列表不为空,避免除以0报错 average = sum(afg_populations) / len(afg_populations) print(f"AFG城市人口平均值: {average:.2f}") else: print("没有找到AFG的人口数据")
代码说明
- 用
with语句打开文件,不用手动关闭,更安全 next(lineas)用来跳过表头行(如果你的csv文件第一行是列名的话),如果没有表头可以删除这行- 用
afg_populations列表累积所有符合条件的人口整数 - 循环结束后统一计算平均值,用
sum()求和,len()取数量,相除得到平均值 - 加了空列表判断,避免没有数据时出现除以0的错误
运行这段代码后,就能得到你要的AFG城市人口平均值了。
内容的提问来源于stack exchange,提问作者Joan Lopez
相关产品推荐
相关产品推荐

