各国健康指标数据查询

目录

一、分步骤去逐步完善

步骤 1:准备文件

步骤 2:读取文件

逐行解释

步骤 3:处理一行数据

步骤 4:构建年份字典

逐行解析

1. 创建空字典

2. 初始化列索引

3. 遍历年份范围

4. 防止索引越界

5. 转换数据并处理异常

6. 存入字典并更新索引

7. 打印结果

步骤 5:构建全局字典

逐行解析

1. 创建外层字典

2. 遍历文件中的行

3. 分割每行数据

4. 提取国家名称

5. 创建年份字典

6. 存入外层字典

7. 输出结果

步骤 6:查询数据

逐行解析

1. 显示欢迎信息和可查询国家

2. 获取用户输入

3. 查询并输出结果

二、完整代码


一、分步骤去逐步完善

步骤 1:准备文件

  1. 将 CSV 文件 人口增长(年度百分比).csv 放在一个你能记住的位置(比如桌面)。

  2. 确认文件路径是否正确:

    • 例如,如果文件在桌面,路径可能是:
      r"C:\Users\你的用户名\Desktop\人口增长(年度百分比).csv"

    • 代码中需要用 r 前缀处理路径中的反斜杠。

步骤 2:读取文件

# 定义文件路径(替换为你的实际路径)
file_path = r"D:\Python\健康医学数据分析\第6章 文件与数据处理源代码\人口增长(年度百分比).csv"

# 打开文件(使用 with 自动关闭文件)
with open(file_path, "r", encoding="utf-8") as f:
    # 读取所有行(每行是一个字符串)
    lines = f.readlines()
    print("文件内容示例(前5行):")
    for line in lines[:5]:
        print(line.strip())  # 去掉换行符

逐行解释

  1. file_path = r"..."

    • 作用:定义文件的完整路径。

    • 注意

      • r 表示“原始字符串”,防止路径中的反斜杠 \ 被错误转义(例如 \n 会被误认为是换行符)。

      • 你需要将路径替换为你的 CSV 文件实际位置。

  2. with open(...) as f:

    • 作用:安全打开文件。

    • 优点:使用 with 语句后,文件会在代码块结束后自动关闭,无需手动调用 f.close()

  3. lines = f.readlines()

    • 作用:一次性读取文件的所有行,存入列表 lines

    • 结果lines 是一个列表,每个元素是文件的一行内容(字符串形式)。

  4. print("文件内容示例(前5行):")

    • 作用:输出提示信息,告诉用户接下来要显示文件的前5行内容。

  5. for line in lines[:5]:

    • 作用:遍历 lines 列表的前5个元素(即文件的前5行)。

    • lines[:5] 的含义:列表切片,取从第0个元素到第4个元素(前5行)。

  6. print(line.strip())

    • line.strip():去掉字符串首尾的空白字符(如空格、换行符 \n、制表符 \t 等)。

    • 目的:让输出更整洁,避免每行末尾有多余的换行。

步骤 3:处理一行数据

# 取一行示例数据(假设是第6行)
sample_line = lines[5].strip()  # 去掉首尾空格和换行符
print("原始行数据:", sample_line)

# 按逗号分割成列表
parts = sample_line.split(',')
print("分割后的列表:", parts)

# 提取国家名称(假设在第一列)
country = parts[0]
print("国家名称:", country)

# 提取1960年的数据(假设在第5列,索引为4)
value_1960 = parts[4]
print("1960年数据:", value_1960)
  1. 索引从0开始
    Python 中列表索引从 0 开始计数:

    • parts[0] → 第1列(国家名称)

    • parts[4] → 第5列(1960年数据)

  2. 假设数据位置固定

    • 这段代码假设国家名称在第1列,1960年数据在第5列。

    • 如果实际 CSV 列顺序不同,需要调整索引。

  3. 潜在错误

    • 如果行数不足6行(lines[5] 会报 IndexError)。

    • 如果分割后的 parts 列数不足5列(parts[4] 会报 IndexError)。

步骤 4:构建年份字典

# 创建一个字典存储年份数据
year_data = {}

# 从第5列(索引4)开始,遍历1960~2021年
start_column = 4
for year in range(1960, 2022):
    if start_column >= len(parts):
        break  # 防止越界
    # 将字符串转为浮点数(无法转换则设为None)
    try:
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值