In [9]:
import pandas as pd
import numpy as np
import plotly.plotly as py
import plotly.graph_objs as go
ja = pd.read_csv("https://raw.githubusercontent.com/Niederb/political_science/master/Daten/Ja.csv", sep=";", na_values=["..."])#, encoding="ascii")
nein = pd.read_csv("https://raw.githubusercontent.com/Niederb/political_science/master/Daten/Nein.csv", sep=";", na_values=["..."])#, encoding="ascii")
stimmberechtigte = pd.read_csv("https://raw.githubusercontent.com/Niederb/political_science/master/Daten/Stimmberechtigte.csv", sep=";")
kantonsnamen = list(ja)[3:]
stimmberechtigte = stimmberechtigte.iloc[1:321, 3:]
#stimmberechtigte = pd.to_numeric(stimmberechtigte)
stimmberechtigte = stimmberechtigte.apply(pd.to_numeric, errors='ignore')
stimmberechtigte_2 = np.mean(stimmberechtigte.as_matrix(), 0)
result = pd.DataFrame({ 'Kanton' : kantonsnamen, "Stimmberechtigte" : stimmberechtigte_2 })
ja_schweiz = ja["Schweiz"]
nein_schweiz = nein["Schweiz"]
angenommen = ja_schweiz > nein_schweiz
ja_kantone = ja.iloc[:, 3:]
ja_kantone = np.nan_to_num(ja_kantone.values)
nein_kantone = nein.iloc[:, 3:]
nein_kantone = np.nan_to_num(nein_kantone.values)
kantone = np.sum(ja_kantone, axis=1) > np.sum(nein_kantone, axis=1)
decisions = np.zeros((623, 26))
different = np.zeros((623, 26))
for i in np.arange(0, 25):
ja_ohne = np.delete(ja_kantone, i, 1)
nein_ohne = np.delete(nein_kantone, i, 1)
decision = np.sum(ja_ohne, axis=1) > np.sum(nein_ohne, axis=1)
decisions[:, i] = decision
different[:, i] = (decision != 1.0 * angenommen.values)
influence = np.sum(different, 0)
influence_votes = np.sum(different, 1)
result["Einfluss"] = influence
In [10]:
result = result.sort_values("Einfluss")
bar_layout=dict(
color='rgb(255, 161, 0)'
)
tr = go.Bar(
x=result["Kanton"],
y=result["Einfluss"],
text="",
name="",
marker=bar_layout
)
layout = go.Layout(
title='Anzahl entschiedene Abstimmungen pro Kanton',
xaxis=dict(title='Kanton'),
yaxis=dict(title='Anzahl entschiedene Abstimmungen'),
)
trace = [tr]
fig = go.Figure(data=trace, layout=layout)
py.iplot(fig, filename='einfluss-kantone-abstimmung')
Out[10]:
In [11]:
trace = go.Scatter(
x = result["Einfluss"],
y = result["Stimmberechtigte"],
mode = 'markers',
text=result["Kanton"],
marker = dict(
size = 20,
color = 'rgba(255, 161, 0, 1.0)',
line = dict(
width = 2,
)
),
)
layout = go.Layout(
hovermode = 'closest',
title='Entschiedene Abstimmungen vs Anzahl Stimmberechtigte',
xaxis=dict(title='Anzahl entschiedene Abstimmungen'),
yaxis=dict(title='Anzahl Stimmberechtigte (Durchschnitt)')
)
data = [trace]
fig = go.Figure(data=data, layout=layout)
py.iplot(fig, filename='influence-size')
Out[11]:
In [ ]: