Dachbodentemperatur
Bibliotheken importieren
# Name des aktuellen Notebooks für die exportierten Datein
file_name = "Dachbodentemperatur"
# Ordner auf dem Server (nach files/)
ftp_folder = 'Notebooks/Aufbereitung'
## Bibliotheken, Module und Text- bzw- Grafikformatierungen aus zentraler Datei laden
%run ../Template/libraries_and_styles.ipynb
## Warum auch immer muss rcParams.update() in eine eigene Zelle...
mpl.use('WebAgg')
mpl.use("pgf")
mpl.rcParams.update(params)
Daten Import
daten = pd.read_csv('../1_Daten/Arbeitsdaten/Daten_15s.csv')
daten.set_index(['Zeit'], inplace=True)
daten.index = pd.to_datetime(daten.index,infer_datetime_format=True)
Berechnung
## Zeitraum der fehlenden Dachbodentemperatur mmit dem 2-tagesdurchschnitt des Solar_RL zwischen 3 und 6 Uhr nachts füllen
## Tagesdurchschnitt des Solar_RL zwischen 3 und 6
TatticCorr = daten.S_Solar_RL.loc[(daten.index.hour>=3) & (daten.index.hour<=6)].resample("1D").mean()
## Mittelwert von heute und gestern
TatticCorr = (TatticCorr + TatticCorr.shift(-1))/2
## auf 15s sampeln
TatticCorr = TatticCorr.resample("15s").pad()
## auf Zeitraum stutzen
# TatticCorr = TatticCorr.loc[von:bis]
## die NaN am Ende auffüllen
TatticCorr.fillna(method='ffill', inplace =True)
## die fehlenden Daten ersetzen
daten["S_Dachbodentemperatur_korr"] = TatticCorr
Plot
von = pd.to_datetime("2017-05-01 00:00:00",infer_datetime_format=True)
bis = pd.to_datetime("2018-04-30 23:00:00",infer_datetime_format=True)
index = ['Mai', 'Jun', 'Jul','Aug','Sep','Okt','Nov','Dez','Jan', 'Feb', 'Mrz','Apr']
# Set the locator
locator = mdates.MonthLocator() # every month
# Specify the format - %b gives us Jan, Feb...
fmt = mdates.DateFormatter('%b')
fig, ax = plt.subplots()
daten['S_Dachbodentemperatur'].plot(ax=ax,color=colo('blau',1), linewidth=0.5, label = 'Dachbodentemperatur')
daten.loc[von:bis,"S_Dachbodentemperatur_korr"].plot(ax=ax,color=colo('rot',1),linewidth=0.5, label = 'Dachbodentemperatur korr')
ax.set_ylabel('Temperatur (C)')
ax.set_xlabel('')
ax.set_xlim(von, bis)
X = plt.gca().xaxis
X.set_major_locator(mdates.MonthLocator())
X.set_major_formatter(mdates.DateFormatter('%b'))
plt.setp(ax.get_xticklabels(), rotation=0, horizontalalignment='left')
h0, l0 = ax.get_legend_handles_labels()
legend = plt.legend(h0, l0, ncol=1, loc=1)
set_legend_linewidth(legend)
plt.savefig(output_folder + '/' + file_name + '.pdf')
display(fig)
Abweichung
von = pd.to_datetime("2017-07-12 16:00:00",infer_datetime_format=True)
bis = pd.to_datetime("2017-08-30 16:00:00",infer_datetime_format=True)
print(daten['S_Dachbodentemperatur_korr'].loc[von:bis].resample('Y').mean().mean())
print(daten['S_Dachbodentemperatur'].loc[von:bis].resample('Y').mean().mean())
diff = daten['S_Dachbodentemperatur'].loc[von:bis] - daten['S_Dachbodentemperatur_korr'].loc[von:bis]
print(diff.std())
32.13861961274062
32.09672797303931
0.7240671998506827
## Polynome für Regerssionsgerade berechnen und ausgeben
## Bestimmtheitsmaß R²
def r2(yi,yhati):
ybar = np.sum( yi)/len(yi)
ssres = np.sum((yi - yhati)**2)
sstot = np.sum((yi - ybar)**2)
r2 = 1 - ssres / sstot
return r2
daten.fillna(method='bfill', inplace =True)
von = '2017-08'
bis = '2017-09'
sample = "H"
X_Wert = daten['L_Ablufttemperatur'].loc[von : bis].resample(sample).mean()
Y_Wert = daten['S_Dachbodentemperatur'].loc[von : bis].resample(sample).mean()
w = np.polyfit(X_Wert,Y_Wert,3)
p = np.poly1d(w) #polynom defined by the coefficients in w
r2_0 = r2(Y_Wert,p(X_Wert))
## Punktwolke (Scatter) und Regressionsgerade plotten
X = np.linspace(10,50,10)
fig, ax = plt.subplots()
ax.scatter(X_Wert,Y_Wert, color=colo('rot',1), linewidth=0.8, alpha = 0.8, label = 'Scatter')
ax.plot(X,p(X),color=colo('blau',1),linewidth=0.8,alpha = 0.8,label = 'Regressionsgerade')
ax.set_xlabel('Ablufttemperatur')
ax.set_xlabel('Dachbodentemperatur')
h0, l0 = ax.get_legend_handles_labels()
legend = plt.legend(h0, l0, ncol=1, loc=1 )
plt.savefig(output_folder + '/' + file_name + '.pdf' )
print("Polynome:", r2_0, w)
display(fig)
Polynome: 0.8594110961829179 [-1.01571397e-03 9.79011425e-02 -2.25641406e+00 3.86639324e+01]
Save & Upload
## Skriptlaufzeit Ende (Funktion in: libraries_and_styles.ipynb)
hours, minutes, seconds = laufzeit()
## Notebook speichern vor dem Upload (Funktion in: libraries_and_styles.ipynb)
save_notebook()
## Notebook als Markdown Datei mit eingebetten Grafiken speichern und auf den Server laden
%run ../Template/save_and_upload.ipynb
Aufbereitung visuelle_Kontrolle