介绍
在这个项目中,你将学习如何使用 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)
- 积累数据分析和可视化的经验
- 通过数据驱动的见解为理解新冠疫情做出贡献
准备环境
在这一步中,你将学习如何为新冠疫情数据分析项目设置环境。
- 打开终端并导航到
/home/labex/project目录。 - 通过运行以下命令安装所需的 Python 库:
python3 -m pip install pandas country-converter
这将安装项目所需的pandas和country-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 中练习更多实验来提升你的技能。



