注:文章内容参考了莫烦python
一、数据来源
数据来自于Kaggle公开免费数据集,需要的伙伴可以自行到这里下载。
二、展示数据
我们用一个字典存储csv数据的第一行、每一行开头的日期以及除了这两者外的数据。
import csv
import numpy as np
with open("./2020年疫情数据/day_wise.csv", "r", encoding='utf-8') as f:
csvfile = f.readlines()
COVID_19_data = {
"header": [i for i in csvfile[0].strip().split(",")],
"date":[],
"data":[],
}
# 存储日期信息和疫情信息
for i in range(1, len(csvfile)):
COVID_19_data["date"].append(csvfile[i].strip().split(',')[0])
COVID_19_data['data'].append([float(n) for n in csvfile[i].strip().split(',')[1:]])
COVID_19_data['data'] = np.array(COVID_19_data['data'])
运行截图如下:
三、任务1,获取 2020 年 2 月 3 日的所有数据
date_index = COVID_19_data["date"].index('2020-02-03') # 找到时间索引
date_data = COVID_19_data['data'][date_index] # 找到时间对应的疫情数据
# 打印数据
for i in range(len(date_data)):
print(COVID_19_data['header'][i+1] + ":\t" + str(date_data[i]) + '\n')
运行截图如下:
四、任务2,2020 年 1 月 24 日统计的累积确诊病例有多少个?
row_index = COVID_19_data['date'].index("2020-01-24") # 确定行坐标
column_index = COVID_19_data['header'].index('Confirmed') # 确定列坐标
num = COVID_19_data['data'][row_index, column_index-1]
print(num)
五、任务3,2020 年 7 月 23 日的新增死亡数是多少?
row_index = COVID_19_data['date'].index("2020-07-23") # 确定行坐标
column_index = COVID_19_data['header'].index('New deaths') # 确定列坐标
num = COVID_19_data['data'][row_index, column_index-1]
print(num)
六、任务4,从 1 月 25 日到 7 月 22 日,一共增长了多少确诊病例?
row0125 = COVID_19_data['date'].index("2020-01-25")
row0722 = COVID_19_data['date'].index("2020-07-22")
column = COVID_19_data['header'].index('New cases')
new_cases = COVID_19_data['data'][row0125+1:row0722+1, column-1]
all = new_cases.sum()
print(all)
七、任务5, 新增确诊与新增恢复的比例,平均值和标准差
new_cases_idx = COVID_19_data["header"].index("New cases")
new_recovered_idx = COVID_19_data["header"].index("New recovered")
# 比例
not_zero_mask = COVID_19_data['data'][:, new_recovered_idx-1] != 0
ratio = COVID_19_data['data'][not_zero_mask, new_cases_idx-1] / COVID_19_data['data'][not_zero_mask, new_recovered_idx-1]
# 平均值
mean = ratio.mean()
# 标准差
std = ratio.std()
print(f"平均值为{mean},标准差为{std}")