Guest User

Untitled

a guest
Sep 27th, 2021
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import seaborn as sns
  5.  
  6. df = pd.read_csv('btw21_strukturdaten.csv',delimiter=';', skiprows=8)
  7.  
  8. res = pd.read_csv('kerg2_00286.csv', delimiter=';', skiprows=9)
  9.  
  10. # erstmal daten maskieren
  11. mask = (res['Wahlart'] == 'BT') * \
  12.        (res['Wahltag'] == '26.09.2021') * \
  13.        (res['Gebietsart'] == 'Wahlkreis') * \
  14.        (res['Gruppenart'] == 'Partei') * \
  15.        (~res['Prozent'].isna()) * \
  16.        (res['Stimme'] == 2) * \
  17.        (res['Gruppenname'].map(lambda g: g in ['CDU', 'SPD', 'GRÜNE', 'DIE LINKE', 'FDP', 'AfD']))
  18.  
  19. res = res[mask]
  20.  
  21. res['Prozent'] = np.array(res['Prozent'].map(lambda s: float(s.replace(',', '.'))))
  22.  
  23.  
  24. criteria = ['Verfügbares Einkommen der privaten Haushalte 2018 (EUR je EW)',
  25.         'Arbeitslosenquote Februar 2021 - Männer',
  26.         'Kindertagesbetreuung am 01.03.2020 - Betreute Kinder 3 bis unter 6 Jahre (Betreuungsquote)',
  27.         'Bevölkerungsdichte am 31.12.2019 (EW je km²)',
  28.         'PKW-Bestand am 01.01.2020 - PKW insgesamt (je 1000 EW)']
  29.  
  30. df = df[['Wahlkreis-Nr.'] + criteria] # ausdünnen
  31.  
  32. res = res[['Gruppenname', 'Gebietsnummer', 'Prozent']]
  33.  
  34. # Mittelwerte und Standardabweichungen für Skalierung
  35. scales = res.groupby('Gruppenname', as_index=False).aggregate({'Prozent': [np.mean, np.std]})
  36.  
  37. # Prozente skalieren in "Standardabweichungen weg vom Mittelwert"
  38. res['Prozent_relativ'] = res.groupby('Gruppenname')['Prozent'].apply(lambda x: (x - x.mean()) / x.std())
  39.  
  40. df2 = df.merge(res, left_on='Wahlkreis-Nr.', right_on='Gebietsnummer') # Strukturdaten und Ergbenis zusammenführen
  41.  
  42. for c in criteria:
  43.        g = sns.FacetGrid(df2, col="Gruppenname")
  44.        # g.map(sns.scatterplot, "Prozent_relativ", "Verfügbares Einkommen der privaten Haushalte 2018 (EUR je EW)", alpha=.05)
  45.        g.map(sns.scatterplot, "Prozent_relativ", c, alpha=.08, marker='.')
  46.        g.add_legend()
  47. plt.show()
  48.  
Advertisement
Add Comment
Please, Sign In to add comment