Seite 1 von 1

Graphische Darstellung von Inzidenzen nach Altersgruppen

Verfasst: Montag 6. Juni 2022, 16:40
von IsoldeMaduschen
Hallo zusammen,

ich bin aktuell ein wenig dabei Python auszuprobieren und wollte mal als persönliches "Projekt" die Inzidenzen graphisch selber mal darstellen.
Soweit hat das auch geklappt ... anbei mein Code:

""
Bevölkerung = pd.read_csv("https://raw.githubusercontent.com/olive ... zahlen.csv", sep=";", decimal=",")

Einwohner_DE = Einwohner[(Einwohner.Bezeichnung == "Land")]["Bevölkerung"].sum()

summe_inz = summe_infiziert.rolling(7).sum()/Einwohner_DE*100000
ax = summe_inz.plot(figsize=[20,10], fontsize=15, lw=3)

ax.set_ylabel("Inzidenz", fontsize=15)
ax.set_xlabel("Meldedatum", fontsize=15)
ax.set_title("Inzidenz Verlauf Deutschland komplett", fontsize=20)
ax.grid()
ax.xaxis.set_major_locator(dt.MonthLocator(interval=2))
ax.xaxis.set_major_formatter(dt.DateFormatter("%m-%Y"))
""

Jetzt wollte ich das Ganze nochmal nach Altersgruppen separieren, leider stoße ich hier aber echt auf meine Grenzen und wollte mal höflichst fragen, ob es von eurer Seite aus etwaige Denkanstöße gäbe :)

Ich freue mich auf jede Hilfe!

Liebe Grüße

Re: Graphische Darstellung von Inzidenzen nach Altersgruppen

Verfasst: Montag 6. Juni 2022, 18:33
von __blackjack__
@IsoldeMaduschen: Das klappt so nicht weil `Einwohner` nicht definiert ist.

Re: Graphische Darstellung von Inzidenzen nach Altersgruppen

Verfasst: Dienstag 7. Juni 2022, 10:20
von IsoldeMaduschen
Hallo,

vielen Dank für die schnelle Antwort, sorry - hatte den Code gestern noch abgeändert und die alte und zu kurze Version hochgeladen, anbei der richtige...

""
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as dt
from datetime import timedelta


%matplotlib inline
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

RKIData = pd.read_csv("https://media.githubusercontent.com/med ... tionen.csv")

RKIData = RKIData[RKIData.Geschlecht.str.contains("unbekannt") == False]
RKIData = RKIData[RKIData.Altersgruppe.str.contains("unbekannt") == False]

RKIData = RKIData.drop(['IdLandkreis'],axis=1)

RKIData.head()

RKIData["Meldedatum"] = pd.to_datetime(RKIData.Meldedatum).dt.tz_localize(None)

RKIData["Refdatum"] = pd.to_datetime(RKIData.Refdatum).dt.tz_localize(None)




nur_inf = RKIData[(RKIData.NeuerFall == 0) | (RKIData.NeuerFall == 1)]
nur_tod = RKIData[(RKIData.NeuerTodesfall == 0) | (RKIData.NeuerTodesfall == 1)]

#Gesamtzahl der Infizierten
infiziert = nur_inf["AnzahlFall"].sum()
infiziert

#Gesamtzahl der Verstorbenen
verstorben = nur_tod["AnzahlTodesfall"].sum()
verstorben

#Zahl der Infizierten nach Altersgruppen und Geschlecht - Balkendiagramm

RKI_geschl = nur_inf[(nur_inf.Geschlecht == "M") | (nur_inf.Geschlecht == "W")]

Part3 = pd.DataFrame((RKI_geschl.groupby(["Altersgruppe", "Geschlecht"])["AnzahlFall"].sum()))
Part3.groupby(['Geschlecht','Altersgruppe']).sum().sort_values(by=["Geschlecht"])



ax = Part3.pivot_table(index='Altersgruppe', columns='Geschlecht')[:-1].plot(kind = 'bar', y = 'AnzahlFall',
figsize = [20,10], width = 0.8,ylabel = "Anzahl Fälle",
title = " Zahl der Infizierten nach Altersgruppen und Geschlecht", fontsize=16)

ax.set_title("Zahl der Infizierten nach Altersgruppen und Geschlecht", fontsize=20)
ax.set_xlabel("Altersgruppe, Geschlecht", fontsize=16)
ax.set_ylabel("Anzahl Fälle", fontsize=16)




#Anzahl Todesfälle nach Altersgruppe und Geschlecht - Balkendiagramm

