Kalibrierung_Testo_174H

Kalibrierung der 4 Desto Datenlogger und Effizienzberechnung während des Testmonats

Bibliotheken importieren

# Name des aktuellen Notebooks für die exportierten Datein
file_name = "Kalibrierung_Testo_174H" 
# 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.rcParams.update(params)

Daten Import

zusammenfügen

# wrg = pd.read_csv("MA_WGR_Daten_Testo.csv",sep=";",decimal=",",encoding="cp1252")
# wrg['Datum'] = pd.to_datetime(wrg["Datum"],dayfirst=True,)
# wrg.set_index(["Datum"], inplace=True)

# wrgF = pd.read_csv("MA_WGR_Daten_Testo_Feb.csv",sep=";",decimal=",",encoding="cp1252")
# wrgF['Datum'] = pd.to_datetime(wrgF["Datum"],dayfirst=True,)
# wrgF.set_index(["Datum"], inplace=True)

# wrgF2 = pd.read_csv("MA_WGR_Daten_Testo_Feb2.csv",sep=";",decimal=",",encoding="cp1252")
# wrgF2['Datum'] = pd.to_datetime(wrgF2["Datum"],dayfirst=True,)
# wrgF2.set_index(["Datum"], inplace=True)

# wrg   = wrg.resample('15s').interpolate(method='linear')
# wrgF  = wrgF.resample('15s').interpolate(method='linear')
# wrgF2 = wrgF2.resample('15s').interpolate(method='linear')

# daten = pd.read_csv('../1_Daten/Arbeitsdaten/Daten_15s.csv')
# daten["Zeit"] = pd.to_datetime(daten["Zeit"],dayfirst=True)
# daten["Zeit1"] = daten["Zeit"]
# daten.set_index(['Zeit1'], inplace=True)
# daten = daten.loc['2017-12-05 10:00:00':'2018-02-23 14:38:00']
# daten['L_Zuluft_VPunkt'] = daten['L_Zuluft_1_VPunkt']  + daten['L_Zuluft_2_VPunkt'] + daten['L_Zuluft_3_VPunkt'] 

# # concat wrg`s
# frames = [wrg, wrgF, wrgF2]
# testo = pd.concat(frames)
# testo.columns = ['Außenluft_C', 'Außenluft_rF', 'Zuluft_C', 'Zuluft_rF', 'Abluft_C','Abluft_rF', 'Fortluft_C', 'Fortluft_rF']
# testo['Zeit'] = testo.index
# testo.to_csv('Testo_174H.csv')

# ## GET the data, just for saving, not use
# # Testo_174H = pd.read_csv("Testo_174H.csv")
# # Testo_174H['Datum'] = pd.to_datetime(Testo_174H["Datum"],dayfirst=True,)
# # Testo_174H.set_index(["Datum"], inplace=True)
# # Testo_174H.head()


# # merge mit testo
# testo  = testo.merge(daten , left_on=['Zeit'], right_on=['Zeit'], how='outer')
# testo["Zeit"] = pd.to_datetime(testo["Zeit"],dayfirst=True)
# testo.set_index(['Zeit'], inplace=True)
# testo.to_csv('Testo_Arbeitsdaten_15s.csv')
# # testo.head()

# print(wrg.head())# 2017-12-05 10:00:00
# print(wrg.tail())# 2017-12-12 10:18:00 
# print(wrgF.head())# 2018-01-30 11:11:00
# print(wrgF.tail())# 2018-02-12 12:36:00 
# print(wrgF2.head())# 2018-02-15 16:40:00 
# print(wrgF2.tail())# 2018-02-23 14:38:00 


## 1. Zeitraum
# von = '2017-12-05 10:00:00'
# bis = '2017-12-12 10:18:00 '
# ## 2. Zeitraum
# von = '2018-01-30 11:00:00'
# bis = '2018-02-12 11:00:00'
# ## 3. Zeitraum
# von = '2018-02-15 16:40:00'
# bis = '2018-02-21 10:00:00 '

## gesamter Zeitraum
von = '2017-12-05 10:00:00'
bis = '2018-02-21 10:00:00'

daten = pd.read_csv("Testo_Arbeitsdaten_15s.csv")
daten['Zeit'] = pd.to_datetime(daten["Zeit"],dayfirst=True,)
daten.set_index(["Zeit"], inplace=True)
# daten.head()

Plot Einzelmessungen

# # 2017-12-05 10:00:00 2017-12-12 10:18:00 

# fig, ax = plt.subplots()
# wrg.plot(ax=ax, linewidth=0.5)   

# daten['L_Aussenlufttemperatur_1'].plot(ax=ax,color=colo('grün',1.2), linewidth=0.8)  

# # Achsen
# # ax.set_ylabel(r'\textbf{Energie} ($kWh$)')  
# # ax.set(ylim=[0,0.04]) 
# ax.set_xlabel('')  
# # Legende
# h0, l0 = ax.get_legend_handles_labels()  
# legend = plt.legend(h0, l0, ncol=4, loc=1)
# set_legend_linewidth(legend) 
# ax.set(xlim=[pd.to_datetime("2017-12-05 10:00:00"),pd.to_datetime("2017-12-12 10:18:00 ")])



# # 2018-01-30 11:11:00 2018-02-12 12:36:00 
# fig, ax = plt.subplots()
# wrgF.plot(ax=ax, linewidth=0.5)   
# daten['L_Aussenlufttemperatur_1'].plot(ax=ax,color=colo('grün',1.2), linewidth=0.8)  

# # Achsen
# # ax.set_ylabel(r'\textbf{Energie} ($kWh$)')  
# # ax.set(ylim=[0,0.04]) 
# ax.set_xlabel('')  
# # Legende
# h0, l0 = ax.get_legend_handles_labels()  
# legend = plt.legend(h0, l0, ncol=4, loc=1)
# set_legend_linewidth(legend) 
# ax.set(xlim=[pd.to_datetime("2018-01-30 11:11:00"),pd.to_datetime("2018-02-12 12:36:00")])



# # 2018-02-15 16:40:00  2018-02-23 14:38:00 
# fig, ax = plt.subplots()
# wrgF2.plot(ax=ax, linewidth=0.5)   
# daten['L_Aussenlufttemperatur_1'].plot(ax=ax,color=colo('grün',1.2), linewidth=0.8)  
# # Achsen
# # ax.set_ylabel(r'\textbf{Energie} ($kWh$)')  
# # ax.set(ylim=[0,0.04]) 
# ax.set_xlabel('')  
# # Legende
# h0, l0 = ax.get_legend_handles_labels()  
# legend = plt.legend(h0, l0, ncol=4, loc=1)
# set_legend_linewidth(legend) 
# ax.set(xlim=[pd.to_datetime("2018-02-15 16:40:00"),pd.to_datetime("2018-02-23 14:38:00")])

Plot gesamt bax


# https://pydoc.net/brokenaxes/0.4.2/brokenaxes/
eins  = pd.to_datetime("2017-12-05 10:00", infer_datetime_format=True).to_pydatetime()
zwei  = pd.to_datetime("2017-12-12 10:18", infer_datetime_format=True).to_pydatetime()
drei  = pd.to_datetime("2018-01-30 11:11", infer_datetime_format=True).to_pydatetime()
vier  = pd.to_datetime("2018-02-12 12:36", infer_datetime_format=True).to_pydatetime()
fünf  = pd.to_datetime("2018-02-15 16:40", infer_datetime_format=True).to_pydatetime()
sechs = pd.to_datetime("2018-02-23 14:38", infer_datetime_format=True).to_pydatetime()


