Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
Yanni8 committed Sep 15, 2024
1 parent b31b88c commit 0851769
Show file tree
Hide file tree
Showing 2 changed files with 311 additions and 0 deletions.
129 changes: 129 additions & 0 deletions content/docs/lernjournal/09.09.2024.md
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.
182 changes: 182 additions & 0 deletions hz5/analyse.ipynb

Large diffs are not rendered by default.

0 comments on commit 0851769

Please sign in to comment.