当前位置: 首页 > news >正文

各国健康指标数据查询

目录

一、分步骤去逐步完善

步骤 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:

相关文章:

  • P48-56 应用游戏标签
  • PCIe控制逻辑介绍(一)
  • GitHub中多个PR时,如何协同合并和管理
  • 【计算机网络】TCP为什么可靠?解决了哪些问题?
  • JPress安装(Docker)
  • iMeta | 临床研究+scRNA-seq的组合思路 | 真实世界新辅助研究,HER2⁺就一定受益?单细胞揭示真正的“疗效敏感克隆”
  • 【BUG】mmdetection ValueError: need at least one array to concatenate
  • 【Qt4】Qt4中实现PDF预览
  • 【东枫科技】代理英伟达产品:智能网卡的连接线
  • URP - 深度图
  • CSS网格布局
  • UE5 ML机械学习肌肉反应与布料反应
  • 大疆三方云平台部署
  • Linux grep 命令详解及示例大全
  • 多线程“CPU 飙高”问题:如何确保配置的线程数与CPU核数匹配(Java、GoLang、Python )中的最佳实践解决方案
  • 可检查异常与不可检查异常
  • suna工具调用可视化界面实现原理分析(三)
  • 【神经网络、Transformer及模型微调】
  • Windows11下ESP-IDF开发环境搭建【基于Cursor/VS Code插件】
  • 2025-05-06 滑动窗口最大值
  • 外交部介绍中国赞比亚共同举办人工智能能力建设主题活动情况
  • 李云泽:小微企业融资协调工作机制已发放贷款12.6万亿元
  • 韩正出席庆祝中国欧盟建交50周年招待会并致辞
  • 女租客欠租后失联,房东开门后无处下脚:40平公寓变垃圾场
  • 新闻1+1丨多地政府食堂开放 “舌尖上的服务”,反映出怎样的理念转变?
  • 贵州黔西市载人游船倾覆事故已致3人遇难,14人正在搜救中