fig = plt.figure(constrained_layout=False, figsize=(10,3))
bax = brokenaxes(xlims=((eins, zwei), (drei, vier), (fünf,sechs)),  hspace=1.2) 
bax.plot(daten.index, daten['Außenluft_C'],  color=colo('blau',1),     linewidth=0.5, label = r'Außenluft')
bax.plot(daten.index, daten['Außenluft_rF'], color=colo('blau',1.4),   linewidth=0.5, label = r'__nolable__')
bax.plot(daten.index, daten['Zuluft_C'],     color=colo('rot',1),      linewidth=0.5, label = r'Zuluft')
bax.plot(daten.index, daten['Zuluft_rF'],    color=colo('rot',1.4),    linewidth=0.5, label = r'__nolable__')
bax.plot(daten.index, daten['Abluft_C'],     color=colo('orange',1),   linewidth=0.5, label = r'Abluft')
bax.plot(daten.index, daten['Abluft_rF'],    color=colo('orange',1.4), linewidth=0.5, label = r'__nolable__')
bax.plot(daten.index, daten['Fortluft_C'],   color=colo('violet',1),   linewidth=0.5, label = r'Fortluft')
bax.plot(daten.index, daten['Fortluft_rF'],  color=colo('violet',1.4), linewidth=0.5, label = r'__nolable__')


fig.axes[0].get_xaxis().set_major_formatter(mdates.DateFormatter("%d.%m."))
fig.axes[1].get_xaxis().set_major_formatter(mdates.DateFormatter("%d.%m."))
fig.axes[2].get_xaxis().set_major_formatter(mdates.DateFormatter("%d.%m."))

bax.legend(loc=1, ncol=4)
bax.set_ylabel('Temp. / rel. LF')

Text(0, 0.5, 'Temp. / rel. LF')

Kalibrierung

## Funktion kalibriert und gib Strings für copy&paste aus
def kalibrieren(X,Y):
    polyfit = np.polyfit(X,Y,deg=1)
    schaetzer = np.poly1d(polyfit)
   # print(schaetzer)
#     print('daten_kal_sub[\''+X.name+'\'] = pow(daten_kal_sub[\''+X.name+'\'],3) * ' +str(schaetzer[3]) +   ' + pow(daten_kal_sub[\''+X.name+'\'],2) * ' +str(schaetzer[2]) +   ' + daten_kal_sub[\''+X.name+'\'] * ' +str(schaetzer[1]) +   ' + ' +str(schaetzer[0])    )
    print('daten_kal_sub[\''+X.name+'\'] = daten_kal_sub[\''+X.name+'\'] * ' +str(schaetzer[1]) +   ' + ' +str(schaetzer[0])    )
    return schaetzer(X)

## DataFrame für den Zeitraum der Kalibrierung
kal = daten.loc['2018-02-22 16:40:00':'2018-02-23 14:38:00']

## Referenzen definieren
# kal['ref_rF'] = (kal.Abluft_rF + kal.Fortluft_rF  + kal.Zuluft_rF + kal.Außenluft_rF) / 4 
# kal['ref_C']  = (kal.Abluft_C + kal.Fortluft_C + kal.Zuluft_C + kal.Außenluft_C) / 4

# kal['ref_rF'] = (kal.Abluft_rF + kal.Fortluft_rF ) / 2
# kal['ref_C']  = (kal.Abluft_C + kal.Fortluft_C + kal.Zuluft_C) / 3

# kal['ref_rF'] = kal.Zuluft_rF  
# kal['ref_C'] = (kal.Abluft_C + kal.Fortluft_C + kal.Zuluft_C) / 3

# kal['ref_rF'] = kal.Außenluft_rF  
# kal['ref_C'] = (kal.Abluft_C + kal.Fortluft_C + kal.Zuluft_C) / 3

# kal['ref_rF'] = kal.Außenluft_rF  
# kal['ref_C'] = kal.Außenluft_C 

kal['ref_rF'] = (kal.Abluft_rF + kal.Fortluft_rF  + kal.Zuluft_rF + kal.Außenluft_rF) / 4 
kal['ref_C']  = (kal.Abluft_C + kal.Fortluft_C + kal.Zuluft_C + kal.Außenluft_C) / 4


kal['Abluft_rF']    = kalibrieren(kal['Abluft_rF'],   kal['ref_rF'])
kal['Fortluft_rF']  = kalibrieren(kal['Fortluft_rF'], kal['ref_rF'])
kal['Außenluft_rF'] = kalibrieren(kal['Außenluft_rF'],kal['ref_rF'])
kal['Zuluft_rF']    = kalibrieren(kal['Zuluft_rF'],   kal['ref_rF']) 

kal['Abluft_C']     = kalibrieren(kal['Abluft_C'],    kal['ref_C'])  
kal['Fortluft_C']   = kalibrieren(kal['Fortluft_C'],  kal['ref_C']) 
kal['Außenluft_C']  = kalibrieren(kal['Außenluft_C'], kal['ref_C'])  
kal['Zuluft_C']     = kalibrieren(kal['Zuluft_C'],    kal['ref_C']) 
daten_kal_sub['Abluft_rF'] = daten_kal_sub['Abluft_rF'] * 0.8305882666625446 + 8.055745638372443
daten_kal_sub['Fortluft_rF'] = daten_kal_sub['Fortluft_rF'] * 1.062370224215799 + -1.121169045293179
daten_kal_sub['Außenluft_rF'] = daten_kal_sub['Außenluft_rF'] * 0.8354930285393901 + 5.015519047999741
daten_kal_sub['Zuluft_rF'] = daten_kal_sub['Zuluft_rF'] * 0.9236537106550828 + 2.6983173712048316
daten_kal_sub['Abluft_C'] = daten_kal_sub['Abluft_C'] * 0.9596161144526612 + 0.6980052676578619
daten_kal_sub['Fortluft_C'] = daten_kal_sub['Fortluft_C'] * 0.9053512255469426 + 1.7706350319492505
daten_kal_sub['Außenluft_C'] = daten_kal_sub['Außenluft_C'] * 1.0931527544943642 + -1.5660310943041458
daten_kal_sub['Zuluft_C'] = daten_kal_sub['Zuluft_C'] * 0.9264435014124848 + 1.3362432683236858
a = 3
b = 5
c = 4
d = 4

arr_mitte = (a+b+c+d)/4
mitte = ( a*a + b*b + c*c + d*d)**(1./4)


print(arr_mitte)
print(mitte)
4.0
2.8502698827717983

Plot Kalibrierung

## DataFrame für den Zeitraum der Kalibrierung
daten_sub = daten.loc['2018-02-22 16:40:00':'2018-02-23 14:38:00']

fig, ax = plt.subplots() 
daten_sub['Außenluft_C'].plot(ax=ax,color=colo('blau',1), linewidth=0.5, label = 'Außenluft') 
daten_sub['Zuluft_C'].plot(ax=ax,color=colo('rot',1), linewidth=0.5, label = 'Zuluft') 
daten_sub['Abluft_C'].plot(ax=ax,color=colo('orange',1), linewidth=0.5, label = 'Abluft') 
daten_sub['Fortluft_C'].plot(ax=ax,color=colo('violet',1), linewidth=0.5, label = 'Fortluft') 

ax2 = ax.twinx()
daten_sub['Außenluft_rF'].plot(ax=ax2,color=colo('blau',1), linewidth=0.5, label = '__nolable__') 
daten_sub['Zuluft_rF'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = '__nolable__') 
daten_sub['Abluft_rF'].plot(ax=ax2,color=colo('orange',1), linewidth=0.5, label = '__nolable__') 
daten_sub['Fortluft_rF'].plot(ax=ax2,color=colo('violet',1), linewidth=0.5, label = '__nolable__') 

ax.set_xlabel('')  
ax.set(ylim=[18,23])
ax.set_yticks([18.5,19,19.5])  
ax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')  
ax2.set(ylim=[27,48]) 
ax2.set_yticks([39,41,43])
ax2.set_ylabel(r'\textbf{rel Luftfeuchte} (\%)') 

