使用 Python 进行 COVID-19 数据分析

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用Python分析新冠疫情数据。新冠疫情对全球产生了重大影响,了解这些数据对于追踪病毒传播和做出明智决策至关重要。

👀 预览

{
  "确诊病例": {
    "非洲": 1203094,
    "美洲": 6396173,
    "亚洲": 6480321,
    "欧洲": 3450299,
    "大洋洲": 27346,
    "其他地区": 721,
    "总计": 17557954
  },
  "死亡病例": {
    "非洲": 28289,
    "美洲": 254610,
    "亚洲": 133186,
    "欧洲": 206438,
    "大洋洲": 576,
    "其他地区": 15,
    "总计": 623114
  },
  "康复病例": {
    "非洲": 930536,
    "美洲": 5087347,
    "亚洲": 5163062,
    "欧洲": 1927545,
    "大洋洲": 21892,
    "其他地区": 651,
    "总计": 13131033
  },
  "现存病例": {
    "非洲": 244269,
    "美洲": 1054216,
    "亚洲": 1184073,
    "欧洲": 1316316,
    "大洋洲": 4878,
    "其他地区": 55,
    "总计": 3803807
  }
}

🎯 任务

在这个项目中,你将学习:

  • 如何设置开发环境并安装所需的Python库
  • 如何理解新冠疫情数据的结构和内容
  • 如何实现一个将国家名称转换为大洲名称的函数
  • 如何处理新冠疫情数据并计算每个大洲的汇总统计信息
  • 如何测试代码并验证输出

🏆 成果

完成这个项目后,你将能够:

  • 了解如何在Python中处理CSV数据
  • 实现处理和分析数据的函数
  • 在不同格式之间转换数据(例如,CSV到JSON)
  • 积累数据分析和可视化的经验
  • 通过数据驱动的见解为理解新冠疫情做出贡献

准备环境

在这一步中,你将学习如何为新冠疫情数据分析项目设置环境。

  1. 打开终端并导航到/home/labex/project目录。
  2. 通过运行以下命令安装所需的Python库:
python3 -m pip install pandas country-converter

这将安装项目所需的pandascountry-converter库。

理解数据

新冠疫情数据以CSV文件形式提供,位于/home/labex/project目录中。该文件包含以下列:

  • Country_Region:国家或地区的名称。
  • Confirmed:新冠确诊病例总数。
  • Deaths:新冠死亡病例总数。
  • Recovered:新冠康复病例总数。
  • Active:现存新冠病例总数。

你的任务是处理这些数据,并计算每个大洲的汇总统计信息。

实现 country_to_continent 函数

第一步是创建一个能将国家名称转换为相应大洲名称的函数。在/home/labex/project目录下创建一个名为covid.py的新文件,并添加以下代码:

import country_converter as coco

def country_to_continent(country_name):
    """此函数接受一个国家名称并返回大洲名称。"""
    try:
        ## 将国家名称转换为大洲名称
        if country_name == "钻石公主号" 或 country_name == "赞丹号":
            return "其他地区"
        country_continent_name = coco.convert(names=country_name, to="continent")
        ## 如果未找到国家名称,则返回“其他地区”
        if country_continent_name == "未找到":
            return "其他地区"
        return country_continent_name
    except:
        return "其他地区"

此函数使用country-converter库将国家名称转换为相应的大洲名称。如果未找到国家名称,则返回“其他地区”。

实现 count 函数

接下来,你需要实现 count 函数,该函数将处理新冠疫情数据并返回每个大洲的汇总统计信息。将以下代码添加到 covid.py 文件中:

import json
import pandas as pd

def count(data):
    """此函数接受一个文件路径,并返回每个大洲的确诊、死亡、康复和现存病例总数。"""
    ## 从文件中读取数据
    df = pd.read_csv(data)
    ## 用0填充缺失值
    df.fillna(0, inplace=True)
    ## 删除有缺失值的行
    df = df[df["Confirmed"] == df["Deaths"] + df["Recovered"] + df["Active"]]
    ## 将国家名称转换为大洲名称
    df["Continent"] = df["Country_Region"].apply(country_to_continent)
    ## 将数据类型转换为整数
    df[["Confirmed", "Deaths", "Recovered", "Active"]] = df[
        ["Confirmed", "Deaths", "Recovered", "Active"]
    ].astype(int)
    ## 选择感兴趣的列并将其转换为字典
    df = df[["Continent", "Confirmed", "Deaths", "Recovered", "Active"]]
    result = df.groupby("Continent").sum().to_dict()
    ## 为每个大洲添加总数
    for key in result.keys():
        result[key]["Total"] = sum(result[key].values())
    return json.dumps(result)

此函数从CSV文件中读取新冠疫情数据,处理数据,并以JSON格式返回每个大洲的汇总统计信息。

测试代码

要测试代码,你可以在终端中运行以下命令:

python3 covid.py

这将执行 count 函数,并将生成的JSON数据打印到控制台。

验证输出

count 函数的输出应该是一个JSON字符串,看起来类似于以下内容:

{
  "Confirmed": {
    "非洲": 1203094,
    "美洲": 6396173,
    "亚洲": 6480321,
    "欧洲": 3450299,
    "大洋洲": 27346,
    "其他地区": 721,
    "总计": 17557954
  },
  "Deaths": {
    "非洲": 28289,
    "美洲": 254610,
    "亚洲": 133186,
    "欧洲": 206438,
    "大洋洲": 576,
    "其他地区": 15,
    "总计": 623114
  },
  "Recovered": {
    "非洲": 930536,
    "美洲": 5087347,
    "亚洲": 5163062,
    "欧洲": 1927545,
    "大洋洲": 21892,
    "其他地区": 651,
    "总计": 13131033
  },
  "Active": {
    "非洲": 244269,
    "美洲": 1054216,
    "亚洲": 1184073,
    "欧洲": 1316316,
    "大洋洲": 4878,
    "其他地区": 55,
    "总计": 3803807
  }
}

此输出表示每个大洲的汇总统计信息,包括确诊病例、死亡病例、康复病例和现存病例的总数。

恭喜你!你已经完成了新冠疫情数据分析项目。如果你有任何问题或疑问,请随时提问。

✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在LabEx中练习更多实验来提升你的技能。