7 changed files with 470 additions and 23653 deletions
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (data_evaluation)" project-jdk-type="Python SDK" /> |
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (FINO2_data_evaluation)" project-jdk-type="Python SDK" /> |
||||
<component name="PyCharmProfessionalAdvertiser"> |
||||
<option name="shown" value="true" /> |
||||
</component> |
||||
|
@ -0,0 +1,318 @@
|
||||
import pandas as pd |
||||
import matplotlib.pyplot as plt |
||||
import datetime |
||||
import math |
||||
import numpy as np |
||||
|
||||
def add_coverage(dataframe, time_list, measurement_variable: str, start_datetime: str, |
||||
end_datetime: str, value=1.0): # format: "2022-12-22 18:00" |
||||
time_begin = datetime.datetime.strptime(start_datetime, "%Y-%m-%d %H:%M") |
||||
time_end = datetime.datetime.strptime(end_datetime, "%Y-%m-%d %H:%M") |
||||
FFF = time_list.index(time_begin) |
||||
GGG = time_list.index(time_end) |
||||
dataframe.loc[FFF: GGG, measurement_variable] = value |
||||
return dataframe |
||||
|
||||
def make_start_df(): |
||||
date1 = '2022-01-01 00:00' |
||||
date2 = '2022-12-31 23:50' |
||||
my_dates = pd.date_range(date1, date2, freq="1H").tolist() |
||||
coverage_df = pd.DataFrame() |
||||
coverage_df['datetimes']= my_dates |
||||
return coverage_df, my_dates |
||||
|
||||
|
||||
def get_realtime_from_seconds(seconds): |
||||
result= datetime.datetime(2000,1,1) + datetime.timedelta(seconds=seconds) |
||||
print(result) |
||||
return result |
||||
|
||||
def plot_results(coverage_df): |
||||
coverage_df= coverage_df.set_index('datetimes') |
||||
coverage_df.plot() |
||||
plt.show() |
||||
|
||||
|
||||
|
||||
def get_awac_export(coverage_df,showfig=True): |
||||
AWAC_seegang_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp FINO2 Seegang_klein 2022-01-01-2022-12-28.csv") |
||||
B = [datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(AWAC_seegang_df["date"])] |
||||
AWAC_seegang_df["date"] = B |
||||
AWAC_redu = AWAC_seegang_df.iloc[range(0, len(AWAC_seegang_df), 6)] |
||||
|
||||
current_coverage_insida = [] |
||||
wave_coverage_insida = [] |
||||
for element in AWAC_redu['ADCPEW (21.0m)']: |
||||
if math.isnan(element): |
||||
current_coverage_insida.append(np.nan) |
||||
else: |
||||
current_coverage_insida.append(25.0) |
||||
for element in AWAC_redu['SG_HS (0.0m)']: |
||||
if math.isnan(element): |
||||
wave_coverage_insida.append(np.nan) |
||||
else: |
||||
wave_coverage_insida.append(26.0) |
||||
|
||||
seegang_coverage = pd.DataFrame() |
||||
seegang_coverage['date']= AWAC_redu['date'].tolist() |
||||
seegang_coverage['current']=current_coverage_insida |
||||
seegang_coverage['wave']=wave_coverage_insida |
||||
|
||||
#add data from old awac |
||||
seegang_coverage.loc[0:3616,'current']=24.9 |
||||
seegang_coverage.loc[0:3616,'wave']=25.9 |
||||
|
||||
current_counter=0 |
||||
for element in seegang_coverage['current']: |
||||
if not math.isnan(element): |
||||
current_counter+=1 |
||||
coverage_current= current_counter / len(seegang_coverage) |
||||
counter_wave=0 |
||||
for element in seegang_coverage['wave']: |
||||
if not math.isnan(element): |
||||
counter_wave+=1 |
||||
coverage_wave= counter_wave / len(seegang_coverage) |
||||
|
||||
if showfig: |
||||
plt.figure() |
||||
plt.plot(seegang_coverage['date'], seegang_coverage['current'], label = 'current') |
||||
plt.plot(seegang_coverage['date'], seegang_coverage['wave'], label='wave') |
||||
plt.legend() |
||||
plt.show() |
||||
|
||||
coverage_df['wave']=seegang_coverage['wave'] |
||||
coverage_df['current']=seegang_coverage['current'] |
||||
|
||||
return coverage_df, coverage_wave, coverage_current |
||||
|
||||
|
||||
def sami_ph(coverage_df, datetimes): |
||||
var_name='pH (6m)raw' |
||||
begin_date="2022-03-02 13:00" |
||||
end_date="2022-04-24 23:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=5.0) |
||||
begin_date = "2022-07-03 13:00" |
||||
end_date = "2022-08-11 19:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=5.0) |
||||
|
||||
counter_pH=0 |
||||
for element in coverage_df['pH (6m)raw']: |
||||
if not math.isnan(element): |
||||
counter_pH+=1 |
||||
coverage_pH= counter_pH / len(coverage_df) |
||||
|
||||
return coverage_df, coverage_pH |
||||
|
||||
def get_wqm_coverage(coverage_df, datetimes, showfig=True): |
||||
WQM_1H_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp FINO2 WQM_1H 2022-01-01-2022-12-28.csv") |
||||
B = [datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(WQM_1H_df["date"])] |
||||
WQM_1H_df["date"] = B |
||||
|
||||
counter_2m = 0 |
||||
for element in WQM_1H_df['CHL (2.0m)']: |
||||
if not math.isnan(element): |
||||
counter_2m += 1 |
||||
coverage_2m = counter_2m / len(WQM_1H_df) |
||||
|
||||
counter_12m = 0 |
||||
for element in WQM_1H_df['CHL (12.0m)']: |
||||
if not math.isnan(element): |
||||
counter_12m += 1 |
||||
coverage_12m = counter_12m / len(WQM_1H_df) |
||||
|
||||
counter_20m = 0 |
||||
for element in WQM_1H_df['CHL (20.0m)']: |
||||
if not math.isnan(element): |
||||
counter_20m += 1 |
||||
coverage_20m = counter_20m / len(WQM_1H_df) |
||||
|
||||
wqm2m_coverage_insida = [] |
||||
for element in WQM_1H_df['CHL (2.0m)']: |
||||
if math.isnan(element): |
||||
wqm2m_coverage_insida.append(np.nan) |
||||
else: |
||||
wqm2m_coverage_insida.append(-2.0) |
||||
wqm12m_coverage_insida = [] |
||||
for element in WQM_1H_df['CHL (12.0m)']: |
||||
if math.isnan(element): |
||||
wqm12m_coverage_insida.append(np.nan) |
||||
else: |
||||
wqm12m_coverage_insida.append(-12.0) |
||||
wqm20m_coverage_insida = [] |
||||
for element in WQM_1H_df['CHL (20.0m)']: |
||||
if math.isnan(element): |
||||
wqm20m_coverage_insida.append(np.nan) |
||||
else: |
||||
wqm20m_coverage_insida.append(-20.0) |
||||
|
||||
coverage_wqm = { |
||||
"2m":coverage_2m, |
||||
"12m":coverage_12m, |
||||
"20m":coverage_20m |
||||
} |
||||
|
||||
coverage_df['WQM_2m'] = np.nan |
||||
coverage_df['WQM_12m'] = np.nan |
||||
coverage_df['WQM_20m'] = np.nan |
||||
coverage_df.loc[0:len(wqm2m_coverage_insida)-1,'WQM_2m'] = wqm2m_coverage_insida |
||||
coverage_df.loc[0:len(wqm2m_coverage_insida)-1,'WQM_12m'] = wqm12m_coverage_insida |
||||
coverage_df.loc[0:len(wqm2m_coverage_insida)-1,'WQM_20m'] = wqm20m_coverage_insida |
||||
|
||||
if showfig: |
||||
plt.figure() |
||||
plt.plot(WQM_1H_df['date'], WQM_1H_df['CHL (2.0m)'], label="CHL 2m") |
||||
plt.plot(WQM_1H_df['date'], WQM_1H_df['CHL (12.0m)'], label="CHL 12m") |
||||
plt.plot(WQM_1H_df['date'], WQM_1H_df['CHL (20.0m)'], label="CHL 20m") |
||||
plt.show() |
||||
|
||||
return coverage_df, coverage_wqm |
||||
|
||||
|
||||
def get_mc_coverage(coverage_df, datetimes, showfig=True): |
||||
CTD_nurDruck_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp_FINO2 D 2022-01-01-2022-12-28.csv") |
||||
B = [datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(CTD_nurDruck_df["date"])] |
||||
CTD_nurDruck_df["date"] = B |
||||
|
||||
|
||||
coverage_mc={ |
||||
"2m":0.0, |
||||
"4m":0.0, |
||||
"6m":0.0, |
||||
"8m":0.0, |
||||
"10m":0.0, |
||||
"12m":0.0, |
||||
"14m":0.0, |
||||
"16m":0.0, |
||||
"18m":0.0, |
||||
"20m":0.0, |
||||
} |
||||
get_colmns = ['WP (2.0m)', 'WP (4.0m)', 'WP (6.0m)', 'WP (8.0m)', 'WP (10.0m)', 'WP (12.0m)', 'WP (14.0m)', 'WP (16.0m)', 'WP (18.0m)', 'WP (20.0m)'] |
||||
get_dict_posi= ['2m', '4m', '6m', '8m', '10m', '12m', '14m', '16m', '18m', '20m'] |
||||
set_colmns = ['MC_2m', 'MC_4m', 'MC_6m', 'MC_8m', 'MC_10m', 'MC_12m', 'MC_14m', 'MC_16m', 'MC_18m', 'MC_20m'] |
||||
values = [x + 0.0 for x in [2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0]] |
||||
|
||||
|
||||
for idx,ele in enumerate(set_colmns): |
||||
coverage_df[ele] = np.nan |
||||
temp_cover = [] |
||||
for element in CTD_nurDruck_df[get_colmns[idx]]: |
||||
if math.isnan(element): |
||||
temp_cover.append(np.nan) |
||||
else: |
||||
temp_cover.append(values[idx]) |
||||
coverage_df.loc[0:len(temp_cover) - 1, set_colmns[idx]] = temp_cover |
||||
|
||||
|
||||
|
||||
# 2m MC raw |
||||
var_name= "MC (2m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=1.8) |
||||
# 4m MC raw |
||||
var_name = "MC (4m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-04-10 02:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=3.8) |
||||
begin_date = "2022-05-31 13:00" |
||||
end_date = "2022-10-06 00:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=3.8) |
||||
# 6m MC raw |
||||
var_name = "MC (6m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-05-08 13:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=5.8) |
||||
begin_date = "2022-05-31 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=5.8) |
||||
# 8m MC raw |
||||
var_name = "MC (8m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=7.8) |
||||
# 10m MC raw |
||||
var_name = "MC (10m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=9.8) |
||||
# 12m MC raw |
||||
var_name = "MC (12m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=11.8) |
||||
# 14m MC raw |
||||
var_name = "MC (14m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=13.8) |
||||
|
||||
# 16m MC raw |
||||
var_name = "MC (16m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-05-16 11:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=15.8) |
||||
begin_date = "2022-06-10 08:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=15.8) |
||||
|
||||
# 18m MC raw |
||||
var_name = "MC (18m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=17.8) |
||||
# 20m MC raw |
||||
var_name = "MC (20m)raw" |
||||
begin_date = "2022-03-02 13:00" |
||||
end_date = "2022-10-20 06:00" |
||||
coverage_df = add_coverage(coverage_df, datetimes, var_name, begin_date, end_date, value=19.8) |
||||
|
||||
|
||||
# ------------------- |
||||
|
||||
i1=['MC_2m', 'MC_4m', 'MC_6m', 'MC_8m', 'MC_10m', 'MC_12m', 'MC_14m', 'MC_16m', 'MC_18m', 'MC_20m'] |
||||
i2=['MC (2m)raw', 'MC (4m)raw', 'MC (6m)raw', 'MC (8m)raw', 'MC (10m)raw', 'MC (12m)raw', 'MC (14m)raw', 'MC (16m)raw', 'MC (18m)raw', 'MC (20m)raw'] |
||||
i3=['MC_2m_combi', 'MC_4m_combi', 'MC_6m_combi', 'MC_8m_combi', 'MC_10m_combi', 'MC_12m_combi', 'MC_14m_combi', 'MC_16m_combi', 'MC_18m_combi', 'MC_20m_combi'] |
||||
values=[x+0.2 for x in[2.0,4.0,6.0,8.0,10.0,12.0,14.0,16.0,18.0,20.0]] |
||||
|
||||
for ixd,step in enumerate(i1): |
||||
temp_list = [] |
||||
for ind, element in enumerate(coverage_df[step]): |
||||
if not math.isnan(element): |
||||
temp_list.append(values[ixd]) |
||||
elif not math.isnan(coverage_df[i2[ixd]][ind]): |
||||
temp_list.append(values[ixd]) |
||||
else: |
||||
temp_list.append(np.nan) |
||||
coverage_df[i3[ixd]]=temp_list |
||||
|
||||
for idx,ele in enumerate(get_colmns): |
||||
temp_counter = 0 |
||||
for element in CTD_nurDruck_df[get_colmns[idx]]: |
||||
if not math.isnan(element): |
||||
temp_counter += 1 |
||||
coverage_mc[get_dict_posi[idx]] = temp_counter / len(CTD_nurDruck_df) |
||||
|
||||
|
||||
return coverage_df, coverage_mc |
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
|
||||
|
||||
coverage_df, datetimes = make_start_df() |
||||
coverage_df, coverage_wave, coverage_current = get_awac_export(coverage_df, showfig=False) |
||||
coverage_df, coverage_pH = sami_ph(coverage_df, datetimes) |
||||
coverage_df, coverage_wqm = get_wqm_coverage(coverage_df, datetimes, showfig=False) |
||||
coverage_df, coverage_mc = get_mc_coverage(coverage_df, datetimes, showfig=True) |
||||
plot_results(coverage_df) |
||||
print("") |
||||
print("pH coverage: " + str(coverage_pH)) |
||||
print("wave coverage: " + str(coverage_wave)) |
||||
print("current coverage: " + str(coverage_current)) |
||||
print("WQM coverage (2,12,20m): " + str(coverage_wqm)) |
||||
print("MC coverage (2-20m): " + str(coverage_mc)) |
@ -0,0 +1,116 @@
|
||||
from datetime import datetime |
||||
import pandas as pd |
||||
import matplotlib.pyplot as plt |
||||
import math |
||||
import numpy as np |
||||
|
||||
|
||||
def plot_MC_export(CTD_nurDruck_df): |
||||
fig = plt.figure() |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (2.0m)'], label="2m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (4.0m)'], label="4m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (6.0m)'], label="6m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (8.0m)'], label="8m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (10.0m)'], label="10m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (12.0m)'], label="12m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (14.0m)'], label="14m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (16.0m)'], label="16m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (18.0m)'], label="18m") |
||||
plt.plot(CTD_nurDruck_df['date'], CTD_nurDruck_df['WP (20.0m)'], label="20m") |
||||
plt.show() |
||||
|
||||
|
||||
def plot_WQM_1h_export(WQM_1H_df): |
||||
plt.figure() |
||||
plt.plot(WQM_1H_df['date'], WQM_1H_df['CHL (2.0m)'], label="CHL 2m") |
||||
plt.plot(WQM_1H_df['date'], WQM_1H_df['CHL (12.0m)'], label="CHL 12m") |
||||
plt.plot(WQM_1H_df['date'], WQM_1H_df['CHL (20.0m)'], label="CHL 20m") |
||||
plt.show() |
||||
|
||||
def plot_WQM_10min_export(WQM_10m_df): |
||||
plt.figure() |
||||
plt.plot(WQM_10m_df['date'], WQM_10m_df['OX_MCODO (2.0m)'], label="OX 2m") |
||||
plt.plot(WQM_10m_df['date'], WQM_10m_df['OX_MCODO (12.0m)'], label="OX 12m") |
||||
plt.plot(WQM_10m_df['date'], WQM_10m_df['OX_MCODO (20.0m)'], label="OX 20m") |
||||
plt.show() |
||||
|
||||
|
||||
def load_export_data(): |
||||
print("loading data...") |
||||
AWAC_seegang_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp FINO2 Seegang_klein 2022-01-01-2022-12-28.csv") |
||||
CTD_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp_FINO2 CTD 2021-08-01-2022-11-09 1667984812085.csv") |
||||
CTD_nurDruck_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp_FINO2 D 2022-01-01-2022-12-28.csv") |
||||
WQM_1H_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp FINO2 WQM_1H 2022-01-01-2022-12-28.csv") |
||||
WQM_10m_df = pd.read_csv( |
||||
r"D:\Python\FINO2_data_evaluation\data\evaluation_data_2022\Insida_exports\Insida_exp_FINO2_10m O2 2022-01-01-2022-12-28.csv") |
||||
|
||||
B = [datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(AWAC_seegang_df["date"])] |
||||
AWAC_seegang_df["date"] = B |
||||
|
||||
B = [datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(CTD_df["date"])] |
||||
CTD_df["date"] = B |
||||
|
||||
B = [datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(CTD_nurDruck_df["date"])] |
||||
CTD_nurDruck_df["date"] = B |
||||
|
||||
B = [datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(WQM_1H_df["date"])] |
||||
WQM_1H_df["date"] = B |
||||
|
||||
B = [datetime.strptime(a, '%Y-%m-%d %H:%M:%S') for a in list(WQM_10m_df["date"])] |
||||
WQM_10m_df["date"] = B |
||||
|
||||
return AWAC_seegang_df,CTD_df,CTD_nurDruck_df,WQM_1H_df,WQM_10m_df |
||||
|
||||
|
||||
def plot_seegang_export(AWAC_seegang_df): |
||||
BB= range(0,52127,6) |
||||
AWAC_redu = AWAC_seegang_df.iloc[BB] |
||||
|
||||
|
||||
current_data=[] |
||||
wave_data=[] |
||||
x_axis= range(0,len(AWAC_redu)) |
||||
for element in AWAC_redu['ADCPEW (21.0m)']: |
||||
if math.isnan(element): |
||||
current_data.append(np.nan) |
||||
else: |
||||
current_data.append(1) |
||||
for element in AWAC_redu['SG_HS (0.0m)']: |
||||
if math.isnan(element): |
||||
wave_data.append(np.nan) |
||||
else: |
||||
wave_data.append(2) |
||||
|
||||
plt.figure() |
||||
plt.plot(AWAC_redu['date'],wave_data) |
||||
plt.plot(AWAC_redu['date'],current_data) |
||||
plt.show() |
||||
|
||||
|
||||
plt.figure() |
||||
|
||||
plt.plot(AWAC_redu['date'], AWAC_redu['ADCPEW (21.0m)'], label="ADCPEW 21m") |
||||
#plt.plot(AWAC_redu['date'], AWAC_redu['SG_DirTp (0.0m)'], label="SG_DirTp") |
||||
#plt.plot(AWAC_redu['date'], AWAC_redu['SG_TP (0.0m)'], label="SG_TP") |
||||
plt.plot(AWAC_redu['date'], AWAC_redu['SG_HS (0.0m)'], label="SG_HS") |
||||
|
||||
plt.legend() |
||||
plt.show() |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
AWAC_seegang_df,CTD_df,CTD_nurDruck_df,WQM_1H_df,WQM_10m_df = load_export_data() |
||||
|
||||
plot_seegang_export(AWAC_seegang_df) |
||||
|
||||
#plot_MC_export(CTD_nurDruck_df) |
||||
|
||||
#plot_WQM_1h_export(WQM_1H_df) |
||||
|
||||
#plot_WQM_10min_export(WQM_10m_df) |
||||
|
||||
print("") |
Loading…
Reference in new issue