python 新冠疫情2.0(加了个简单的可视化)

1.0 有一点解释

只有代码

import requests
import pandas as pd
import time
from matplotlib import pyplot as plt
import numpy as np


# 获取疫情数据
url = 'https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf'
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.50"
}
data = requests.get(url, headers=headers)

# print(data.json())

# 寻找累计数据
china_data = data.json()['data']['diseaseh5Shelf']['areaTree'][0]['children']

# 存放数据
data_li = []

# 从url 中提取数据
for child in china_data:

    data_dict={}
    data_dict['地区名称'] = child['name']
    data_dict['统计时间'] = child['date']
    data_dict['新增确认'] = child['total']['nowConfirm']
    data_dict['死亡人数'] = child['total']['dead']
    data_dict['治愈人数'] = child['total']['heal']
    data_dict['累计确诊'] = child['total']['confirm']
    data_dict['本土确诊'] = child['total']['provinceLocalConfirm']
    data_dict['无症状'] = child['total']['wzz']
    # print(data_dict)
    data_li.append(data_dict)


# 保存文件
df = pd.DataFrame(data_li)
today = time.strftime('%Y年%m月%d日', time.localtime())
df.to_csv(today+'全国疫情累计数据.csv', mode="w", encoding="utf-8")

# 可视化
# matplotlib设置默认字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 随便搞个 我也不是很会
df = pd.read_csv('2022年04月26日全国疫情累计数据.csv')
df = df.sort_values(by='新增确认', ascending=False)

x_label = np.array(df["地区名称"])

# 可视化数据 数量
x = np.arange(5)
# 数据情况 运行一下就懂了
y1 = np.array(df["新增确认"][:5])
y2 = np.array(df["治愈人数"][:5])
y3 = np.array(df['死亡人数'][:5])

# 表格参数(长宽高 那些)
fig = plt.figure(figsize=(10, 10))
plt.subplots_adjust(left=0.1, right=0.8, top=0.8, bottom=0.1)
plt.bar(x, y1, width=0.2, color='red', label='新增确认', edgecolor='k', linewidth=0.50)
plt.bar(x + 0.3, y2, width=0.2, color='yellow', label='治愈人数', edgecolor='k', linewidth=0.50)
plt.bar(x + 0.6, y3, width=0.2, color='blue', label='死亡人数', edgecolor='k', linewidth=0.50)
plt.xticks(x + 0.15, x_label[:5], size=12)
plt.yticks(size=12)
plt.legend(loc=(1, 0.5), ncol=1, frameon=False)
plt.grid(axis="y", c=(217 / 256, 217 / 256, 217 / 256))

# 启动
plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值