疫情数据微处理——Numpy实战

注:文章内容参考了莫烦python

一、数据来源

数据来自于Kaggle公开免费数据集,需要的伙伴可以自行到这里下载。 

疫情数据微处理——Numpy实战_第1张图片

二、展示数据

我们用一个字典存储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'])

运行截图如下:

疫情数据微处理——Numpy实战_第2张图片

三、任务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')

运行截图如下:

疫情数据微处理——Numpy实战_第3张图片 

四、任务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}")

你可能感兴趣的:(#,python进阶知识,信息管理科研入门必备技能,numpy,python,数据分析)