Eine Corona-Infektion ist weit verbreitet. Wenn keine Maßnahmen ergriffen werden (oder keine Auswirkungen haben), steigt die Anzahl der Infizierten im Allgemeinen entlang der Exponentialfunktion.
Die tatsächliche Anzahl der Infektionen wird täglich auf der Tokyo Corona-Website bekannt gegeben, es wurde jedoch keine Prognose abgegeben.
Die Exponentialfunktion kurve_fit wird verwendet, um den zukünftigen vorhergesagten Wert zu berechnen und den Graphen hier zu zeichnen. (Natürlich möchte ich nicht, dass das Ergebnis so gut wie möglich ist, und ich hoffe aufrichtig, dass die Maßnahmen die Situation so schnell wie möglich zum Abschluss bringen.
Nun, es ist schlecht. Intuition, die recht gut zur Exponentialfunktion passt. Der Entscheidungskoeffizient wird separat berechnet.
Die Daten stammen von der offiziellen Website. https://stopcovid19.metro.tokyo.lg.jp/
Es scheint, dass es normalerweise nachts aktualisiert wird, aber es ist eine Voraussetzung für das Zeichnen eines Diagramms am nächsten Tag. Die Zahl am Montag ist in der Regel viel kleiner als die tatsächliche Zahl, da es viele Orte gibt, an denen die Inspektionsagentur am vergangenen Sonntag geschlossen ist. Es kann als periodischer Faktor entfernt werden, aber hier werde ich es so zeichnen, wie es ist.
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))
#Prognosezeitraum
TO_PERIODS = 7
#Generieren Sie verschiedene Dinge für das Zeichnen von Diagrammen
target_columns = ['Veröffentlicht_Datum','geduldig_Alter']
df_select = df[target_columns]
list_now = list(df_select.groupby('Veröffentlicht_Datum').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
Berechnet als Exponentialfunktionsanpassungsprämisse unter Verwendung von edge_fit
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
#Definition des ungefähren Ausdrucks
def nonlinear_fit(x, a, b):
return a * x ** b
#Generieren Sie einmal temporäre x-Achsendaten
array_now_x = np.linspace(0, len(list_now)-1, len(list_now))
#Kurve unter Annahme einer Exponentialfunktion_Fit-Ausführung
param, cov = curve_fit(nonlinear_fit, array_now_x, array_now_y,maxfev=1000)
Berechnen Sie den zukünftigen Wert mit Parametern, die durch die Verarbeitung der Exponentialfunktionsanpassung erhalten wurden
list_total_y = []
for num, values in enumerate(list_total):
list_total_y.append(nonlinear_fit(num, param[0], param[1]))
#Berechnen Sie die Anzahl der infizierten Personen pro Tag aus veröffentlichten Daten
array_now_y = df_select.groupby('Veröffentlicht_Datum').count()['geduldig_Alter'].values
Zeichnen Sie ein Diagramm.
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