# Legende
h0, l0 = ax.get_legend_handles_labels()  
h2, l2 = ax2.get_legend_handles_labels()  
legend = plt.legend(h0+h2, l0+l2, ncol=4, loc=1)
set_legend_linewidth(legend) 
plt.title('Testo174H vor Kalibrierung')
# ax.set(xlim=[pd.to_datetime("2018-02-22 16:40:00"),pd.to_datetime("2018-02-23 14:38:00")])



## DataFrame für den Zeitraum der Kalibrierung
# df ist bei der Kalibreirung schon erstellt worden

fig, ax = plt.subplots() 
kal['Außenluft_C'].plot(ax=ax,color=colo('blau',1), linewidth=0.5, label = 'Außenluft') 
kal['Zuluft_C'].plot(ax=ax,color=colo('rot',1), linewidth=0.5, label = 'Zuluft') 
kal['Abluft_C'].plot(ax=ax,color=colo('orange',1), linewidth=0.5, label = 'Abluft') 
kal['Fortluft_C'].plot(ax=ax,color=colo('violet',1), linewidth=0.5, label = 'Fortluft') 

ax2 = ax.twinx()
kal['Außenluft_rF'].plot(ax=ax2,color=colo('blau',1), linewidth=0.5, label = '__nolable__') 
kal['Zuluft_rF'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = '__nolable__') 
kal['Abluft_rF'].plot(ax=ax2,color=colo('orange',1), linewidth=0.5, label = '__nolable__') 
kal['Fortluft_rF'].plot(ax=ax2,color=colo('violet',1), linewidth=0.5, label = '__nolable__') 

ax.set_xlabel('')  
ax.set(ylim=[18,23])
ax.set_yticks([18.5,19,19.5])  
ax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')  
ax2.set(ylim=[27,48]) 
ax2.set_yticks([39,41,43])
ax2.set_ylabel(r'\textbf{rel Luftfeuchte} (\%)') 

# Legende
h0, l0 = ax.get_legend_handles_labels()  
h2, l2 = ax2.get_legend_handles_labels()  
legend = plt.legend(h0+h2, l0+l2, ncol=4, loc=1)
set_legend_linewidth(legend) 
plt.title('Testo174H nach Kalibrierung')
# ax.set(xlim=[pd.to_datetime("2018-02-22 16:40:00"),pd.to_datetime("2018-02-23 14:38:00")])





## Aus der Kalibrierung vom 25.03.2019 gegen das Testo480
## Excel MA_Testo_174_Kalibrierung
kal1 = daten.loc['2018-02-22 16:40:00':'2018-02-23 14:38:00']
kal1['Abluft_rF'] = kal1['Abluft_rF']       * 1.0386 - 0.0826
kal1['Fortluft_rF'] = kal1['Fortluft_rF']   * 0.9522 + 2.5642
kal1['Außenluft_rF'] = kal1['Außenluft_rF'] * 1.0568 + 3.1864
kal1['Zuluft_rF'] = kal1['Zuluft_rF']       * 1.0489 + 2.9552
kal1['Abluft_C'] = kal1['Abluft_C']         * 1.0447 - 0.5989
kal1['Fortluft_C'] = kal1['Fortluft_C']     * 1.0002 + 0.2829
kal1['Außenluft_C'] = kal1['Außenluft_C']   * 1.0191 - 0.809
kal1['Zuluft_C'] = kal1['Zuluft_C']         * 1.0059 - 0.3276


## DataFrame für den Zeitraum der Kalibrierung
# df ist bei der Kalibreirung schon erstellt worden

fig, ax = plt.subplots() 
kal1['Außenluft_C'].plot(ax=ax,color=colo('blau',1), linewidth=0.5, label = 'Außenluft') 
kal1['Zuluft_C'].plot(ax=ax,color=colo('rot',1), linewidth=0.5, label = 'Zuluft') 
kal1['Abluft_C'].plot(ax=ax,color=colo('orange',1), linewidth=0.5, label = 'Abluft') 
kal1['Fortluft_C'].plot(ax=ax,color=colo('violet',1), linewidth=0.5, label = 'Fortluft') 

ax2 = ax.twinx()
kal1['Außenluft_rF'].plot(ax=ax2,color=colo('blau',1), linewidth=0.5, label = '__nolable__') 
kal1['Zuluft_rF'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = '__nolable__') 
kal1['Abluft_rF'].plot(ax=ax2,color=colo('orange',1), linewidth=0.5, label = '__nolable__') 
kal1['Fortluft_rF'].plot(ax=ax2,color=colo('violet',1), linewidth=0.5, label = '__nolable__') 

ax.set_xlabel('')  
ax.set(ylim=[18,23])
ax.set_yticks([18.5,19,19.5])  
ax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')  
ax2.set(ylim=[27,48]) 
ax2.set_yticks([39,41,43])
ax2.set_ylabel(r'\textbf{rel Luftfeuchte} (\%)') 

# Legende
h0, l0 = ax.get_legend_handles_labels()  
h2, l2 = ax2.get_legend_handles_labels()  
legend = plt.legend(h0+h2, l0+l2, ncol=4, loc=1)
set_legend_linewidth(legend) 
plt.title('Kalibrierung gegen Testo480')
# ax.set(xlim=[pd.to_datetime("2018-02-22 16:40:00"),pd.to_datetime("2018-02-23 14:38:00")])
Text(0.5, 1.0, 'Kalibrierung gegen Testo480')

WRG

kalibrieren

## löschen
## ungenaue Enden abschneiden
datena = daten.loc['2017-12-05 11:00:00':'2017-12-12 09:00:00']
datenb = daten.loc['2018-01-30 12:00:00':'2018-02-12 11:00:00'] 
datenc = daten.loc['2018-02-15 18:00:00':'2018-02-21 10:00:00'] 
daten = pd.concat([datena, datenb, datenc])
daten.dropna(inplace=True)
## wurde da noch mal kalibriert?
datena = daten.loc['2017-12-05 10:00:00':'2018-02-05 08:00:00']
datenb = daten.loc['2018-02-05 18:00:00':'2018-02-21 10:00:00'] 
daten = pd.concat([datena, datenb])
daten.dropna(inplace=True)
print(f'daten:         {round(daten.Abluft_rF.mean(),2)}') 
daten:         28.19
## df zur Kontrolle
daten_sub     = daten.copy() 
## df für Kalibrierung
daten_kal_sub = daten.copy() 
print(f'daten:         {round(daten.Abluft_rF.mean(),2)}')
print(f'daten_sub:     {round(daten_sub.Abluft_rF.mean(),2)}')
print(f'daten_kal_sub: {round(daten_kal_sub.Abluft_rF.mean(),2)}')
daten:         28.19
daten_sub:     28.19
daten_kal_sub: 28.19
## Aus der Kalibrierung vom 25.03.2019 gegen das Testo480 Excel MA_Testo_174_Kalibrierung
# daten_kal_sub['Abluft_rF']    = daten['Abluft_rF']    * 1.0386 - 0.0826
# daten_kal_sub['Fortluft_rF']  = daten['Fortluft_rF']  * 0.9522 + 2.5642
# daten_kal_sub['Außenluft_rF'] = daten['Außenluft_rF'] * 1.0568 + 3.1864
# daten_kal_sub['Zuluft_rF']    = daten['Zuluft_rF']    * 1.0489 + 2.9552
# daten_kal_sub['Abluft_C']     = daten['Abluft_C']     * 1.0447 - 0.5989
# daten_kal_sub['Fortluft_C']   = daten['Fortluft_C']   * 1.0002 + 0.2829
# daten_kal_sub['Außenluft_C']  = daten['Außenluft_C']  * 1.0191 - 0.809
# daten_kal_sub['Zuluft_C']     = daten['Zuluft_C']     * 1.0059 - 0.3276


