利用Python获取新冠状病毒肺炎的疫情数据并进行可视化分析,看不懂你打我

本文介绍了如何利用Python从疫情数据报告网站获取信息,通过pyecharts进行数据可视化分析,包括数据爬取、处理、省份数据的转化与地图填充,并详细解释了数据存储至MySQL的过程。
摘要由CSDN通过智能技术生成

文章目录

数据挖掘案例:利用Python获取新冠状病毒肺炎的疫情数据并进行可视化分析

一、疫情数据报告网站地址

网站地址:https://news.qq.com/zt2020/page/feiyan.htm

数据来源:https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-28CXBTFt-1582118503090)(img/1582075629587.png)]

1.1 pyecharts介绍

pyecharts在本地就可以进行交互式画图

1.2 要用到的库

request爬虫

json处理数据

pandas处理数据

import request
import json
import pandas as np

1.3 爬取数据

1.3.1 方法1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVll0cSN-1582118488194)(img/1582113686860.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GoTywYif-1582118488194)(img/1582113715507.png)]

ua ,cokkies也可以不带,这个页面没有什么拦截,后面拦截的话可以再加

import requests
import json
import pandas as pd

def getData():
    url = 'https://news.qq.com/zt2020/page/feiyan.htm'
    headers = {
   
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
    }
    r = requests.get(url,headers)
    if r.status_code == 200:
         return r.text
getData()

爬取到了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LTsnuyy8-1582118488195)(img/1582113898046.png)]

怎么取出来呢

bs4

正则

xpath

都可以

1.3.2 方法2(采用)

网站上找直接获取数据的地方

1.地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JgD1MA0T-1582118488195)(img/1582114110467.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eINkOBlU-1582118488196)(img/1582114131238.png)]

这里面有每一天的数据

每个省份 地级市的数据

拿出这些数据源的地址

2.自己来获取试试看
import requests
import json
import pandas as pd

def getData():
    url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
    headers = {
   
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
    }
    r = requests.get(url,headers)
    if r.status_code == 200:
         return json.loads(r.text)
getData()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0FbQ3Vfn-1582118488196)(img/1582114203686.png)]

json转换成字典的了

二、爬取的数据初查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mUUnTNKv-1582118488197)(img/1582114226266.png)]

第一行不要,后面的有用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T7Ag1W1U-1582118488197)(img/1582114251659.png)]

对应之前的网页 ,1751这些都是有的,都不用计算了

三、爬取数据的处理

3.1 只要data的数据

3.2 再变成字典,用两次json.load

3.3 将字典命名成变量

import requests
import json
import pandas as pd

def getData():
    url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
    headers = {
   
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
    }
    r = requests.get(url,headers)
    if r.status_code == 200:
         return json.loads(json.loads(r.text)['data'])
data_dict = getData()

3.4 读取字典的键

data_dict.keys()

dict_keys(['lastUpdateTime', 'chinaTotal', 'chinaAdd', 'isShowAdd', 'showAddSwitch', 'chinaDayList', 'chinaDayAddList', 'dailyNewAddHistory', 'dailyDeadRateHistory', 'dailyHealRateHistory', 'areaTree', 'articleList'])

四、爬取数据的参数解析

1.lastUpdateTime

lastUpdateTime :最后更新时间

'2020-02-19 20:06:10'

2.chinaTotal

chinaTotal :累计值

  • confirm 确诊
  • heal 治愈
  • dead 死亡
  • nowConfirm 现有确诊
  • suspect 疑似
  • nowSevere 重症
{
   'confirm': 74281,
 'heal': 14479,
 'dead': 2009,
 'nowConfirm': 57793,
 'suspect': 5248,
 'nowSevere': 11977}

3.chinaAdd

chinaAdd :每日新增 和 chinaTotal字段一致

  • confirm 确诊

  • heal 治愈

  • dead 死亡

  • nowConfirm 现有确诊

  • suspect 疑似

  • nowSevere 重症

    {
         'confirm': 1753,
     'heal': 1918,
     'dead': 139,
     'nowConfirm': -304,
     'suspect': -994,
     'nowSevere': 236}
    

4.isShowAdd

前端进行判断的状态码

True

5.showAddSwitch

前端进行判断的状态码

{
   'all': True,
 'confirm': True,
 'suspect': True,
 'dead': True,
 'heal': True,
 'nowConfirm': True,
 'nowSevere': True}

6.chinaDayList

每一天的数据(2020.1.13-至今)

  • confirm 确诊
  • heal 治愈
  • dead 死亡
  • nowConfirm 现有确诊
  • suspect 疑似
  • nowSevere 重症
  • deadRate 死亡率
  • healRate 治愈率
  • date 日期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmDH45eF-1582118488198)(img/1582115367684.png)]

7.chinaDayAddList

同上一天比增加的数据

同比上一天新增加的数据 和 chinaDayList字段一致

  • confirm 确诊
  • heal 治愈
  • dead 死亡
  • nowConfirm 现有确诊
  • suspect 疑似
  • nowSevere 重症
  • deadRate 死亡率
  • healRate 治愈率
  • date 日期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yBWhyfaR-1582118488199)(img/1582115408770.png)]

8.dailyNewAddHistory

湖北内外每天新增确诊情况对比

  • date 日期
  • hubei 湖北新增人数
  • country 全国的新增人数
  • notHubei 湖北以外的新增人数
[{
   'date': '01.20', 'hubei': 72, 'country': 77, 'notHubei': 5},
 {
   'date': '01.21', 'hubei': 105, 'country': 149, 'notHubei': 44},
 {
   'date': '01.22', 'hubei': 69, 'country': 131, 'notHubei': 62},
 {
   'date': '01.23', 'hubei': 105, 'country': 259, 'notHubei': 154},
 {
   'date': '01.24', 'hubei': 180, 'country': 444, 'notHubei': 264},
 {
   'date': '01.25', 'hubei': 323, 'country': 688, 'notHubei': 365},
 {
   'date': '01.26', 'hubei': 371, 'country': 769, 'notHubei': 398},
 {
   'date': '01.27', 'hubei': 1291, 'country': 1771, 'notHubei': 480},
 {
   'date': '01.28', 'hubei': 840, 'country': 1459, 'notHubei': 619},
 {
   'date': '01.29', 'hubei': 1032, 'country': 1737, 'notHubei': 705},
 {
   'date': '01.30', 'hubei': 1220, 'country': 1982, 'notHubei': 762},
 {
   'date': '01.31', 'hubei': 1347, 'country': 2102, 'notHubei': 755},
 {
   'date': '02.01', 'hubei': 1921, 'country': 2590, 'notHubei': 669},
 {
   'date': '02.02', 'hubei': 2103, 'country': 2829, 'notHubei': 726},
 {
   'date': '02.03', 'hubei': 2345, 'country': 3235, 'notHubei': 890},
 {
   'date': '02.04', 'hubei': 3156, 'country': 3893, 'notHubei': 737},
 {
   'date': '02.05', 'hubei': 2987, 'country': 3697, 'notHubei': 710},
 {
   'date': '02.06', 'hubei': 2447, 'country': 3143, 'notHubei': 696},
 {
   'date': '02.07', 'hubei': 2841, 'country': 3401, 'notHubei': 560},
 {
   'date': '02.08', 'hubei': 2147, 'country': 2656, 'notHubei': 509},
 {
   'date': '02.09', 'hubei': 2618, 'country': 3062, 'notHubei': 444},
 {
   'date': '02.10', 'hubei': 2097, 'country': 2484, 'notHubei': 387},
 {
   'date': '02.11', 'hubei': 1638, 'country': 2022, 'notHubei': 384},
 {
   'date': '02.12', 'hubei': 14840, 'country': 15153, 'notHubei': 313},
 {
   'date': '02.13', 'hubei': 4832, 'country': 5093, 'notHubei': 261},
 {
   'date': '02.14', 'hubei': 2420, 'country': 2644, 'notHubei': 224},
 {
   'date': '02.15', 'hubei': 1843, 'country': 2009, 'notHubei': 166},
 {
   'date': '02.16', 'hubei': 1933, 'country': 2051, 'notHubei': 118},
 {
   'date': '02.17', 'hubei': 1807, 'country': 1891, 'notHubei': 84},
 {
   'date': '02.18', 'hubei': 1693, 'country': 1751, 'notHubei'
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值