Répertoire d'articles
Récemment (l'article a été écrit à 18h40 le 06/06/2020), la situation épidémique s'est améliorée en Chine, mais elle a été violente aux États-Unis.
Cet article explorera et compilera les données épidémiques américaines fournies par Tencent .
1. Analyser les données
Appeler l'interface API
Interface: https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryMerge
Données observées:
{
...,
"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}
]
},
...
}
}
}
Comme indiqué dans le code ci-dessus, pour un pays, pour obtenir ses données épidémiques, il suffit d'utiliser:
json['data']['FAutoCountryMerge']['<国名>']['list']
Pour les données américaines, utilisez:
json['data']['FAutoCountryMerge']['美国']['list']
Code
Ce qui précède sont tous des produits secs, mais ce qui suit est le vrai 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']
Traitement de l'information
Dans python
, le résultat est un list
objet:
[
{
"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}
]
L'objet stocke les données épidémiques quotidiennes aux États-Unis
date
,: la date du 28 janvier à nos jours;: le
confirm_add
diagnostic nouvellement confirmé
confirm
ce jour-là;: le diagnostic cumulé
heal
ce jour-là;: la cure cumulée
dead
ce jour-là ;: le cumulatif mort ce jour-là.
Filtrer les données
Le filtrage des données est très important.
confirm_add
(Nouvellement diagnostiqué ce jour-là) Manifestement inutile, supprimez- Il faut en ajouter un
now_confirm
(diagnostics existants ce jour-là), afin que l'on puisse voir clairement le nombre de personnes sous traitement aux États-Unis.
Cette valeur peut êtreconfirm - heal - head
obtenue via .
date: la date du 28 janvier à aujourd'hui
confirm_add: nouveaux diagnostics confirmés ce jour-là confirm: diagnostics
cumulés
ce jour-là guérir: traitements cumulatifs
ce jour-là mort: décès cumulés
ce jour-là now_confirm: diagnostics confirmés existants ce jour-là
Code
Étant donné que le nombre de personnes à l'avant est trop petit, les données affecteront la qualité du dessin final.
Donc, je sauvegarde les données du 35, bien sûr, si vous voulez utiliser toutes les données, vous pouvez les data[35:]
modifier 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. Dessin
Article de référence: https://www.cnblogs.com/lone5wolf/p/10870200.html
Puisque je suis encore novice en dessin, je poste le code directement, merci de comprendre. . .
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()
Image de résultat
3. Code complet
# -*- 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()
Téléchargement de code: GitHub