## kal['ref_rF'] = (kal.Abluft_rF + kal.Fortluft_rF ) / 2
## kal['ref_C']  = (kal.Abluft_C + kal.Fortluft_C + kal.Zuluft_C) / 3
daten_kal_sub['Abluft_rF']    = daten_kal_sub['Abluft_rF']    * 0.828993573070746  +  6.801455317349444
daten_kal_sub['Fortluft_rF']  = daten_kal_sub['Fortluft_rF']  * 1.0674200418092923 + -2.6412934624410167
daten_kal_sub['Außenluft_rF'] = daten_kal_sub['Außenluft_rF'] * 0.8002161817773167 +  5.231630936999777
daten_kal_sub['Zuluft_rF']    = daten_kal_sub['Zuluft_rF']    * 0.9223667924445846 +  1.4339541677129877
daten_kal_sub['Abluft_C']     = daten_kal_sub['Abluft_C']     * 1.0209706144779265 + -0.4144120307172744
daten_kal_sub['Fortluft_C']   = daten_kal_sub['Fortluft_C']   * 0.9647290370199838 +  0.6981836985112495
daten_kal_sub['Außenluft_C']  = daten_kal_sub['Außenluft_C']  * 1.1242036726591484 + -2.0880414590720107
daten_kal_sub['Zuluft_C']     = daten_kal_sub['Zuluft_C']     * 0.9913301797188931 +  0.1560904830431007
# daten.info()
print(f'daten:         {round(daten.Abluft_rF.mean(),2)}')
print(f'daten_sub:     {round(daten_sub.Abluft_rF.mean(),2)}')
print(f'daten_kal_sub: {round(daten_kal_sub.Abluft_rF.mean(),2)}')

daten_kal_sub.to_csv('Testo_Arbeitsdaten_15s_WRG_Eff.csv')
daten:         28.19
daten_sub:     28.19
daten_kal_sub: 30.17

#################################### INSERT HERE ####################################
## Referenz:
## kal['ref_rF'] = (kal.Abluft_rF + kal.Fortluft_rF ) / 2
## kal['ref_C']  = (kal.Abluft_C + kal.Fortluft_C + kal.Zuluft_C) / 3
# daten_kal_sub['Abluft_rF'] = daten_kal_sub['Abluft_rF'] * 0.828993573070746 + 6.801455317349444
# daten_kal_sub['Fortluft_rF'] = daten_kal_sub['Fortluft_rF'] * 1.0674200418092923 + -2.6412934624410167
# daten_kal_sub['Außenluft_rF'] = daten_kal_sub['Außenluft_rF'] * 0.8002161817773167 + 5.231630936999777
# daten_kal_sub['Zuluft_rF'] = daten_kal_sub['Zuluft_rF'] * 0.9223667924445846 + 1.4339541677129877
# daten_kal_sub['Abluft_C'] = daten_kal_sub['Abluft_C'] * 1.0209706144779265 + -0.4144120307172744
# daten_kal_sub['Fortluft_C'] = daten_kal_sub['Fortluft_C'] * 0.9647290370199838 + 0.6981836985112495
# daten_kal_sub['Außenluft_C'] = daten_kal_sub['Außenluft_C'] * 1.1242036726591484 + -2.0880414590720107
# daten_kal_sub['Zuluft_C'] = daten_kal_sub['Zuluft_C'] * 0.9913301797188931 + 0.1560904830431007

#################################### INSERT HERE ####################################b

# display(daten_sub[['Abluft_rF','Fortluft_rF','Außenluft_rF','Zuluft_rF','Abluft_C','Fortluft_C','Außenluft_C','Zuluft_C',]].mean())
# display(daten_kal_sub[['Abluft_rF','Fortluft_rF','Außenluft_rF','Zuluft_rF','Abluft_C','Fortluft_C','Außenluft_C','Zuluft_C',]].mean())
# display(daten.tail(10))
# display(daten_sub.tail(10))
# display(daten_kal_sub.tail(10))
# daten_kal_sub['W_Luftdruck']

Effizienz berechnen

############## VORHER ############## 
daten_sub['W_Luftdruck'] =    101.325  ## 101,3 kPa = 1,013 bar
daten_sub['L_Zuluft_VPunkt'] = daten_sub['L_Zuluft_1_VPunkt']  + daten_sub['L_Zuluft_2_VPunkt'] + daten_sub['L_Zuluft_3_VPunkt'] 

## Wassergehalte (WG) in den  Luftströmen daten_sub
daten_sub['Außenluft_WG'] = psy.Hum_rat2(daten_sub['Außenluft_C'],     daten_sub['Außenluft_rF']/100,         daten_sub['W_Luftdruck'])
daten_sub['Zuluft_WG'] =    psy.Hum_rat2(daten_sub['Zuluft_C'],        daten_sub['Zuluft_rF']/100,            daten_sub['W_Luftdruck'])
daten_sub['Abluft_WG'] =    psy.Hum_rat2(daten_sub['Abluft_C'],        daten_sub['Abluft_rF']/100,            daten_sub['W_Luftdruck'])
daten_sub['Fortluft_WG'] =  psy.Hum_rat2(daten_sub['Fortluft_C'],      daten_sub['Fortluft_rF']/100,          daten_sub['W_Luftdruck'])


## Enthalpien in den  Luftströmen daten_sub
daten_sub['h21_Außenluft'] =  psy.Enthalpy_Air_H2O(daten_sub['Außenluft_C'], daten_sub['Außenluft_WG'])
daten_sub['h22_Zuluft'] =     psy.Enthalpy_Air_H2O(daten_sub['Zuluft_C'],    daten_sub['Zuluft_WG'])
daten_sub['h11_Abluft'] =     psy.Enthalpy_Air_H2O(daten_sub['Abluft_C'],    daten_sub['Abluft_WG'])
daten_sub['h12_Fortluft'] =   psy.Enthalpy_Air_H2O(daten_sub['Fortluft_C'],  daten_sub['Fortluft_WG'])

## Effizienz der Wärmerückgewinnung
daten_sub['EÜG_Fortluft'] =  (daten_sub['h11_Abluft'] - daten_sub['h12_Fortluft'])  / (daten_sub['h11_Abluft'] - daten_sub['h21_Außenluft']) * 100
daten_sub['EÜG_Außenluft'] = (daten_sub['h22_Zuluft'] - daten_sub['h21_Außenluft']) / (daten_sub['h11_Abluft'] - daten_sub['h21_Außenluft']) * 100

## Rückwärmezahl 
daten_sub['RWZ_Außenluft'] = (daten_sub['Abluft_C'] - daten_sub['Fortluft_C'])  / (daten_sub['Abluft_C'] - daten_sub['Außenluft_C']) * 100

## Gewicht der feuchten Luft
daten_sub['Außenluft_Masse'] = psy.Dry_Air_Density(daten_sub['W_Luftdruck'], daten_sub['Außenluft_C'], daten_sub['Außenluft_WG']) * (1 + daten_sub['Außenluft_WG'])
daten_sub['Fortluft_Masse'] =  psy.Dry_Air_Density(daten_sub['W_Luftdruck'], daten_sub['Fortluft_C'],  daten_sub['Fortluft_WG']) * (1 + daten_sub['Fortluft_WG'])  

## Energie der Luftmassenströme
daten_sub['Außenluft_Energie']    = daten_sub['h21_Außenluft'] *  daten_sub['Außenluft_Masse'] * daten_sub['L_Zuluft_VPunkt'] * (1/3600) ## kJ in kWh
daten_sub['Fortluftluft_Energie'] = daten_sub['h12_Fortluft']  *  daten_sub['Fortluft_Masse']  * daten_sub['L_Zuluft_VPunkt'] * (1/3600) ## kJ in kWh
daten_sub['verlorene_Energie']    = daten_sub['Fortluftluft_Energie'] - daten_sub['Außenluft_Energie']

