記事のディレクトリ
最近(記事は2020/6/1の18:40に書かれました)、中国では流行の状況は改善しましたが、米国では暴力的です。
この記事では、Tencentが提供する米国の流行データをクロールして表にします。
1.クロールデータ
APIインターフェースを呼び出す
インターフェース:https://api.inews.qq.com/newsqa/v1/automation/modules/list?
modules = FAutoCountryMerge観測データ:
{
...,
"data": {
"FAutoCountryMerge": {
...,
"美国": {
"showDash":false,
"list": [
{
"date":"01.28","confirm_add":0,"confirm":5,"heal":0,"dead":0},
...,
{
"date":"05.29","confirm_add":25069,"confirm":1768461,"heal":510713,"dead":103330},
{
"date":"05.30","confirm_add":23290,"confirm":1793530,"heal":519569,"dead":104542},
{
"date":"05.31","confirm_add":20350,"confirm":1816820,"heal":535238,"dead":105557},
{
"date":"06.01","confirm_add":20350,"confirm":1837170,"heal":599867,"dead":106195}
]
},
...
}
}
}
上記のコードに示されているように、国の場合、流行データを取得するには、次のものを使用するだけで済みます。
json['data']['FAutoCountryMerge']['<国名>']['list']
米国のデータについては、以下を使用してください。
json['data']['FAutoCountryMerge']['美国']['list']
コード
上記はすべて乾物ですが、以下は本物code
です:
from requests import get
url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryMerge'
data = get(url).json()['data']['FAutoCountryMerge']['美国']['list']
情報処理
ではpython
、結果はlist
オブジェクトです。
[
{
"date":"01.28","confirm_add":0,"confirm":5,"heal":0,"dead":0},
...,
{
"date":"05.29","confirm_add":25069,"confirm":1768461,"heal":510713,"dead":103330},
{
"date":"05.30","confirm_add":23290,"confirm":1793530,"heal":519569,"dead":104542},
{
"date":"05.31","confirm_add":20350,"confirm":1816820,"heal":535238,"dead":105557},
{
"date":"06.01","confirm_add":20350,"confirm":1837170,"heal":599867,"dead":106195}
]
このオブジェクトは、米国での毎日の流行データを保存します
date
。:1月28日から現在までの日付;:この日の
confirm_add
新たに確認された診断;:
confirm
この日の累積診断
heal
;:この日の累積治癒
dead
;:累積この日の死。
データをフィルタリングする
データフィルタリングは非常に重要です。
confirm_add
(その日に新たに診断された)明らかに役に立たない、削除するnow_confirm
米国で治療を受けている人の数を明確に確認できるように、1つ追加する必要があります(その日の既存の診断)。
この値は、confirm - heal - head
を介して取得できます。
日付:1月28日から現在までの日付
confirm_add:この日の新たに確認された診断
確認:
その日の累積診断治癒:その日の累積治癒
死亡:その日の累積死亡
now_confirm:その日の既存の確認済み診断
コード
正面の人数が少なすぎるため、データは最終的な図面の品質に影響を与えます。
ですから、もちろん35日からのデータを保存しますが、すべてのデータを使いたい場合はdata[35:]
変更data
できます。
dates = []
confirms = []
now_confirms = []
heals = []
deads = []
for day_data in data[35:]:
dates.append(day_data['date'])
confirms.append(day_data['confirm'])
heals.append(day_data['heal'])
deads.append(day_data['dead'])
now_confirms.append(confirms[-1] - heals[-1] - deads[-1])
2.描画
参考記事:https://www.cnblogs.com/lone5wolf/p/10870200.html
まだ絵の初心者なので、直接コードを投稿していますので、ご了承ください。。。
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 绘制文本
plt.figure(figsize=(11.4, 7.7))
confirm_line, = plt.plot(dates, confirms, color='#8B0000')
now_confirm_line, = plt.plot(dates, now_confirms, color='red', linestyle=':')
heal_line, = plt.plot(dates, heals, color='green', linestyle='--')
dead_line, = plt.plot(dates, deads, color='black', linestyle='-.')
# 绘制图形
my_font = FontProperties(fname=r'fonts\msyh.ttc')
plt.legend(handles=[confirm_line, now_confirm_line, heal_line, dead_line], labels=['累计确诊', '现存确诊', '治愈', '死亡'], prop=my_font)
plt.xlabel('日期', fontproperties=my_font)
plt.ylabel('人数', fontproperties=my_font)
plt.title('美国2019-nCov疫情情况', fontproperties=my_font)
plt.gca().xaxis.set_major_locator(plt.MultipleLocator(7))
# 保存并显示统计图
plt.savefig('AmericaNCovData.png')
plt.show()
結果画像
3.完全なコード
# -*- coding: utf-8 -*-
from requests import get
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryMerge'
data = get(url).json()['data']['FAutoCountryMerge']['美国']['list']
dates = []
confirms = []
now_confirms = []
heals = []
deads = []
for day_data in data[35:]:
dates.append(day_data['date'])
confirms.append(day_data['confirm'])
heals.append(day_data['heal'])
deads.append(day_data['dead'])
now_confirms.append(confirms[-1] - heals[-1] - deads[-1])
# 绘制文本
plt.figure(figsize=(11.4, 7.7))
confirm_line, = plt.plot(dates, confirms, color='#8B0000')
now_confirm_line, = plt.plot(dates, now_confirms, color='red', linestyle=':')
heal_line, = plt.plot(dates, heals, color='green', linestyle='--')
dead_line, = plt.plot(dates, deads, color='black', linestyle='-.')
# 绘制图形
my_font = FontProperties(fname=r'fonts\msyh.ttc')
plt.legend(handles=[confirm_line, now_confirm_line, heal_line, dead_line], labels=['累计确诊', '现存确诊', '治愈', '死亡'], prop=my_font)
plt.xlabel('日期', fontproperties=my_font)
plt.ylabel('人数', fontproperties=my_font)
plt.title('美国2019-nCov疫情情况', fontproperties=my_font)
plt.gca().xaxis.set_major_locator(plt.MultipleLocator(7))
# 保存并显示统计图
plt.savefig('AmericaNCovData.png')
plt.show()
コードのダウンロード:GitHub