Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_csv("https://www.bundeswahlleiter.de/dam/jcr/72f186bb-aa56-47d3-b24c-6a46f5de22d0/btw17_kerg.csv", skiprows=5, sep=";", header=[0,1,2])
- df = df.set_index("Gebiet")
- df.index = [row[0] for row in df.index]
- erststimmen = (
- df
- .xs('Erststimmen', level=1, drop_level=False, axis=1)
- .drop(["Wahlberechtigte", "Wähler", "Ungültige", "Gültige"], axis=1)
- )
- erststimmen.columns = [col[0] for col in erststimmen.columns]
- left_parties = ["BÜNDNIS 90/DIE GRÜNEN", "DIE LINKE", "Sozialdemokratische Partei Deutschlands"]
- right_parties = ["Christlich Demokratische Union Deutschlands", "Alternative für Deutschland", "Freie Demokratische Partei", 'Christlich-Soziale Union in Bayern e.V.']
- df2 = pd.DataFrame(columns=["erststimmen_links", "erststimmen_rechts", "sieger", "eigentlicher_sieger"])
- for row in erststimmen.index:
- if str(row) != "nan":
- largest = erststimmen.loc[row]
- lefts = largest[largest.index.isin(left_parties)].sum()
- rights = largest[largest.index.isin(right_parties)].sum()
- winner = erststimmen.loc[row].idxmax()
- winner_wing = "rechts" if winner in right_parties else "links"
- left_or_right = "links" if lefts > rights else "rechts"
- df2.loc[row, "erststimmen_links"] = lefts
- df2.loc[row, "erststimmen_rechts"] = rights
- df2.loc[row, "sieger"] = winner
- df2.loc[row, "sieger_lager"] = winner_wing
- df2.loc[row, "eigentlicher_sieger"] = left_or_right
- ungleich = df2.query("eigentlicher_sieger != sieger_lager")
- ungleich.query("eigentlicher_sieger == 'links'")[["erststimmen_links", "erststimmen_rechts"]].sum()
- ungleich.query("eigentlicher_sieger == 'rechts'")[["erststimmen_links", "erststimmen_rechts"]].sum()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement