L'infection Corona est répandue. Si aucune mesure n'est prise (ou n'a aucun effet), le nombre de personnes infectées augmentera généralement selon la fonction exponentielle.
Le nombre réel d'infections est annoncé quotidiennement sur le site Tokyo Corona, mais aucune prévision n'a été faite.
La fonction exponentielle curve_fit est utilisée pour calculer la future valeur prédite et dessiner le graphique ici. (Bien sûr, je ne veux pas que le résultat soit aussi bon que possible, et j'espère sincèrement que les mesures seront prises pour converger le plus tôt possible.
Eh bien, c'est mauvais. Intuition qui correspond assez bien à la fonction exponentielle. Le coefficient de décision sera calculé séparément.
Les données proviennent du site officiel. https://stopcovid19.metro.tokyo.lg.jp/
Il semble qu'il soit généralement mis à jour la nuit, mais c'est une condition préalable pour dessiner un graphique le lendemain. Le nombre du lundi a tendance à être beaucoup plus petit que le nombre réel car il y a de nombreux endroits où l'agence d'inspection est fermée le dimanche précédent. Il peut être supprimé en tant que facteur périodique, mais ici je vais le dessiner tel quel.
import pandas as pd
from pathlib import Path
from datetime import datetime
BASEDIR = Path('.')
FILE_PATH = 'https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv'
df = pd.read_csv(str(FILE_PATH))
#Période de prévision
TO_PERIODS = 7
#Générer diverses choses pour le dessin graphique
target_columns = ['Publié_Date','patient_Âge']
df_select = df[target_columns]
list_now = list(df_select.groupby('Publié_Date').count().index)
today = datetime.today()
today.strftime('%Y-%m-%d')
list_to = list(pd.date_range(today.strftime('%Y-%m-%d'), periods=TO_PERIODS, freq='D').strftime('%Y-%m-%d'))
list_total = list_now + list_to
Calculé comme une prémisse d'ajustement de fonction exponentielle à l'aide de curve_fit
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
#Définition de l'expression approchée
def nonlinear_fit(x, a, b):
return a * x ** b
#Générer une fois des données temporaires sur l'axe des x
array_now_x = np.linspace(0, len(list_now)-1, len(list_now))
#Courbe assumant une fonction exponentielle_exécution en forme
param, cov = curve_fit(nonlinear_fit, array_now_x, array_now_y,maxfev=1000)
Calculer la valeur future avec les paramètres obtenus par le traitement de l'ajustement de fonction exponentielle
list_total_y = []
for num, values in enumerate(list_total):
list_total_y.append(nonlinear_fit(num, param[0], param[1]))
#Calculez le nombre de personnes infectées chaque jour à partir des données publiées
array_now_y = df_select.groupby('Publié_Date').count()['patient_Âge'].values
Dessinez un graphique.
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
sns.set_style('whitegrid')
fig, ax = plt.subplots(1, 1, figsize=(15, 10))
ax.bar(list_total, list_total_y, color='blue')
ax.bar(list_now, array_now_y, color='red',alpha=0.75)
plt.xticks(rotation=90)
plt.show()
Recommended Posts