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

Python实现CSV指定年份预期寿命均值、最值及对应国家统计

Python预期寿命数据集分析代码补全

数据集与需求说明

  • 所用CSV数据集共包含4个字段:Entity(国家实体)、Code(国家编码)、Year(年份)、Life expectancy (years)(预期寿命),总计16000条记录
  • 已完成功能:
    • 查询全数据集范围内最低预期寿命对应的年份与国家
    • 查询全数据集范围内最高预期寿命对应的年份与国家
  • 待实现功能:支持用户输入指定年份,计算该年度所有国家的平均预期寿命,同时定位该年度预期寿命最高、最低的对应国家及数值,按规范格式输出

原代码待修复问题

  1. 用户输入的年份默认是字符串类型,未做整数转换,无法和数据集中存储的整数类型年份匹配,筛选逻辑会失效
  2. 年份筛选、统计逻辑的执行顺序在输出语句之后,运行时会出现变量未定义错误
  3. 缺失指定年份平均预期寿命计算、年度最高/最低预期寿命提取的核心逻辑
  4. 存在多余的调试打印语句,会输出冗余的原始数据

补全后完整可运行代码

import csv
print("Enter a year to find the average life expectancy for that year: ")
input_year = int(input("\nYEAR: "))


# 筛选指定年份的所有数据
def subset_year(all_data, selected_year):
    year_only = []
    for entity, code, year, expectancy in all_data:
        if year == selected_year:
            year_only.append((entity, code, year, expectancy))
    return year_only

def pr_row(headers, row):
    return ", ".join(f"{label}:{value}" for label, value in zip(headers, row))

data = []
with open(r"C:\Users\X230\Desktop\Python class\life-expectancy.csv") as database:
    reader = csv.reader(database)
    # 读取表头
    parts = next(reader)
    for line in reader:
        entity, code, year, expectancy = line
        # 年份转整数、预期寿命转浮点数存储
        data.append([entity, code, int(year), float(expectancy)])

# 按预期寿命字段取值的排序key函数
def key_year(row):
    return row[3]

# 输出全数据集统计结果
print()
print("The overall max life expectancy is: ", pr_row(parts, max(data, key=key_year)))
print("The overall min life expectancy is: ", pr_row(parts, min(data, key=key_year)))

# 处理指定年份的统计逻辑
year_data = subset_year(data, input_year)
if not year_data:
    print(f"\n未查询到{input_year}年的有效统计数据")
else:
    # 计算年度平均预期寿命
    avg_expectancy = sum(row[3] for row in year_data) / len(year_data)
    # 提取年度最高、最低预期寿命记录
    year_max_row = max(year_data, key=key_year)
    year_min_row = min(year_data, key=key_year)
    # 按要求格式输出
    print(f"\n===== {input_year}年 预期寿命统计 =====")
    print(f"该年度所有国家平均预期寿命:{avg_expectancy:.2f}岁")
    print(f"该年度最高预期寿命所属国家:{year_max_row[0]},数值为{year_max_row[3]:.2f}岁")
    print(f"该年度最低预期寿命所属国家:{year_min_row[0]},数值为{year_min_row[3]:.2f}岁")

代码逻辑说明

  • 对用户输入的年份做整数转换,解决类型不匹配导致的筛选失效问题
  • 调整执行顺序,先完成数据筛选、统计计算再执行输出
  • 增加空数据判断,避免用户输入不存在的年份时触发除零、取max/min的运行报错
  • 数值输出保留2位小数,提升可读性
  • 移除了原代码中多余的调试打印语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:27:25