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

注:文章内容参考了莫烦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}")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺坎普的风间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值