daten_sub['Zuluft_Druck_Schwelle_unten'] = 80
daten_sub['Zuluft_Druck_Schwelle_oben']  = 93

daten_sub['EÜG_Fortluft_bereinigt_unten']  = np.where(daten_sub['L_Zuluft_Druck'] < daten_sub['Zuluft_Druck_Schwelle_unten'], np.NaN,daten_sub['EÜG_Fortluft'])
daten_sub['EÜG_Außenluft_bereinigt_unten'] = np.where(daten_sub['L_Zuluft_Druck'] < daten_sub['Zuluft_Druck_Schwelle_unten'], np.NaN,daten_sub['EÜG_Außenluft'])
daten_sub['RWZ_Außenluft_bereinigt_unten'] = np.where(daten_sub['L_Zuluft_Druck'] < daten_sub['Zuluft_Druck_Schwelle_unten'], np.NaN,daten_sub['RWZ_Außenluft'])

daten_sub['EÜG_Fortluft_bereinigt']        = np.where(daten_sub['L_Zuluft_Druck'] > daten_sub['Zuluft_Druck_Schwelle_oben'],  np.NaN,daten_sub['EÜG_Fortluft_bereinigt_unten'])
daten_sub['EÜG_Außenluft_bereinigt']       = np.where(daten_sub['L_Zuluft_Druck'] > daten_sub['Zuluft_Druck_Schwelle_oben'],  np.NaN,daten_sub['EÜG_Außenluft_bereinigt_unten'])
daten_sub['RWZ_Außenluft_bereinigt']       = np.where(daten_sub['L_Zuluft_Druck'] > daten_sub['Zuluft_Druck_Schwelle_oben'],  np.NaN,daten_sub['RWZ_Außenluft_bereinigt_unten'])

daten_sub['EÜG_Fortluft_mean']  = daten_sub['EÜG_Fortluft_bereinigt'].mean()
daten_sub['EÜG_Außenluft_mean'] = daten_sub['EÜG_Außenluft_bereinigt'].mean()
daten_sub['RWZ_Außenluft_mean'] = daten_sub['RWZ_Außenluft_bereinigt'].mean()

daten_sub['RWZ_Außenluft_für_Effizienz'] = 0   
daten_sub.loc[ daten_sub['RWZ_Außenluft'].rolling(2000, center=True).std()  < 1 , 'RWZ_Außenluft_plateau'] = 1  
daten_sub.loc[ daten_sub['RWZ_Außenluft_bereinigt']                         > 1 , 'RWZ_Außenluft_Bypass_zu'] = 1  
daten_sub['RWZ_Außenluft_für_Effizienz'] = np.where( (daten_sub['RWZ_Außenluft_plateau'] == 1) & (daten_sub['RWZ_Außenluft_Bypass_zu'] == 1)  , 1, 0)




############## NACHHER ##############
daten_kal_sub['L_Zuluft_VPunkt'] = daten_kal_sub['L_Zuluft_1_VPunkt']  + daten_kal_sub['L_Zuluft_2_VPunkt'] + daten_kal_sub['L_Zuluft_3_VPunkt'] 
daten_kal_sub['W_Luftdruck'] =    101.325  ## 101,3 kPa = 1,013 bar
## Wassergehalte (WG) in den  Luftströmen daten_kal_sub
daten_kal_sub['Außenluft_WG'] = psy.Hum_rat2(daten_kal_sub['Außenluft_C'],     daten_kal_sub['Außenluft_rF']/100,         daten_kal_sub['W_Luftdruck']) 
daten_kal_sub['Zuluft_WG'] =    psy.Hum_rat2(daten_kal_sub['Zuluft_C'],        daten_kal_sub['Zuluft_rF']/100,            daten_kal_sub['W_Luftdruck']) 
daten_kal_sub['Abluft_WG'] =    psy.Hum_rat2(daten_kal_sub['Abluft_C'],        daten_kal_sub['Abluft_rF']/100,            daten_kal_sub['W_Luftdruck'])
daten_kal_sub['Fortluft_WG'] =  psy.Hum_rat2(daten_kal_sub['Fortluft_C'],      daten_kal_sub['Fortluft_rF']/100,          daten_kal_sub['W_Luftdruck'])



## Enthalpien in den  Luftströmen daten_kal_sub 
daten_kal_sub['h21_Außenluft'] =  psy.Enthalpy_Air_H2O(daten_kal_sub['Außenluft_C'], daten_kal_sub['Außenluft_WG'])
daten_kal_sub['h22_Zuluft'] =     psy.Enthalpy_Air_H2O(daten_kal_sub['Zuluft_C'],    daten_kal_sub['Zuluft_WG'])
daten_kal_sub['h11_Abluft'] =     psy.Enthalpy_Air_H2O(daten_kal_sub['Abluft_C'],    daten_kal_sub['Abluft_WG'])
daten_kal_sub['h12_Fortluft'] =   psy.Enthalpy_Air_H2O(daten_kal_sub['Fortluft_C'],  daten_kal_sub['Fortluft_WG'])

## Effizienz der Wärmerückgewinnung
daten_kal_sub['EÜG_Fortluft'] =  (daten_kal_sub['h11_Abluft'] - daten_kal_sub['h12_Fortluft'])  / (daten_kal_sub['h11_Abluft'] - daten_kal_sub['h21_Außenluft']) * 100
daten_kal_sub['EÜG_Außenluft'] = (daten_kal_sub['h22_Zuluft'] - daten_kal_sub['h21_Außenluft']) / (daten_kal_sub['h11_Abluft'] - daten_kal_sub['h21_Außenluft']) * 100

## Rückwärmezahl 
daten_kal_sub['RWZ_Außenluft'] = (daten_kal_sub['Abluft_C'] - daten_kal_sub['Fortluft_C'])  / (daten_kal_sub['Abluft_C'] - daten_kal_sub['Außenluft_C']) * 100

## Gewicht der feuchten Luft
daten_kal_sub['Außenluft_Masse'] = psy.Dry_Air_Density(daten_kal_sub['W_Luftdruck'], daten_kal_sub['Außenluft_C'], daten_kal_sub['Außenluft_WG']) * (1 + daten_kal_sub['Außenluft_WG'])
daten_kal_sub['Fortluft_Masse'] =  psy.Dry_Air_Density(daten_kal_sub['W_Luftdruck'], daten_kal_sub['Fortluft_C'],  daten_kal_sub['Fortluft_WG']) * (1 + daten_kal_sub['Fortluft_WG'])  

## Energie der Luftmassenströme
daten_kal_sub['Außenluft_Energie']    = daten_kal_sub['h21_Außenluft'] *  daten_kal_sub['Außenluft_Masse'] * daten_kal_sub['L_Zuluft_VPunkt'] * (1/3600) ## kJ in kWh
daten_kal_sub['Fortluftluft_Energie'] = daten_kal_sub['h12_Fortluft']  *  daten_kal_sub['Fortluft_Masse']  * daten_kal_sub['L_Zuluft_VPunkt'] * (1/3600) ## kJ in kWh
daten_kal_sub['verlorene_Energie']    = daten_kal_sub['Fortluftluft_Energie'] - daten_kal_sub['Außenluft_Energie']

daten_kal_sub['Zuluft_Druck_Schwelle_unten'] = 80
daten_kal_sub['Zuluft_Druck_Schwelle_oben']  = 93

