1
0
Fork 0

feat: Added vaccination target and target statistics

This commit is contained in:
Benedikt Bastin 2021-02-10 17:45:52 +01:00
parent da8a85809c
commit e15fb52f5b
2 changed files with 48 additions and 3 deletions

View file

@ -44,6 +44,18 @@
<label for="second_vaccination_percentage">Zweitimpfungen: <em>{{ '{:.3n}'.format(data_second_vaccination.total_percentage) }} %</em></label> <label for="second_vaccination_percentage">Zweitimpfungen: <em>{{ '{:.3n}'.format(data_second_vaccination.total_percentage) }} %</em></label>
</div> </div>
</section> </section>
<section>
<h1>Aktuelles Impfziel</h1>
<p class="data-text">
Das Impfziel von EU-Kommission<sup><a href="#footnote-004">4</a></sup> und Bundesregierung ist, bis Ende des Sommers 70 % der Bevölkerung geimpft zu haben.
Bis zu diesem Ziel sind noch <em>{{ '{:n}'.format(data_first_vaccination.vaccinations_missing_until_target).replace('.', '') }}</em> Erstimpfungen nötig.
</p>
<p class="data-text">
Bis zum Ende des Sommers am <em>{{ target_date_for_herd_immunity_str }}</em> bleiben noch <em>{{ days_until_target }}</em> Tage<sup><a href="#footnote-005">5</a></sup>.
Um das Ziel pünktlich zu erreichen, müssten in dieser Zeit jeden Tag durchschnittlich <em>{{ '{:n}'.format(data_first_vaccination.vaccination_rate_needed_for_target).replace('.', '') }}</em> Erstimpfungen vorgenommen werden.
Die bisherige durchschnittliche Erstimpfrate liegt bei <em>{{ '{:.3n}'.format(data_first_vaccination.vaccination_rate_needed_for_target_percentage ) }} %</em> dieser Rate.
</p>
</section>
<!--<section> <!--<section>
<h1>Details</h1> <h1>Details</h1>
<figure> <figure>
@ -56,7 +68,7 @@
Impfungen<br /> Impfungen<br />
gesamt gesamt
</th> </th>
<th colspan="8">Impfung wegen<sup><a href="#footnote-004">4</a></sup></th> <th colspan="8">Impfung wegen<sup><a href="#footnote-006">6</a></sup></th>
</tr> </tr>
<tr> <tr>
<th colspan="2">Alter</th> <th colspan="2">Alter</th>
@ -283,7 +295,21 @@
<li><a name="footnote-002">Bevölkerungsstand vom 31. Dezember 2019: {{ einwohner_deutschland }}.</a></li> <li><a name="footnote-002">Bevölkerungsstand vom 31. Dezember 2019: {{ einwohner_deutschland }}.</a></li>
<li><a name="footnote-003">{{ herd_immunity }} % ist der Wert, bei dem aktuell von einer Herdenimmunität ausgegangen wird.</a></li> <li><a name="footnote-003">{{ herd_immunity }} % ist der Wert, bei dem aktuell von einer Herdenimmunität ausgegangen wird.</a></li>
<!--<li><a name="footnote-004">Die täglichen Impfraten unterliegen starken Schwankungen und sind daher wenig aussagekräftig.</a></li>--> <!--<li><a name="footnote-004">Die täglichen Impfraten unterliegen starken Schwankungen und sind daher wenig aussagekräftig.</a></li>-->
<li><a name="footnote-004">Nicht alle Länder veröffentlichen alle in der Aufschlüsselung aufgelisteten Daten.</a></li> <li><a name="footnote-004">Quellen:
<ul>
<li>
<a href="https://www.tagesschau.de/ausland/europa/ursula-von-der-leyen-zu-corona-impfstoffen-101.html">Tagesschau, 2021-02-10</a>: Von der Leyen (EU-Kommission): „Sie bekräftigte das Ziel, bis zum Ende des Sommers 70 Prozent der erwachsenen Bevölkerung in Europa zu impfen.“
</li>
<li>
<a href="https://www.tagesschau.de/inland/impfplan-gesundheitsministerium-spahn-corona-101.html">Tagesschau, 2021-02-10</a>: Spahn (Bundesgesundheitsministerium): „Die Bundesregierung hält es aber weiter für möglich, bis Ende des Sommers allen ein Impfangebot zu machen.“
</li>
<li>
<a href="https://www.tagesschau.de/inland/impfgipfel-107.html">Tagesschau, 2021-02-01</a>: Merkel (Bundesregierung): „Ein Impfangebot für alle bis Ende des Sommers - das sei auch mit den drei bislang zugelassenen Impfstoffen möglich, so Kanzlerin Merkel.“
</li>
</ul>
Teilweise (wie auch in einigen dieser Quellen) wird von 70 % der <em>erwachsenen</em> Bevölkerung gesprochen, zur Vereinfachung wird hier dennoch die Gesamtbevölkerung zugrunde gelegt.</a></li>
<li><a name="footnote-005">Von den verbleibenden Tagen wurden 21 Tage für die Zeit zwischen Erst- und Zweitimpfung abgezogen.</a></li>
<li><a name="footnote-006">Nicht alle Länder veröffentlichen alle in der Aufschlüsselung aufgelisteten Daten.</a></li>
</ol> </ol>
</section> </section>
</body> </body>

21
plot.py
View file

@ -23,11 +23,19 @@ data_folder = 'data/'
einwohner_deutschland = 83190556 einwohner_deutschland = 83190556
herd_immunity = 0.7 herd_immunity = 0.7
today = datetime.date.today() today = datetime.date.today()
print_today = today.isoformat() print_today = today.isoformat()
filename_now = datetime.datetime.now().strftime("%Y%m%d%H%M%S") filename_now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
# https://www.tagesschau.de/ausland/europa/ursula-von-der-leyen-zu-corona-impfstoffen-101.html
target_date_for_herd_immunity = datetime.date(2021, 9, 22)
days_until_target = (target_date_for_herd_immunity - today).days - 21
# DIN A4 Plots # DIN A4 Plots
plt.rcParams["figure.figsize"] = [11.69, 8.27] plt.rcParams["figure.figsize"] = [11.69, 8.27]
@ -100,6 +108,11 @@ def calculate_vaccination_data(data):
mean_vaccination_rates_daily = np.round(cumulative / range(1, len(cumulative) + 1)) mean_vaccination_rates_daily = np.round(cumulative / range(1, len(cumulative) + 1))
vaccinations_missing_until_target = einwohner_deutschland * 0.7 - total
vaccination_rate_needed_for_target = vaccinations_missing_until_target / days_until_target
vaccination_rate_needed_for_target_percentage = mean_all_time / vaccination_rate_needed_for_target * 100
return { return {
'daily': data, 'daily': data,
'cumulative': cumulative, 'cumulative': cumulative,
@ -114,7 +127,10 @@ def calculate_vaccination_data(data):
'extrapolation_mean_all_time': extrapolation_mean_all_time, 'extrapolation_mean_all_time': extrapolation_mean_all_time,
'extrapolation_last_rate': extrapolation_last_rate, 'extrapolation_last_rate': extrapolation_last_rate,
'extrapolation_mean_seven_days': extrapolation_mean_seven_days, 'extrapolation_mean_seven_days': extrapolation_mean_seven_days,
'mean_vaccination_rates_daily': mean_vaccination_rates_daily 'mean_vaccination_rates_daily': mean_vaccination_rates_daily,
'vaccinations_missing_until_target': int(np.floor(vaccinations_missing_until_target)),
'vaccination_rate_needed_for_target': int(np.floor(vaccination_rate_needed_for_target)),
'vaccination_rate_needed_for_target_percentage': vaccination_rate_needed_for_target_percentage
} }
@ -638,6 +654,9 @@ def render_dashboard():
filename_stand = filename_stand, filename_stand = filename_stand,
einwohner_deutschland = '{:n}'.format(einwohner_deutschland).replace('.', ''), einwohner_deutschland = '{:n}'.format(einwohner_deutschland).replace('.', ''),
herd_immunity = '{:n}'.format(int(herd_immunity * 100)), herd_immunity = '{:n}'.format(int(herd_immunity * 100)),
target_date_for_herd_immunity = target_date_for_herd_immunity,
target_date_for_herd_immunity_str = target_date_for_herd_immunity.strftime('%d. %B %Y'),
days_until_target = days_until_target,
data_first_vaccination = data_first_vaccination, data_first_vaccination = data_first_vaccination,
data_second_vaccination = data_second_vaccination, data_second_vaccination = data_second_vaccination,
#details_per_land = dict(sorted(details_per_land_formatted.items(), key=lambda item: item[0])), #details_per_land = dict(sorted(details_per_land_formatted.items(), key=lambda item: item[0])),