Untitled

Korrelationsmatrix und PCA der im Wahl-O-Mat vertretenen Parteien.
 avatar
unknown
python
2 months ago
1.4 kB
16
Indexable
import pandas as pd
import seaborn as sb
import matplotlib.pyplot as plt

df = pd.read_excel(
    'Wahl-O-Mat Bundestagswahl 2025_Datensatz_v1.01.xlsx',
     sheet_name='Datensatz BTW 2025',
     usecols=['Partei: Kurzbezeichnung', 'These: Nr.', 'Position: Position'],  # Column names
     index_col='Partei: Kurzbezeichnung',
     converters={'Position: Position': lambda x: {'stimme zu': 1, 'neutral': 0, 'stimme nicht zu': -1}.get(x)},
     header=0
)

pivot_df = pd.pivot_table(
    df,
    index='Partei: Kurzbezeichnung',
    columns='These: Nr.',
    values='Position: Position',
    aggfunc='first'
).drop('Verjüngungsforschung')

fig, ax = plt.subplots(figsize=(11,11))

sb.heatmap(
    pivot_df.T.corr(),
    annot=True,
    cmap='coolwarm',
    center=0,
    fmt=".1f",
    linewidths=.5,
    annot_kws={"size": 8},
    ax=ax, 
)

fig.savefig('heatmap.jpg')


from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

data_pcr = PCA(n_components=2).fit_transform(
    StandardScaler().fit_transform(
        pivot_df.T.corr()
    )
)

fig, ax = plt.subplots(figsize=(11,11))

ax.scatter(data_pcr[:,0], data_pcr[:,1], alpha=.5)

for i, party in enumerate(pivot_df.index):
    ax.annotate(
        party,
        (data_pcr[i, 0], data_pcr[i, 1]),
        textcoords="offset points",
        xytext=(5,2)
    )
    
ax.set_xlabel('PCA dim 1')
ax.set_ylabel('PCA dim 2')

fig.savefig('pca.jpg')
Editor is loading...
Leave a Comment