daten_kal_sub['EÜG_Fortluft_bereinigt_unten']  = np.where(daten_kal_sub['L_Zuluft_Druck'] < daten_kal_sub['Zuluft_Druck_Schwelle_unten'], np.NaN,daten_kal_sub['EÜG_Fortluft'])
daten_kal_sub['EÜG_Außenluft_bereinigt_unten'] = np.where(daten_kal_sub['L_Zuluft_Druck'] < daten_kal_sub['Zuluft_Druck_Schwelle_unten'], np.NaN,daten_kal_sub['EÜG_Außenluft'])
daten_kal_sub['RWZ_Außenluft_bereinigt_unten'] = np.where(daten_kal_sub['L_Zuluft_Druck'] < daten_kal_sub['Zuluft_Druck_Schwelle_unten'], np.NaN,daten_kal_sub['RWZ_Außenluft'])

daten_kal_sub['EÜG_Fortluft_bereinigt']        = np.where(daten_kal_sub['L_Zuluft_Druck'] > daten_kal_sub['Zuluft_Druck_Schwelle_oben'],  np.NaN,daten_kal_sub['EÜG_Fortluft_bereinigt_unten'])
daten_kal_sub['EÜG_Außenluft_bereinigt']       = np.where(daten_kal_sub['L_Zuluft_Druck'] > daten_kal_sub['Zuluft_Druck_Schwelle_oben'],  np.NaN,daten_kal_sub['EÜG_Außenluft_bereinigt_unten'])
daten_kal_sub['RWZ_Außenluft_bereinigt']       = np.where(daten_kal_sub['L_Zuluft_Druck'] > daten_kal_sub['Zuluft_Druck_Schwelle_oben'],  np.NaN,daten_kal_sub['RWZ_Außenluft_bereinigt_unten'])

daten_kal_sub['EÜG_Fortluft_mean']  = daten_kal_sub['EÜG_Fortluft_bereinigt'].mean()
daten_kal_sub['EÜG_Außenluft_mean'] = daten_kal_sub['EÜG_Außenluft_bereinigt'].mean()
daten_kal_sub['RWZ_Außenluft_mean'] = daten_kal_sub['RWZ_Außenluft_bereinigt'].mean()

daten_kal_sub['RWZ_Außenluft_für_Effizienz'] = 0   
daten_kal_sub.loc[ daten_kal_sub['RWZ_Außenluft'].rolling(2000, center=True).std()  < 1 , 'RWZ_Außenluft_plateau'] = 1  
daten_kal_sub.loc[ daten_kal_sub['RWZ_Außenluft_bereinigt']                         > 1 , 'RWZ_Außenluft_Bypass_zu'] = 1  
daten_kal_sub['RWZ_Außenluft_für_Effizienz'] = np.where( (daten_kal_sub['RWZ_Außenluft_plateau'] == 1) & (daten_kal_sub['RWZ_Außenluft_Bypass_zu'] == 1)  , 1, 0)



# daten_sub['RWZ_Außenluft_bereinigt'].head(500)
# daten_kal_sub['W_Luftdruck'] 

WRG Plot vor und nach Kalibrierung

## Plot
fig, ax = plt.subplots()
ax.fill_between(daten_sub.index, 0, 1, where=daten_sub['RWZ_Außenluft_für_Effizienz']==1, color=colo('grau',1), alpha=1, transform=ax.get_xaxis_transform())
# EÜG, EÜG fett, EÜG Durchschnitt
daten_sub['EÜG_Außenluft'].plot(ax=ax,color=colo('grün',1), linewidth=0.5, label = 'EÜG_Außenluft') 
daten_sub['EÜG_Fortluft'].plot(ax=ax,color=colo('rot',1),   linewidth=0.5, label = 'EÜG_Fortluft') 
daten_sub['RWZ_Außenluft'].plot(ax=ax,color=colo('black',1),   linewidth=0.5, label = 'RWZ_Außenluft') 
# EÜG in Druckintervall
daten_sub['EÜG_Außenluft_bereinigt'].plot(ax=ax,color=colo('grün',1), linewidth=1, label = '__nolable__') 
daten_sub['EÜG_Fortluft_bereinigt'].plot(ax=ax,color=colo('rot',1),   linewidth=1, label = '__nolable__') 
daten_sub['RWZ_Außenluft_bereinigt'].plot(ax=ax,color=colo('black',1),   linewidth=1, label = '__nolable__') 
# EÜG Durchschnitt
daten_sub['EÜG_Fortluft_mean'].plot(ax=ax,color=colo('rot',1.5),   linewidth=0.5, label = '__nolable__') 
daten_sub['EÜG_Außenluft_mean'].plot(ax=ax,color=colo('grün',1.5), linewidth=0.5, label = '__nolable__') 
daten_sub['RWZ_Außenluft_mean'].plot(ax=ax,color=colo('black',1.5), linewidth=0.5, label = '__nolable__') 

ax.text(0.1,  0.05, 'EÜG_Außenluft: '+str(int(daten_sub['EÜG_Außenluft_bereinigt'].mean()))+' \%', color=colo('grün',.8), transform=ax.transAxes, fontsize=10)
ax.text(0.4,  0.05, 'EÜG_Fortluft: '+str(int(daten_sub['EÜG_Fortluft_bereinigt'].mean()))+' \%', color=colo('rot',.8), transform=ax.transAxes, fontsize=10)
ax.text(0.7,  0.05, 'RWZ_Außenluft: '+str(int(daten_sub['RWZ_Außenluft_bereinigt'].mean()))+' \%', color=colo('black',.8), transform=ax.transAxes, fontsize=10)

ax.set(xlim=[pd.to_datetime("2018-01-30 11:00:00"),pd.to_datetime("2018-02-12 11:00:00")])
ax.set(ylabel="Energie(kWh)", xlabel="Zeit",ylim=[20,100])
ax.set_xlabel('')
h0, l0 = ax.get_legend_handles_labels() 
legend = plt.legend(h0, l0, ncol=3, loc=1) 
set_legend_linewidth(legend) 
plt.title('WRG vor Kalibrierung')
# plt.savefig(output_folder + '/' + file_name + 'WRG_vor_Kalibrierung.pdf') 
plt.show()


## Plot
fig, ax = plt.subplots()
ax.fill_between(daten_kal_sub.index, 0, 1, where=daten_kal_sub['RWZ_Außenluft_für_Effizienz']==1, alpha=1, color=colo('grau',1),  transform=ax.get_xaxis_transform())
# EÜG, EÜG fett, EÜG Durchschnitt
daten_kal_sub['EÜG_Außenluft'].plot(ax=ax,color=colo('grün',1), linewidth=0.5, label = 'EÜG_Außenluft') 
daten_kal_sub['EÜG_Fortluft'].plot(ax=ax,color=colo('rot',1),   linewidth=0.5, label = 'EÜG_Fortluft') 
daten_kal_sub['RWZ_Außenluft'].plot(ax=ax,color=colo('black',1),   linewidth=0.5, label = 'RWZ_Außenluft') 
# EÜG in Druckintervall
daten_kal_sub['EÜG_Außenluft_bereinigt'].plot(ax=ax,color=colo('grün',1), linewidth=1, label = '__nolable__') 
daten_kal_sub['EÜG_Fortluft_bereinigt'].plot(ax=ax,color=colo('rot',1),   linewidth=1, label = '__nolable__') 
daten_kal_sub['RWZ_Außenluft_bereinigt'].plot(ax=ax,color=colo('black',1),   linewidth=1, label = '__nolable__') 
# EÜG Durchschnitt
daten_kal_sub['EÜG_Fortluft_mean'].plot(ax=ax,color=colo('rot',1.5),   linewidth=0.5, label = '__nolable__') 
daten_kal_sub['EÜG_Außenluft_mean'].plot(ax=ax,color=colo('grün',1.5), linewidth=0.5, label = '__nolable__') 
daten_kal_sub['RWZ_Außenluft_mean'].plot(ax=ax,color=colo('black',1.5), linewidth=0.5, label = '__nolable__') 

