前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新冠疫情地市级时间序列数据采集_python数据处理

新冠疫情地市级时间序列数据采集_python数据处理

作者头像
KKCHANNEL
发布2022-09-16 16:55:12
5400
发布2022-09-16 16:55:12
举报

1. 简介

实验室近期需要采集地市级的疫情数据。目前能找到的大部分数据源是省级粒度的时间序列数据地市级的实时截面数据,起初找到了这个项目

2019新型冠状病毒疫情实时爬虫https://github.com/BlankerL/DXY-COVID-19-Crawler

作者使用了丁香园的数据。但是我发现了丁香园数据中的几个问题:

  1. 统计口径较混乱,同一地级市在不同的时间指向不同的字段名;
  2. 部分省(广东、四川、吉林、甘肃)没有单独统计境外输入数据,境外输入被归于各地级市中,该部分数据无法清洗;
  3. 部分数据在新时间中被修正,没有同步修正回旧时间,出现累计确诊数倒减的情况。

受问题2影响,最后还是找新数据源重新采集并清洗一遍数据。

本项目使用腾讯新闻api获取并处理新冠疫情地市级时间序列数据,数据所有权为腾讯新闻,脚本及获取数据仅作参考与学习用,对数据质量不做担保。

本人无法授权任何个人或团体在科研或商业项目中使用本数据,如有需要,希望您能够联系腾讯新闻并取得许可。

如有建议或异常反馈,欢迎提交issue。

本项目地址:https://github.com/KKCHANNEL-kk/COVID-19_timeseriesData_Area

腾讯新闻疫情实时追踪页面:https://news.qq.com/zt2020/page/feiyan.htm#/global

祝愿大家一切都好!

2. 使用说明

下载文件。保证getAreaData.py和covid19_area_timeseries_data.py在同一路径下,运行covid19_area_timeseries_data.py即可

3. 实现原理

3.1. 数据获取

打开网页后开启浏览器的开发者工具,选中Network查看网页传输的文件,就可以比较顺利地找到腾讯的api,写了一个很简单的请求就抓齐了数据(见getAreaData.py)。

找到api的位置

返回的json中时间序列不齐,只包含卫健委公布实时新闻当天的更新数据,因此在两次时间中的空缺数据需要我自行填补(两次公告之前的数据理论上不变,取时间靠前的数据填补缺失值)

json截图

api需要的参数是省份province和城市(直辖市的区)city,api的制作使用了一个睿智办法肉身编码。需要注意港澳台只有province没有city参数,所以另开了一个循环单独处理。地名字典不是完整字典,有部分是从百度疫情信息扒下来的,会有几个无确诊的地级市获取不到数据,视为"截至当前时间确诊为0"处理。

肉身编码小朋友不要学,牺牲我一个就好

api请求和json解析使用的基本都是封装好的方法,略。

3.2. 数据清洗

先观察一下原数据。

关于时间序列的补齐,我的想法是城市列表与时间期限作笛卡尔积后,再连接原表。这样有记录时间的数据就会被填入,两次公告之间没有记录的数据留空。时间期限取所有数据记录中最早和最晚的两天

这时又发现一个小问题,出现了未来的数据(9-30),检查后发现是有些api返回数据的时间一直连续至未来,只是数值不变。过滤掉这部分假未来数据即可。

接下来填补缺失值。重设index为['province','city','date']的组合,再以此index做groupby分组填补数据,不然会出现bfill中下一个城市的第一天填补上一个城市最后一天数据的情况。

先使用bfill填补"过去日期中有数据"的空缺,将这部分空缺视为"期间数据无变化",取过去时间最新数据;然后再用fillna将剩下的缺失值填0,因为此时的缺失值在过去日期中没有数据,说明可能是最早还没有进行新冠疫情公告的时候,此时默认为0。

最后做一个自表连接,计算每日新增。新建一列'yesterday'为date-1天,然后使用'date'和'yesterday'做自连接,计算两天差异即可。

最后去掉多余的列,调整列名。

收工。

4. 后续挖坑

  • 可能会搭个云服务器和数据库,定期把数据导进去
  • 可能会搭个前端页面做一下可视化
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 KKCHANNEL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
    • 2. 使用说明
      • 3. 实现原理
        • 3.1. 数据获取
        • 3.2. 数据清洗
      • 4. 后续挖坑
      相关产品与服务
      云开发 CLI 工具
      云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档