38 lines
1.9 KiB
Python
Executable File
38 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from pandas import read_csv
|
|
import matplotlib.pyplot as plt
|
|
import matplotlib.ticker as mtick
|
|
import matplotlib as mpl
|
|
mpl.rcParams['figure.dpi'] = 1200
|
|
import numpy as np
|
|
import pathlib
|
|
|
|
class display:
|
|
def __init__(self, filename) -> None:
|
|
"""Start the actual import process. Seperates process and setup."""
|
|
with open(filename, mode='r', encoding='utf-8-sig', newline='') as csv_file:
|
|
years = np.array([2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024])
|
|
styles = ["roenom", "roereal", "roetaxed", "realefftax"]
|
|
cols = [f"{style}{year}" for style in styles for year in years]
|
|
reader = read_csv(csv_file, usecols=cols, dtype=np.float32, low_memory=True)
|
|
plt.style.use('_mpl-gallery')
|
|
for style in styles:
|
|
style_cols = [f"{style}{year}" for year in years]
|
|
fig, ax = plt.subplots(figsize=(12, 6))
|
|
data = reader[style_cols].dropna(how='all', axis=1)
|
|
data_list = []
|
|
data_list = [data[col].dropna().values for col in style_cols if col in data.columns]
|
|
ax.boxplot(data_list, positions=years[:len(data_list)], patch_artist=True,
|
|
showmeans=False, showfliers=False,
|
|
medianprops={"color": "white", "linewidth": 0.5},
|
|
boxprops={"facecolor": "C0", "edgecolor": "white",
|
|
"linewidth": 0.5},
|
|
whiskerprops={"color": "C0", "linewidth": 1.5},
|
|
capprops={"color": "C0", "linewidth": 1.5})
|
|
ax.yaxis.set_major_formatter(mtick.PercentFormatter(1.0))
|
|
plt.figtext(0.5, 0.01, style, ha='center', va='bottom')
|
|
plt.show()
|
|
|
|
|
|
display(pathlib.Path('/home/user/bachelorarbeit_importer/data/', 'cleaned_st_neu_verlustausschluss.csv'))
|