ax.text(0.1,  0.05, 'EÜG_Außenluft: '+str(int(daten_kal_sub['EÜG_Außenluft_bereinigt'].mean()))+' \%', color=colo('grün',.8), transform=ax.transAxes, fontsize=10)
ax.text(0.4,  0.05, 'EÜG_Fortluft: '+str(int(daten_kal_sub['EÜG_Fortluft_bereinigt'].mean()))+' \%', color=colo('rot',.8), transform=ax.transAxes, fontsize=10)
ax.text(0.7,  0.05, 'RWZ_Außenluft: '+str(int(daten_kal_sub['RWZ_Außenluft_bereinigt'].mean()))+' \%', color=colo('black',.8), transform=ax.transAxes, fontsize=10)

ax.set(xlim=[pd.to_datetime("2018-01-30 11:00:00"),pd.to_datetime("2018-02-12 11:00:00")])
ax.set(ylabel="Energie(kWh)", xlabel="Zeit",ylim=[20,100])
ax.set_xlabel('')
h0, l0 = ax.get_legend_handles_labels() 
legend = plt.legend(h0, l0, ncol=3, loc=1) 
set_legend_linewidth(legend) 
plt.title('WRG nach Kalibrierung')
# plt.savefig(output_folder + '/' + file_name + 'WRG_nach_Kalibrierung.pdf') 
plt.show()

Plateau finden

# RWZ_Außenluft EÜG_Außenluft



daten_kal_sub['RWZ_Außenluft_für_Effizienz'] = 0   
daten_kal_sub.loc[ daten_kal_sub['RWZ_Außenluft'].rolling(2000, center=True).std()  < 1 , 'RWZ_Außenluft_plateau'] = 1  
daten_kal_sub.loc[ daten_kal_sub['RWZ_Außenluft_bereinigt']                         > 1 , 'RWZ_Außenluft_Bypass_zu'] = 1  

daten_kal_sub['RWZ_Außenluft_für_Effizienz']      = np.where( (daten_kal_sub['RWZ_Außenluft_plateau']       == 1) & (daten_kal_sub['RWZ_Außenluft_Bypass_zu'] == 1)  , 1, 0)
daten_kal_sub['RWZ_Außenluft_für_Effizienz_plot'] = np.where( (daten_kal_sub['RWZ_Außenluft_für_Effizienz'] == 1)  , daten_kal_sub['RWZ_Außenluft_bereinigt']    , np.nan) 

daten_kal_sub['EÜG_Außenluft_bereinigt']          = np.where( (daten_kal_sub['RWZ_Außenluft_für_Effizienz'] == 1)  , daten_kal_sub['EÜG_Außenluft_bereinigt']    , np.nan) 


fig, ax = plt.subplots() 
daten_kal_sub['RWZ_Außenluft_bereinigt'].plot(ax=ax,color=colo('red',1), linewidth=0.3, label = 'RWZ_Außenluft')  
daten_kal_sub['RWZ_Außenluft_für_Effizienz_plot'].plot(ax=ax,color=colo('black',1), linewidth=0.5, label = 'RWZ_Außenluft_für_Effizienz')  
ax.fill_between(daten_kal_sub.index, 0, 1, where=daten_kal_sub['RWZ_Außenluft_für_Effizienz']==1, alpha=1, color=colo('grau',1),  transform=ax.get_xaxis_transform())
# ax.fill_between(daten_kal_sub.index, 0, 1, where=daten_kal_sub['RWZ_Außenluft_plateau'] == 1, alpha=1, color=colo('grau',1),  transform=ax.get_xaxis_transform())

ax2 = ax.twinx()
daten_kal_sub['Außenluft_C'].plot(ax=ax2,color=colo('blau',1), linewidth=0.5, label = 'Außenluft') 
daten_kal_sub['Zuluft_C'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = 'Zuluft') 
daten_kal_sub['Abluft_C'].plot(ax=ax2,color=colo('orange',1), linewidth=0.5, label = 'Abluft') 
daten_kal_sub['Fortluft_C'].plot(ax=ax2,color=colo('violet',1), linewidth=0.5, label = 'Fortluft') 

# kal['Außenluft_rF'].plot(ax=ax2,color=colo('blau',1), linewidth=0.5, label = '__nolable__') 
# kal['Zuluft_rF'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = '__nolable__') 
# kal['Abluft_rF'].plot(ax=ax2,color=colo('orange',1), linewidth=0.5, label = '__nolable__') 
# kal['Fortluft_rF'].plot(ax=ax2,color=colo('violet',1), linewidth=0.5, label = '__nolable__') 




ax.set_xlabel('')  
ax.set(ylim=[50,70])
# ax.set_yticks([18.5,19,19.5])  
# ax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')  
ax2.set(ylim=[-5,30])
# ax2.set_yticks([39,41,43])
# ax2.set_ylabel(r'\textbf{rel Luftfeuchte} (\%)') 

# Legende
h0, l0 = ax.get_legend_handles_labels()  
h2, l2 = ax2.get_legend_handles_labels()  
legend = plt.legend(h0+h2, l0+l2, ncol=4, loc=1)
set_legend_linewidth(legend) 
plt.title('Plateau finden')

ax.set(xlim=[pd.to_datetime("2018-01-30 11:00:00"),pd.to_datetime("2018-02-12 11:00:00")])
[(736724.4583333334, 736737.4583333334)]

bax Plot




eins  = pd.to_datetime("2017-12-05 10:00", infer_datetime_format=True).to_pydatetime()
zwei  = pd.to_datetime("2017-12-12 10:18", infer_datetime_format=True).to_pydatetime()
drei  = pd.to_datetime("2018-01-30 11:11", infer_datetime_format=True).to_pydatetime()
vier  = pd.to_datetime("2018-02-12 12:36", infer_datetime_format=True).to_pydatetime()
fünf  = pd.to_datetime("2018-02-15 16:40", infer_datetime_format=True).to_pydatetime()
sechs = pd.to_datetime("2018-02-23 14:38", infer_datetime_format=True).to_pydatetime()


fig = plt.figure(constrained_layout=False, figsize=(10,3))
bax = brokenaxes(xlims=((eins, zwei), (drei, vier), (fünf,sechs)),  hspace=1.2) 
bax.plot(daten_kal_sub.index, daten_kal_sub['Außenluft_C'],                       color=colo('grün',1),   linewidth=0.5, label = r'Außenluft_C')
bax.plot(daten_kal_sub.index, daten_kal_sub['Außenluft_rF'],                      color=colo('orange',1), linewidth=0.5, label = r'Außenluft_rF')
bax.plot(daten_kal_sub.index, daten_kal_sub['RWZ_Außenluft_für_Effizienz_plot'],  color=colo('blau',1),   linewidth=0.8, label = r'RWZ_Außenluft_für_Effizienz_plot')
bax.plot(daten_kal_sub.index, daten_kal_sub['EÜG_Außenluft_bereinigt'],           color=colo('rot',1),    linewidth=0.8, label = r'EÜG_Außenluft_bereinigt') 


fig.axes[0].get_xaxis().set_major_formatter(mdates.DateFormatter("%d.%m."))
fig.axes[1].get_xaxis().set_major_formatter(mdates.DateFormatter("%d.%m."))
fig.axes[2].get_xaxis().set_major_formatter(mdates.DateFormatter("%d.%m."))

# bax.set_xlabel('')  
bax.set(ylim=[-10,110])
# bax.set_yticks([18.5,19,19.5])  
# bax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')  

bax.legend(loc=1, ncol=4) 
<matplotlib.legend.Legend at 0x1ec93552608>

save to file

daten_kal_sub.to_csv('Testo_Arbeitsdaten_15s_WRG_Eff.csv')

Zusammenhang Außenluft & RWZ

## alle daten nur wenn RWZ gültig ist
eff_ber = daten_kal_sub.where(daten_kal_sub['RWZ_Außenluft_für_Effizienz']==1)
## alle daten nur wenn RWZ gültig ist
eff_ber = daten_kal_sub.where(daten_kal_sub['RWZ_Außenluft_für_Effizienz']==1)

from numpy.polynomial.polynomial import polyfit
# eff_ber['RWZ_Außenluft_für_Effizienz_plot'] = np.where( (eff_ber['RWZ_Außenluft_für_Effizienz_plot'] < 59)  , eff_ber['RWZ_Außenluft_für_Effizienz_plot']    , np.nan) 

y = eff_ber['RWZ_Außenluft_für_Effizienz_plot']
y2 = eff_ber['EÜG_Fortluft_bereinigt']
x = eff_ber['Außenluft_C']  


# w    = np.polyfit(x,y,3)
# p    = np.poly1d(w)
X =  np.arange(-4,12) 
Y = .6*X + 56
plt.scatter(x, y2, s=1, color=colo('rot',1),  label="EÜG") 
plt.scatter(x, y,  s=1, color=colo('blau',1), label="RWZ") 
# plt.plot(X,.33*X + 55,color=colo('blau',1.5),label = 'Regressionsgerade RWZ')



plt.ylabel("RWZ")
plt.xlabel("Außenluft")
plt.legend(loc='upper right')
plt.show()

Luftwerte während der Kalibrierung der WRG

fig, ax = plt.subplots() 
daten_kal_sub['Außenluft_C'].plot(ax=ax,color=colo('blau',1), linewidth=0.5, label = 'Außenluft') 
daten_kal_sub['Zuluft_C'].plot(ax=ax,color=colo('rot',1), linewidth=0.5, label = 'Zuluft') 
daten_kal_sub['Abluft_C'].plot(ax=ax,color=colo('orange',1), linewidth=0.5, label = 'Abluft') 
daten_kal_sub['Fortluft_C'].plot(ax=ax,color=colo('violet',1), linewidth=0.5, label = 'Fortluft') 

ax2 = ax.twinx()
daten_kal_sub['Außenluft_rF'].plot(ax=ax2,color=colo('blau',1), linewidth=0.5, label = '__nolable__') 
daten_kal_sub['Zuluft_rF'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = '__nolable__') 
daten_kal_sub['Abluft_rF'].plot(ax=ax2,color=colo('orange',1), linewidth=0.5, label = '__nolable__') 
daten_kal_sub['Fortluft_rF'].plot(ax=ax2,color=colo('violet',1), linewidth=0.5, label = '__nolable__') 

ax.set_xlabel('')  
ax.set(ylim=[-10,80])
ax.set_yticks([-5,5,15,25])  
ax.set_ylabel(r'\textbf{Temperatur} ($^\circ$C)')  
ax2.set(ylim=[-40,100]) 
ax2.set_yticks([30,60,90])
ax2.set_ylabel(r'\textbf{rel Luftfeuchte} (\%)') 

# Legende
h0, l0 = ax.get_legend_handles_labels()  
h2, l2 = ax2.get_legend_handles_labels()  
legend = plt.legend(h0+h2, l0+l2, ncol=4, loc=1)
set_legend_linewidth(legend) 
plt.title('Während der WGR Effizienzmessung')

ax.set(xlim=[pd.to_datetime("2018-01-30 11:00:00"),pd.to_datetime("2018-02-12 11:00:00")])
print('EÜG_Außenluft:\t '+str(int(daten_kal_sub['EÜG_Außenluft_bereinigt'].mean()))+' %')
print('EÜG_Fortluft:\t '+str(int(daten_kal_sub['EÜG_Fortluft_bereinigt'].mean()))+' %')
print('RWZ_Außenluft:\t '+str(int(daten_kal_sub['RWZ_Außenluft_bereinigt'].mean()))+' %')



print('Außenluft_C:\t '+str(round(daten_kal_sub['Außenluft_C'].mean(),2))+' °C')
print('Zuluft_C:\t '+str(round(daten_kal_sub['Zuluft_C'].mean(),2))+' °C')
print('Abluft_C:\t '+str(round(daten_kal_sub['Abluft_C'].mean(),2))+' °C')
print('Fortluft_C:\t '+str(round(daten_kal_sub['Fortluft_C'].mean(),2))+' °C')

print('Außenluft_rF:\t '+str(round(daten_kal_sub['Außenluft_rF'].mean(),2))+' %')
print('Zuluft_rF:\t '+str(round(daten_kal_sub['Zuluft_rF'].mean(),2))+' %')
print('Abluft_rF:\t '+str(round(daten_kal_sub['Abluft_rF'].mean(),2))+' %')
print('Fortluft_rF:\t '+str(round(daten_kal_sub['Fortluft_rF'].mean(),2))+' %')
print('Luftstrom:\t '+str(round(daten_kal_sub['L_Zuluft_VPunkt'].mean(),2))+' m³/h')
EÜG_Außenluft:   69 %
EÜG_Fortluft:    49 %
RWZ_Außenluft:   55 %
Außenluft_C:     2.14 °C
Zuluft_C:    14.86 °C
Abluft_C:    19.22 °C
Fortluft_C:  10.05 °C
Außenluft_rF:    63.74 %
Zuluft_rF:   35.75 %
Abluft_rF:   30.17 %
Fortluft_rF:     52.17 %
Luftstrom:   1327.74 m³/h
fig, ax = plt.subplots() 
daten_sub['L_Zuluft_VPunkt'].plot(ax=ax,color=colo('blau',1), linewidth=0.5, label = 'L_Zuluft_VPunkt') 
# daten_sub['Zuluft_C'].plot(ax=ax,color=colo('rot',1), linewidth=0.5, label = 'Zuluft') 
# daten_sub['Abluft_C'].plot(ax=ax,color=colo('orange',1), linewidth=0.5, label = 'Abluft') 
# daten_sub['Fortluft_C'].plot(ax=ax,color=colo('violet',1), linewidth=0.5, label = 'Fortluft') 

ax2 = ax.twinx()
daten_sub['L_Zuluft_Druck'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = 'L_Zuluft_Druck') 
# daten_sub['Zuluft_rF'].plot(ax=ax2,color=colo('rot',1), linewidth=0.5, label = '__nolable__') 
# daten_sub['Abluft_rF'].plot(ax=ax2,color=colo('orange',1), linewidth=0.5, label = '__nolable__') 
# daten_sub['Fortluft_rF'].plot(ax=ax2,color=colo('violet',1), linewidth=0.5, label = '__nolable__') 

ax.set_xlabel('')  
ax.set(ylim=[1480,1490])
ax.set_yticks([1480,1485,1490])  
ax.set_ylabel(r'\textbf{Volumenstrom} (m\textsuperscript{3}/h)') 
ax2.set(ylim=[80,100]) 
ax2.set_yticks([80,87,94])  
ax2.set_ylabel(r'\textbf{Druck} (Pa)')

# Legende
h0, l0 = ax.get_legend_handles_labels()  
h2, l2 = ax2.get_legend_handles_labels()  
legend = plt.legend(h0+h2, l0+l2, ncol=4, loc=1)
set_legend_linewidth(legend) 
plt.title('Weitere Werte während der WGR Effizienzmessung')

ax.set(xlim=[pd.to_datetime("2018-01-30 11:00:00"),pd.to_datetime("2018-02-12 11:00:00")])
[(736724.4583333334, 736737.4583333334)]

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  
 Daten_zusammenfuehren Kalibrierung_Lueftung