Part4 = pd.DataFrame((RKI_geschl.groupby(["Altersgruppe", "Geschlecht"])["AnzahlTodesfall"].sum()))
Part4.groupby(['Geschlecht','Altersgruppe']).sum().sort_values(by=["Geschlecht"])



ax = Part4.pivot_table(index='Altersgruppe', columns='Geschlecht')[:-1].plot(kind = 'bar', y = 'AnzahlTodesfall'
,figsize = [20,10], width = 0.8,ylabel = "Anzahl Todesfälle",
title = " Zahl der Tode nach Altersgruppen und Geschlecht", fontsize=16)

ax.set_xlabel("Altersgruppe, Geschlecht", fontsize=16)
ax.set_ylabel("Anzahl Todesfälle", fontsize=16)

# Verhältnis der Infektionen und Todesfälle nach Alter und Geschlecht

Part5 = RKIData[["AnzahlFall", "AnzahlTodesfall", "Geschlecht", "Altersgruppe"]]
Part5.groupby(['Geschlecht','Altersgruppe']).sum().sort_values(by=["AnzahlFall"])

Part5.groupby(['Geschlecht','Altersgruppe']).sum().sort_values(by=["AnzahlFall"])

GADaten = Part5.groupby(['Geschlecht','Altersgruppe']).sum().sort_values(by=["AnzahlFall"])

thePlotGADaten = GADaten.plot(kind="bar",secondary_y="AnzahlTodesfall",figsize=(20,10))

thePlotGADaten.get_figure().savefig('geschlecht-altersgruppe.png',dpi=200,pad_inches=5)

# Zeitverlauf der NEU Infizierten

summe_infiziert = nur_inf.groupby("Meldedatum")["AnzahlFall"].sum()


ax_inf = summe_infiziert.plot(figsize=(20,10))
ax_inf.legend(["Anzahl Neuinfektionen"], fontsize=14)
ax_inf.set_xlabel("Referenzdatum",fontsize=20)
ax_inf.set_ylabel("NeuerFall",color="black",fontsize=20)

ax_inf.xaxis.set_major_locator(dt.MonthLocator(interval=2))
ax_inf.xaxis.set_major_formatter(dt.DateFormatter("%m-%Y"))

# Zeitverlauf der Gesamtzahl der Verstorbenen

summe_tod = nur_tod.groupby("Meldedatum")["AnzahlTodesfall"].sum()

ax_tod = np.cumsum(summe_tod).plot(figsize=(20,10), fontsize=15, lw=3)

ax_tod.legend(["Anzahl Todesfälle"], fontsize=14)
ax_tod.set_title("Zeitverlauf der Gesamtzahl der Verstorbenen", fontsize=20)
ax_tod.set_xlabel("Meldedatum", fontsize=15)
ax_tod.set_ylabel("Todesfälle", fontsize=20)
ax_tod.xaxis.set_major_locator(dt.MonthLocator(interval=2))
ax_tod.xaxis.set_major_formatter(dt.DateFormatter("%m-%Y"))

# Zeitverlauf der NEU-Verstorbenen



summe_tod = nur_tod.groupby("Meldedatum")["AnzahlTodesfall"].sum()

ax_inf = summe_tod.plot(figsize=(20,10))
ax_inf.legend(["Anzahl Neuverstorbene"], fontsize=14)
ax_inf.set_xlabel("Referenzdatum",fontsize=20)
ax_inf.set_ylabel("Neuer Todesfall",color="black",fontsize=20)

ax_inf.xaxis.set_major_locator(dt.MonthLocator(interval=2))
ax_inf.xaxis.set_major_formatter(dt.DateFormatter("%m-%Y"))

# 7-Tage-Inzidenz im Zeitverlauf

#Aktuelle Bevölkerungszahlen raussuchen

Bevölkerung = pd.read_csv("https://raw.githubusercontent.com/olive ... zahlen.csv",
sep=";", decimal=",")

Einwohner_DE = Bevölkerung[(Bevölkerung.Bezeichnung == "Land")]["Bevölkerung"].sum()


summe_inz = summe_infiziert.rolling(7).sum()/Einwohner_DE*100000

ax = summe_inz.plot(figsize=[20,10], fontsize=15, lw=3)

ax.set_ylabel("Inzidenz", fontsize=15)
ax.set_xlabel("Meldedatum", fontsize=15)
ax.set_title("Inzidenz Verlauf Deutschland komplett", fontsize=20)
ax.grid()
ax.xaxis.set_major_locator(dt.MonthLocator(interval=2))
ax.xaxis.set_major_formatter(dt.DateFormatter("%m-%Y"))

# 7-Tage-Inzidenz nach Altersgruppen im Zeitverlauf


""

Liebe Grüße und danke vorab!