In [1]:
import pandas as pd
import numpy as np
import plotly.plotly as py
import plotly.graph_objs as go

df = pd.read_csv("https://raw.githubusercontent.com/Niederb/political_science/master/Daten/ja-prozent.csv", sep=";")

df = df.reindex(index=df.index[::-1])

de = ['Zürich', 'Bern / Berne', 'Luzern', 'Uri', 'Schwyz', 'Obwalden', 'Nidwalden', 'Glarus', 'Zug', 'Solothurn', 'Basel-Stadt', 'Basel-Landschaft', 'Schaffhausen', 'Appenzell Ausserrhoden', 'Appenzell Innerrhoden', 'St. Gallen', 'Graubünden / Grigioni / Grischun', 'Aargau', 'Thurgau']
fr = ['Fribourg / Freiburg','Vaud', 'Valais / Wallis', 'Neuchâtel', 'Genève']

de_data = df[de]
fr_data = df[fr]

median_de = np.median(de_data, 1)
median_fr = np.median(fr_data, 1)

mean_de = np.mean(de_data, 1)
mean_fr = np.mean(fr_data, 1)

radicality_de = np.mean(np.abs(de_data - 50.0), 1)
radicality_fr = np.mean(np.abs(fr_data - 50.0), 1)

variance_de = np.var(de_data, 1)
variance_fr = np.var(fr_data, 1)

delta_median = np.abs(median_de - median_fr)
delta_mean = np.abs(mean_de - mean_fr)
N = 20
moving_avg = np.convolve(delta_mean, np.ones((N,))/N, mode='valid')
counter = list(range(1, len(delta_mean)+1))

In [2]:
mean = go.Scatter(
    x=counter,
    y=delta_mean,
    mode='lines',
    connectgaps=True,
    name = "Delta Mittelwerte"
)
median = go.Scatter(
    x=counter,
    y=delta_median,
    mode='lines',
    connectgaps=True,
    name = "Delta Medianwerte"
)
moving_avg = go.Scatter(
    x=counter,
    y=moving_avg,
    mode='lines',
    connectgaps=True,
    name = "Gleitendes Delta Mittelwerte (N=20)" 
)
layout = go.Layout(
        title='Unterschied Deutschschweiz/Romandie',
        xaxis=dict(title='Abstimmungen nach zeitlicher Reihenfolge'),
        yaxis=dict(title='Delta')
    )
data = [mean, median, moving_avg]
fig = go.Figure(data=data, layout=layout)    
py.iplot(fig, filename='delta-median')


Out[2]:

In [3]:
variance_de = go.Scatter(
    x=counter,
    y=variance_de,
    mode='lines',
    connectgaps=True,
    name = "Deutschschweiz"
)
variance_fr = go.Scatter(
    x=counter,
    y=variance_fr,
    mode='lines',
    connectgaps=True,
    name = "Romandie"
)
layout = go.Layout(
        title='Entwicklung Varianz Deutschschweiz & Romandie',
        xaxis=dict(title='Abstimmungen nach zeitlicher Reihenfolge'),
        yaxis=dict(title='Varianz')
    )
data = [variance_de, variance_fr]
fig = go.Figure(data=data, layout=layout)    
py.iplot(fig, filename='variance-de-fr')


Out[3]:

In [4]:
radicality_de_plot = go.Scatter(
    x=counter,
    y=radicality_de,
    mode='lines',
    connectgaps=True,
    name = "Deutschschweiz"
)
radicality_fr_plot = go.Scatter(
    x=counter,
    y=radicality_fr,
    mode='lines',
    connectgaps=True,
    name = "Romandie"
)
layout = go.Layout(
        title='Entwicklung Radikalität Deutschschweiz & Romandie',
        xaxis=dict(title='Abstimmungen nach zeitlicher Reihenfolge'),
        yaxis=dict(title='Radikalität')
    )
data = [radicality_de_plot, radicality_fr_plot]
fig = go.Figure(data=data, layout=layout)    
py.iplot(fig, filename='radicality-de-fr')


Out[4]:

In [ ]: