[Python crawler] exploration des données épidémiques américaines + tabulation à partir de l'API Tencent

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 listobjet:

[
	{
    
    "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_adddiagnostic nouvellement confirmé
confirmce jour-là;: le diagnostic cumulé
healce jour-là;: la cure cumulée
deadce 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 être confirm - heal - headobtenue 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

C nCov

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

Je suppose que tu aimes

Origine blog.csdn.net/write_1m_lines/article/details/106479530
conseillé
Classement