-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
311 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
# 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](https://opendata.swiss/de/dataset/bevolkerung-der-stadt-winterthur-nach-alter-geschlecht-und-herkunft-ab-2021) 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 | ||
|
||
```python | ||
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 | ||
|
||
> TBD | ||
|
||
## 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 | ||
```python | ||
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 | ||
|
||
> TBD | ||
## 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 | ||
|
||
```python | ||
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 | ||
|
||
> TBD | ||
## 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. |
Large diffs are not rendered by default.
Oops, something went wrong.