09. September 2024

HZ 5 #

Einführung #

Ich wollte zunächst Instagram als Webseite verwenden, um diese zu analysieren. Dafür habe ich die Daten zufällig generiert. Das Problem war jedoch, dass man kaum Trends erkennen konnte. Natürlich hätte ich den Generierungsalgorithmus so anpassen können, dass die Daten bestimmte Trends enthalten. Da ich jedoch Diagramme basierend auf den Daten erstellen und analysieren sollte, machte das für mich wenig Sinn. Ich hätte Trends analysiert, die ich vorher selbst erstellt habe. Aus diesem Grund habe ich mich dazu entschieden, öffentlich zugängliche Daten zu verwenden.

Nach etwas Recherche habe ich einen Datensatz der Stadt Winterthur gefunden. Dieser zeigt die Bevölkerung im Jahr 2021, gruppiert nach Alter und Staatsbürgerschaft. Ich habe mich für diesen Datensatz entschieden, da er relativ übersichtlich und von angenehmer Grösse ist.

Zur Erstellung der Diagramme verwende ich pandas und matplotlib. Bei pandas handelt es sich um eine bekannte Python-Bibliothek, die speziell für die Analyse grosser Datensätze entwickelt wurde. matplotlib bietet anschliessend die Möglichkeit, diese Daten in Form von Diagrammen darzustellen.

Code #

df = pd.read_csv("https://www.web.statistik.zh.ch/ogd/daten/ressourcen/KTZH_00001521_00002899.csv", sep=",")
df = df.drop("Jahr", axis=1)

grouped_df = df.copy()
grouped_df['AK'] = pd.Categorical(df['AK'], categories=df['AK'], ordered=True)

grouped_df.set_index('AK', inplace=True)

plt.figure(figsize=(12, 8))
for column in grouped_df.columns:
    plt.plot(grouped_df.index, grouped_df[column], marker='o', label=column)

plt.title('Bewohner Wintertuhr nach Alter, Gechlecht und Statsbürgerschaft')
plt.xlabel('Alltersgruppe')
plt.ylabel('Anzahl Bewohner')
plt.legend(title='Categories')
plt.grid(True)
plt.xticks(rotation=45)  
plt.tight_layout()
plt.show()

Output #

Dia3

Analyse #

In den Diagrammen ist gut zu erkennen, dass der prozentuale Anteil von Personen mit einem ausländischen Pass stark zwischen den einzelnen Altersgruppen variiert. So sinkt der prozentuale Anteil der Schweizer Staatsbürger tendenziell ab der Altersgruppe 65+ deutlich. Die Ursachen dafür können vielfältig sein. Es ist jedoch denkbar, dass sich viele Bürger im Laufe der Zeit einbürgern lassen haben, wodurch sie dann in die Kategorie der Schweizer Staatsbürger übergehen. Da man für eine Einbürgerung mindestens 10 Jahre in der Schweiz leben muss, erklärt dies, warum dieser Effekt vor allem bei den älteren Altersgruppen zu beobachten ist.

Zudem ist ersichtlich, dass in Winterthur ungefähr gleich viele Frauen wie Männer leben.

Gesamte Anzahl Männer und Frauen pro Altersgruppe #

Code #

df = pd.read_csv("https://www.web.statistik.zh.ch/ogd/daten/ressourcen/KTZH_00001521_00002899.csv", sep=",")
df = df.drop("Jahr", axis=1)

grouped_data = df.copy()
grouped_data['AK'] = df['AK'].str.split('–', n=1).str[0].str.strip("+")


grouped_data["AK"] = grouped_data["AK"].astype("int64")

grouped_data = grouped_data.groupby("AK").agg({
    'TotalFrau': 'sum',
    'TotalMann': 'sum'
})

grouped_data = grouped_data.sort_values(by="AK")
grouped_data.plot(kind='bar', stacked=True, figsize=(10, 6))
plt.title('Total Number of Women and Men by Age group')
plt.xlabel('Age group')
plt.ylabel('Total')
plt.xticks(rotation=0) 
plt.legend(title='Gender')
plt.show()

Output #

Dia3

Analyse #

In diesem Diagramm sieht man deutlich, dass die Altersgruppen 25-55 besonders viele Bürger umfassen. Theoretisch würde es mehr Sinn ergeben, wenn das Diagramm eher wie ein Wasserfall aussieht, da im Laufe der Jahre immer mehr Menschen sterben.

Prozentualer Anzahl pro Altersgruppe #

df = pd.read_csv("https://www.web.statistik.zh.ch/ogd/daten/ressourcen/KTZH_00001521_00002899.csv", sep=",")
df = df.drop("Jahr", axis=1)

grouped_data = df.copy()
grouped_data['AK'] = grouped_data['AK'].str.split('–', n=1).str[0].str.strip("+")

grouped_data['AK'] = grouped_data['AK'].astype('int64')

grouped_data = grouped_data.groupby('AK').agg({
    'TotalFrau': 'sum',
    'TotalMann': 'sum'
})

grouped_data['Total'] = grouped_data['TotalFrau'] + grouped_data['TotalMann']
grouped_data['PercentFrau'] = (grouped_data['TotalFrau'] / grouped_data['Total']) * 100
grouped_data['PercentMann'] = (grouped_data['TotalMann'] / grouped_data['Total']) * 100

grouped_data = grouped_data.sort_values(by='AK')

plt.figure(figsize=(10, 6))
plt.bar(grouped_data.index, grouped_data['PercentFrau'], label='Women', color='lightcoral')
plt.bar(grouped_data.index, grouped_data['PercentMann'], bottom=grouped_data['PercentFrau'], label='Men', color='steelblue')

plt.title('Anzahl Männer und frauen pro Altersgruppe')
plt.xlabel('Altersgruppe')
plt.ylabel('Anzahl')
plt.xticks(rotation=0)
plt.legend(title='Gender')
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

Output #

Dia3

Analyse #

Als letztes habe ich noch ein Diagramm erstellt, bei welchem man sieht wie der Prozentualle anteil an frauen und männer pro Altersgruppe aussieht. Dabei kann man ganz gut sehen, das der Prozentuale Anteil an Frauen ab dem 80. Altersjahr immer mehr Ansteigt. Das erscheint zwar zuerst mekrwürdig, es lässt sich allerdings dadurch erklären, das Frauen im Schnitt älter werden als Männer.