当前位置: 首页 > news >正文

网站的架构与建设优化设计电子课本下载

网站的架构与建设,优化设计电子课本下载,wordpress系统在线升级失败,赣州市城乡建设局官方网站这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注… 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能丰富你的文章UML 图表FLowchart流程图导出与导入导出导入# -*- coding: utf-8 -*-Created on Fri Dec 2 13:46:48 2022author: Lenovo from sklearn.metrics import make_scorer import os import pandas as pd import numpy as np import seaborn as sns from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import GridSearchCV from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt from sklearn.metrics import r2_score,mean_squared_error # from sklearn.preprocessing import StandardScaler import seaborn as sns from scipy.stats import gaussian_kde from mpl_toolkits.axes_grid1 import make_axes_locatable from sklearn.feature_selection import RFECV from scipy.interpolate import griddata from itertools import combinations from operator import itemgetter dic {} pathrD:\Fluxnet\try outpathrD:\Fluxnet\OUTCOME\每种变量组合放在一起之前的仓库site_list[] year_list[]total_number[] post_dropna_number[] post_drop_le_abnormal_number[] test_number[] train_number[] N_estimators[] Max_depth[]Rmse_list[] R2_list[] Bias_list[]Drivers_column[] Filling_rate_list[] Feature_list[]# path1rD:\Fluxnet\try # path2rD:\Fluxnet\try_ndvi # path1rD:\Fluxnet\加了土壤水和土壤温度的\MDS_用 # path2rD:\Fluxnet\ndvi777 - SHAOSHAOSHAO # for s,j in zip(os.listdir(path1),os.listdir(path2)): # print(s) # print(os.listdir(path2)) # sole_spd.read_csv(os.path.join(path1,s)) # sole_jpd.read_csv(os.path.join(path2,j)) # sole_s[TIMESTAMP_START]sole_s[TIMESTAMP_START].astype(str) # sole_s[TIMESTAMP_START]pd.to_datetime(sole_s[TIMESTAMP_START]) # sole_jsole_j[[TIMESTAMP_START,NDVI]] # sole_j[TIMESTAMP_START] pd.to_datetime(sole_j[TIMESTAMP_START])# sole_j sole_j.set_index(TIMESTAMP_START) # sole_j sole_j.resample(1D).interpolate() # 30T 按分钟(T)插值 1D按天插值 # sole_j sole_j.reset_index() # solepd.merge(sole_s, sole_j,howleft,onTIMESTAMP_START) # sole[NDVI]sole[NDVI].interpolate(methodpad) # 1天一个值 # print(sole)path1 rC:\Users\Lenovo\Desktop\四大类\REALTRY for file in os.listdir(path1):sole pd.read_csv(os.path.join(path1,file))site_list1[]year_list1[]test_number1[]train_number1[]rmse_list1[]r2_list1[]bias_list1[]sole_raw solesole_copy soleprint(原始数据,sole.shape)sole.dropna(subset[LE_F_MDS_QC],axis0,inplaceTrue) #删除LE_F_MDS_QC中含有空值的行print(去掉没QC后的原始数据,sole.shape)trainsetsole[sole[LE_F_MDS_QC]0]print(观测数据,trainset.shape)# # 以LE_F_MDS20W/m²为界 白天和晚上分别训练 # trainsettrainset[trainset[LE_F_MDS]20]print(白天的总量 ,trainset.shape)gapsole[sole[LE_F_MDS_QC]!0]print(插补数据,gap.shape)gap_droplegap.drop([LE_F_MDS,LE_F_MDS_QC,TIMESTAMP_START,TIMESTAMP_END]## , SW_IN_F_MDS_QC, NETRAD,axis1)# gap_droplegap_drop.drop([SW_IN_F_MDS_QC, NETRAD],axis1)#每行至少有一个/三个不是空值时保留gap_dropnagap_drople# gap_dropnagap_drople.dropna(axis0,thresh3) print(去空值后的插补数据,gap_dropna.shape)dffpd.DataFrame(gap_dropna.isna().sum().sort_values(ascendingFalse))print(预测集的空值,dff)#看下训练集的空值可以看出跟插补集不太一样print(训练集的空值\n,trainset.drop([LE_F_MDS,LE_F_MDS_QC,TIMESTAMP_START,TIMESTAMP_END]#,axis1).isna().sum().sort_values(ascendingFalse))#获得所有变量组合def combine(list0,o):list1[]for i in combinations(list0,o):list1.append(i)return list1tianchongliang[]chabuliang[]rmseliang[]site_list[]ALL_rmse_list[]rmse_number[]pinjie_number[]train_number[]rmse_list[]rmse1_list[]all_rmse1_list[]r2_list[]r21_list[]ALL_r2_list[]all_r21_list[]bias_list[]bias1_list[]ALL_bias_list[]all_bias1_list[]filling_rate_list[]dic_list []fig plt.figure(figsize(4,40),dpi600)fig1 plt.figure(figsize(16,36),dpi600)ALL_x_test pd.Series()ALL_y_test pd.Series()qian0hou-1for u in reversed(range(3,len(gap_drople.columns)1)) : fillrate_mid_list[]col_list[]list666[]list666.extend(combine(dff.index,u))#获取不同插补率的组合特征list_score[]score[]big_list[]for i in range(0,len(list666)):scof{gap_drople[list(list666[i])].dropna().shape[0] / gap_drople.shape[0]:.2f}score[f{gap_drople[list(list666[i])].dropna().shape[0] / gap_drople.shape[0]:.2f}]list_score[{score:sco,list:list666[i]}]# print(list_score) print(list_score)#plotkey_list[a[list] for a in list_score]len_list [ len(i) for i in key_list ]score[np.float64(i) for i in score]plt.rc(font, familyTimes New Roman,size20)plt.figure(figsize(10,8),dpi400)plt.scatter(len_list,score)plt.xlabel(Number of drivers, {family:Times New Roman,weight:normal,size:20})plt.ylabel(Filling rate,{family:Times New Roman,weight:normal,size:20})#填充率最大对应去的变量列表shunxusorted_listsorted(list_score, keylambda list_score: list_score[score], reverseTrue)# print(sorted_list) # 按降序排列biggest_score[a[score] for a in sorted_list][0] biggest_score_feature_list[a[list] for a in sorted_list][0]# print(biggest_score_feature_list) Feature_list.append(biggest_score_feature_list)filling_rate_list.append(biggest_score)Filling_rate_list.append(biggest_score)#建模准备train_copytrainset.copy()train_copy.drop([LE_F_MDS_QC,TIMESTAMP_START,TIMESTAMP_END]#,axis1,inplaceTrue)#.isna().sum().sort_values(ascendingFalse)feature[x for x in biggest_score_feature_list] train_optiontrain_copy[feature]train_option[LE_F_MDS]train_copy[LE_F_MDS]print(Train_option原始数值\n,train_option.shape)#print(train_option.isna().sum().sort_values(ascendingTrue))#去除空值train_option_dropnatrain_option.dropna() #训练数据去空值print(训练集去掉空值后 ,train_option_dropna.shape)ctrain_option_dropna print(c.shape)Driversc.drop([LE_F_MDS],axis1)Drivers_column[ .join(Drivers.columns.tolist())]LEc[LE_F_MDS]x_train,x_test,y_train,y_testtrain_test_split(Drivers,LE,test_size0.20,random_state(0)) print(x_train.shape)print(x_test.shape)print(y_train.shape)print(y_test.shape) # # 建模 # rfRandomForestRegressor(n_estimators1100,max_depth80,oob_scoreTrue,random_state(0)) rf.fit(x_train,y_train) # rf.fit(Drivers,LE) # pred_oob rf.oob_prediction_ #袋外预测值# print(len(pred_oob))# print(pred_oob)# rmsenp.sqrt(mean_squared_error(LE, pred_oob)) #袋外均方根误差site_list[file.split(_,6)[1]]tianchongliang[biggest_score]chabuliang[gap.shape[0]]rmseliang[len(y_test)]rmsenp.sqrt(mean_squared_error(y_test,rf.predict(x_test)))rmse_list.append(rmse)r2r2_score(y_test,rf.predict(x_test)) r2_list.append(r2)bias(rf.predict(x_test)-y_test).mean() # bias(pred_oob-LE).mean()bias_list.append(bias)# rmse_dfpd.DataFrame({site:site_list,rmse:rmse_list# ,rmse量:rmseliang,插补量:chabuliang# ,插补率:tianchongliang})# rmse_df.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\RMSE, str(file.split(_,6)[1]) .csv),index False)# # 单一变量组合线性内插 # s_ori pd.read_csv(os.path.join(path1,file)) s_ori.loc[:,LE] y_tests_ori.loc[y_test.index,LE_F_MDS] np.nans_ori[LE_F_MDS] s_ori[LE_F_MDS].interpolate()rmse1np.sqrt(mean_squared_error(y_test,s_ori.loc[y_test.index,LE_F_MDS] ))rmse1_list.append(rmse1)r21r2_score(y_test,s_ori.loc[y_test.index,LE_F_MDS]) r21_list.append(r21)bias1(s_ori.loc[y_test.index,LE_F_MDS]-y_test).mean()bias1_list.append(bias1)rmse_dfpd.DataFrame({site:site_list,RF_RMSE:rmse_list,IP_RMSE:rmse1_list,rmse量:rmseliang,插补量:chabuliang,插补率:tianchongliang,RF_R2:r2_list,IP_R2:r21_list,RF_BIAS:bias_list,IP_BIAS:bias1_list})print(rmse_df)print(tianchongliang[qian])rmse_df.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\RMSE, str(file.split(_,6)[1]) .csv),index False)# # DYNAMIC RMSE # print(rmse_list[qian] , rmse_list[hou])print(tianchongliang[qian] , tianchongliang[hou])if qian0 or rmse_list[qian] rmse_list[hou] or tianchongliang[qian] tianchongliang[hou] :y_test6 y_test[~y_test.index.isin(ALL_y_test.index)] #在y_test里不在大的合集里x_test6 pd.Series(rf.predict(x_test),indexy_test.index)x_test6 x_test6[y_test6.index]ALL_y_test pd.concat([ALL_y_test, y_test6], axis0, ignore_indexFalse)ALL_x_test pd.concat([ALL_x_test, x_test6], axis0,ignore_indexFalse)# print(拼接后\n,ALL_x_test)# print(拼接后\n,ALL_y_test)ALL_rmsenp.sqrt(mean_squared_error(ALL_y_test,ALL_x_test))ALL_rmse_list.append(ALL_rmse)r2r2_score(y_test,rf.predict(x_test)) ALL_r2_list.append(r2)bias(rf.predict(x_test)-y_test).mean() # bias(pred_oob-LE).mean()ALL_bias_list.append(bias)#线性内插综合RMSEs_ori pd.read_csv(os.path.join(path1,file)) s_ori.loc[:,LE] ALL_y_tests_ori.loc[ALL_y_test.index,LE_F_MDS] np.nans_ori[LE_F_MDS] s_ori[LE_F_MDS].interpolate()rmse1np.sqrt(mean_squared_error(ALL_y_test,s_ori.loc[ALL_y_test.index,LE_F_MDS] ))all_rmse1_list.append(rmse1)r21r2_score(ALL_y_test,s_ori.loc[ALL_y_test.index,LE_F_MDS]) all_r21_list.append(r21)bias1(s_ori.loc[ALL_y_test.index,LE_F_MDS] - ALL_y_test).mean()all_bias1_list.append(bias1)pinjie_number.append(len(y_test6))rmse_number.append(len(ALL_y_test))train_number.append(int(trainset.shape[0]*0.2))ALL_rmse_dfpd.DataFrame({RF_RMSE:ALL_rmse_list,IP_RMSE:all_rmse1_list,rmse_number:rmse_number,pinjie_number:pinjie_number,train_number:train_number,RF_R2:ALL_r2_list,IP_R2:all_r21_list,RF_BIAS:ALL_bias_list,IP_BIAS:all_bias1_list}) print(ALL_rmse_df)ALL_rmse_df.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\RMSE_ALL,str(file.split(_,6)[1]) .csv),index False)qian1hou1# 高斯核密度散点图# post_gspd.DataFrame({predict:pred_oob,in_situ:LE,})post_gspd.DataFrame({predict:rf.predict(x_test),in_situ:y_test,}) post_gs[index][i for i in range(post_gs.shape[0])]post_gspost_gs.set_index(index)xpost_gs[in_situ]ypost_gs[predict]xy np.vstack([x,y])#计算点密度z gaussian_kde(xy)(xy)#高斯核密度idx z.argsort()#根据密度对点进行排序最密集的点在最后绘制x, y, z x[idx], y[idx], z[idx]fw 800ax fig.add_subplot(len(gap_drople.columns)-1,1,u-2)scatter ax.scatter(x,y,markero,cz,s15,labelLST,cmapjet) # o是实心圆c是设置点的颜色cmap设置色彩范围Spectral_r和Spectral色彩映射相反divider make_axes_locatable(ax) #画色域图# plt.scatter(x, y, cz, s7, cmapjet)# plt.axis([0, fw, 0, fw]) # 设置线的范围# plt.title( file.split(_,6)[1], family Times New Roman,size21)# plt.text( 10, 700,len(feature), family Times New Roman,size21)# plt.text(10, 700, Driver numbers %s % len(feature), family Times New Roman,size21)# plt.text(10, 600, Size %.f % len(y), family Times New Roman,size18) # text的位置需要根据x,y的大小范围进行调整。# plt.text(10, 650, RMSE %.3f W/m² % rmse, family Times New Roman,size18)# plt.text(10, 700, R² %.3f % r2, family Times New Roman,size18)# plt.text(10, 750, BIAS %.3f W/m² % bias, family Times New Roman,size18)ax.set_xlabel(Station LE (W/m²),family Times New Roman,size19)ax.set_ylabel(Estimated LE (W/m²),family Times New Roman,size19)ax.plot([0,fw], [0,fw], gray, lw2) # 画的1:1线线的颜色为black线宽为0.8ax.set_xlim(0,fw)ax.set_ylim(0,fw)# ax.xaxis.set_tick_params(labelsize19) # ax.xaxis.set_tick_params(labelsize19) # plt.xticks(fontpropertiesTimes New Roman,size19)# plt.yticks(fontpropertiesTimes New Roman,size19)fig.set_tight_layout(True) #MDSMDS_GAPs_oriif SW_IN in MDS_GAP.columns.to_list() and TA in MDS_GAP.columns.to_list() and VPD in MDS_GAP.columns.to_list():MDS_GAP[Year]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END].astype(str)MDS_GAP[TIMESTAMP_END]pd.to_datetime(MDS_GAP[TIMESTAMP_END])MDS_GAP[Year] MDS_GAP[TIMESTAMP_END].dt.year #Time stamp is not equidistant (half-)hours in rows: 35040, 35088, 52560, 52608, 70080, 70128, 87600, 87648MDS_GAP[DoY]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END].astype(str)MDS_GAP[TIMESTAMP_END]pd.to_datetime(MDS_GAP[TIMESTAMP_END])doy[]for k in MDS_GAP[TIMESTAMP_END]:doy [k.strftime(%j)]MDS_GAP[DoY] doy #Time stamp is not equidistant (half-)hours in rows: 35040, 35088, 52560, 52608, 70080, 70128, 87600, 87648MDS_GAP[Hour] MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END].astype(str)MDS_GAP[TIMESTAMP_END]pd.to_datetime(MDS_GAP[TIMESTAMP_END])hour[]for l in MDS_GAP[TIMESTAMP_END]:hour [int(l.strftime(%H))float(l.strftime(%M))/60]MDS_GAP[Hour] hour MDS_GAP.loc[:,LE] y_testprint(MDS_GAP[LE].dropna().sum())MDS_GAP[LE].to_csv(os.path.join(rC:\Users\Lenovo\Desktop\R\用来rmse的原始值666, str(file.split(_,6)[1]) str(u) .txt),sep ,index False)MDS_GAP[LE_F_MDS]s_ori[LE_F_MDS]MDS_GAP.loc[MDS_GAP[LE]-9999,[LE]] -9999MDS_GAP[LE].fillna(MDS_GAP[LE_F_MDS],inplaceTrue)MDS_GAP[Rg]MDS_GAP[SW_IN] MDS_GAP[Tair]MDS_GAP[TA]MDS_GAP[VPD]MDS_GAP[VPD]# MDS_GAP[NEE]MDS_GAP[NEE_VUT_REF]MDS_GAPMDS_GAP[[Year,DoY,Hour,LE,Rg,Tair,VPD]]#,Tsoil,rH,MDS_GAP.loc[MDS_GAP[Rg] 1200 , [Rg]] -9999 # Drivers control Rg 1200W/m² Ta 2.5℃W/m² VPD 50hPa# MDS_GAP.loc[MDS_GAP[Tair] 2.5 , [Tair]] -9999MDS_GAP.loc[MDS_GAP[VPD] 50 , [VPD]] -9999#将单位插到第零行的位置上rrow 0 # 插入的位置value pd.DataFrame([[-, -, -,Wm-2, Wm-2, degC,hPa]],columnsMDS_GAP.columns) # 插入的数据 degC,%,df_tmp1 MDS_GAP[:row]df_tmp2 MDS_GAP[row:]# 插入合并数据表MDS_GAP df_tmp1.append(value).append(df_tmp2)MDS_GAP MDS_GAP.fillna(-9999) MDS_GAP.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\MDS_TRY666, str(file.split(_,6)[1]) str(u) .txt),sep ,index False)# str(gaplong)#MDS_ALLs_ori pd.read_csv(os.path.join(path1,file))MDS_GAPs_oriif SW_IN in MDS_GAP.columns.to_list() and TA in MDS_GAP.columns.to_list() and VPD in MDS_GAP.columns.to_list():MDS_GAP[Year]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END].astype(str)MDS_GAP[TIMESTAMP_END]pd.to_datetime(MDS_GAP[TIMESTAMP_END])MDS_GAP[Year] MDS_GAP[TIMESTAMP_END].dt.year #老报错 Time stamp is not equidistant (half-)hours in rows: 35040, 35088, 52560, 52608, 70080, 70128, 87600, 87648MDS_GAP[DoY]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END].astype(str)MDS_GAP[TIMESTAMP_END]pd.to_datetime(MDS_GAP[TIMESTAMP_END])doy[]for k in MDS_GAP[TIMESTAMP_END]:doy [k.strftime(%j)]MDS_GAP[DoY] doy #老报错 Time stamp is not equidistant (half-)hours in rows: 35040, 35088, 52560, 52608, 70080, 70128, 87600, 87648MDS_GAP[Hour] MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END]MDS_GAP[TIMESTAMP_END].astype(str)MDS_GAP[TIMESTAMP_END]pd.to_datetime(MDS_GAP[TIMESTAMP_END])hour[]for l in MDS_GAP[TIMESTAMP_END]:hour [int(l.strftime(%H))float(l.strftime(%M))/60]MDS_GAP[Hour] hour MDS_GAP.loc[:,LE] ALL_y_testprint(MDS_GAP[LE].dropna().sum())MDS_GAP[LE].to_csv(os.path.join(rC:\Users\Lenovo\Desktop\R\用来ALL_rmse的原始值666, str(file.split(_,6)[1]) .txt),sep ,index False)MDS_GAP[LE_F_MDS]s_ori[LE_F_MDS]MDS_GAP.loc[MDS_GAP[LE]-9999,[LE]] -9999MDS_GAP[LE].fillna(MDS_GAP[LE_F_MDS],inplaceTrue)MDS_GAP[Rg]MDS_GAP[SW_IN] MDS_GAP[Tair]MDS_GAP[TA]MDS_GAP[VPD]MDS_GAP[VPD]# MDS_GAP[NEE]MDS_GAP[NEE_VUT_REF]MDS_GAPMDS_GAP[[Year,DoY,Hour,LE,Rg,Tair,VPD]]#,Tsoil,rH,MDS_GAP.loc[MDS_GAP[Rg] 1200 , [Rg]] -9999 # Drivers control Rg 1200W/m² Ta 2.5℃W/m² VPD 50hPa# MDS_GAP.loc[MDS_GAP[Tair] 2.5 , [Tair]] -9999MDS_GAP.loc[MDS_GAP[VPD] 50 , [VPD]] -9999#将单位插到第零行的位置上rrow 0 # 插入的位置value pd.DataFrame([[-, -, -,Wm-2, Wm-2, degC,hPa]],columnsMDS_GAP.columns) # 插入的数据 degC,%,df_tmp1 MDS_GAP[:row]df_tmp2 MDS_GAP[row:]# 插入合并数据表MDS_GAP df_tmp1.append(value).append(df_tmp2)MDS_GAP MDS_GAP.fillna(-9999) MDS_GAP.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\ALL_MDS_TRY666, str(file.split(_,6)[1]) .txt),sep ,index False)# str(gaplong)#复制一下整个的 插补 保存 比较 导出ALL_y_testgap_dropna_copygap_dropna.copy()gap_dropna_copygap_dropna_copy[feature]gap_dropna_copygap_dropna_copy.dropna()gap_dropna_copy.loc[:, LE_gap_filled] rf.predict(gap_dropna_copy)lesole.copy()le[LE_F_MDS_QC].replace([1,2,3], np.nan, inplaceTrue)le[LE_F_MDS_QC].replace(0, -9999, inplaceTrue)le[LE_F_MDS_QC].fillna(gap_dropna_copy[LE_gap_filled], inplaceTrue)le[RMSE][rmse]*sole.shape[0]dic0{TIMESTAMP_START:le[TIMESTAMP_START].tolist(),TIMESTAMP_END:le[TIMESTAMP_END].tolist() ,LE_Gap_filled str(u): le[LE_F_MDS_QC].tolist(),RMSE str(u): le[RMSE],Drivers str(u): [ .join(Drivers.columns.tolist())]*sole.shape[0]}df0 pd.DataFrame(dic0)dic{list_name:df0, rmse:df0[RMSE str(u)][df0.index[0]]} dic_list [dic]sorted_dicsorted(dic_list, keylambda dic_list: dic_list[rmse], reverseFalse) list_name[a[list_name] for a in sorted_dic] # 打印出来的话就是整个dataframe countdf pd.concat(list_name,axis1)df df.loc[:,~df.columns.duplicated()]shunxu [.join(list(filter(str.isdigit,x))) for x in df.columns]shunxu0 list(filter(None,shunxu))shunxu list(set(shunxu0)) #set的方法会改变顺序 按照原来的index排个序shunxu.sort(key shunxu0.index)print(shunxu) # 变量个数 VS.插补率# fig plt.subplot(8,5,36dalei) # plt.savefig(os.path.join(rD:\Fluxnet\PIC666\DoubleY,s.split(_,6)[1])# , bbox_inchestight, dpi500)x [x for x in reversed(range(3,len(gap_drople.columns)1))] #reversed(range(len(df.index)1),3)matplotlib does not support generators as inputy1 rmse_listy2 filling_rate_listax fig.add_subplot(len(gap_drople.columns)-1,1,len(gap_drople.columns)-1)fig plt.figure(figsize(12,8),dpi400)ax fig.add_subplot(1,1,1)line1ax.plot(x, y1,colorred,linestyle--,markero,linewidth2.5)ax.set_ylabel(RMSE of 25% tesing set, {family:Times New Roman,weight:normal,size:21},colorred)ax.set_xlabel(Number of drivers,{family:Times New Roman,weight:normal,size:21})ax.tick_params(labelsize19)# ax1.set_title()ax2 ax.twinx() # this is a important function#ax2.set_ylim([-0.05,1.05]) # 设置y轴取值范围 # ax2.set_yticks([0.0,0.3,0.5,0.7,0.9]) # 设置刻度范围 # ax2.set_yticklabels([0.0,0.3,0.5,0.7,0.9]) # 设置刻度line2ax2.plot(x, y2,colorblue,markero,linewidth2.5)ax2.tick_params(labelsize19)ax2.set_ylabel(Filling rate, {family:Times New Roman,weight:normal,size:21},colorblue)# a2.invert_yaxis() #invert_yaxis()翻转纵轴invert_xaxis()翻转横轴# plt.tick_params(labelsize19)# plt.xticks(np.arange(5, 13, 1),fontpropertiesTimes New Roman,size19)plt.savefig(os.path.join(rD:\Fluxnet\PIC666\1129,str(file.split(_,6)[1]) .png), bbox_inchestight, dpi500)plt.show()# # 动态插补 # # for latter in shunxu[1:]:# a df# ba.loc[a[LE_Gap_filled str(shunxu[0])] -9999, [LE_Gap_filled str(shunxu[0]), Drivers str(shunxu[0]), RMSE str(shunxu[0])]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers str(shunxu[0])]a.loc[a[LE_Gap_filled str(shunxu[0])] np.nan, [Drivers str(shunxu[0])]]# a[Drivers str(shunxu[0])].fillna( b[Drivers str(shunxu[0])] ,inplace True ) # 自立门户 新建第一个模型的Drivers# a[RMSE str(shunxu[0])]a.loc[a[LE_Gap_filledstr(shunxu[0])] np.nan, [RMSE str(shunxu[0])]]# a[RMSE str(shunxu[0])].fillna( b[RMSE str(shunxu[0])] ,inplace True ) # 自立门户 新建第一个模型的RMSE# ba.loc[a[LE_Gap_filled str(latter)] -9999, [LE_Gap_filled str(latter), Drivers str(latter), RMSE str(latter)]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers str(latter)]a.loc[a[LE_Gap_filled str(latter)] np.nan, [Drivers str(latter)]]# a[Drivers str(latter)].fillna( b[Drivers str(latter)] ,inplace True ) # 自立门户 新建第一个模型的Drivers# a[RMSE str(latter)]a.loc[a[LE_Gap_filledstr(latter)] np.nan, [RMSE str(latter)]]# a[RMSE str(latter)].fillna( b[RMSE str(latter)] ,inplace True ) # 自立门户 新建第一个模型的RMSE# a[LE_Gap_filledstr(shunxu[0])].fillna(a[LE_Gap_filled str(latter)], inplaceTrue) # LE Update# df2pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下# print(a[LE_Gap_filledstr(shunxu[0])])# a[Driversstr(shunxu[0])].fillna(a[Drivers str(latter)],inplaceTrue) # Drivers Update# a[RMSEstr(shunxu[0])].fillna(a[RMSE str(latter)],inplaceTrue) # Rmse Update# # 加一下a的时间# sopd.read_csv(os.path.join(path1,file))# soso[[TIMESTAMP_START ,TIMESTAMP_END,LE_F_MDS]]# print(a[TIMESTAMP_START])# a.to_csv(os.path.join(rC:\Users\Lenovo\Desktop\R\用来rmse的原始值666, str(file.split(_,6)[1]) .csv),index False)# # print(a)# a[QC] np.nan # a.loc[a[LE_Gap_filled str(shunxu[0])] ! -9999, QC] 1# a.loc[a[LE_Gap_filled str(shunxu[0])] -9999 , QC] 0# a[LE_Gap_filled str(shunxu[0])].replace(np.nan,-8888,inplaceTrue) # 原本是空值的部分 由于变量缺失过多压根儿补不了的部分 在原数据集中QC为3表示的是ERA的数据# a[LE_Gap_filled str(shunxu[0])].replace(-9999,np.nan,inplaceTrue) # | 空值还有种原因是 因为变量组合的原因没有补到那一块所以仍旧空# a[LE_Gap_filled str(shunxu[0])].fillna(so[LE_F_MDS],inplaceTrue)# 最后依旧是空值 # a.loc[a[LE_Gap_filled str(shunxu[0])] -8888 , QC] -9999# aa[[ TIMESTAMP_END, LE_Gap_filled str(shunxu[0]), QC, Drivers str(shunxu[0]), RMSE str(shunxu[0])]]# a pd.merge(so,a,howouter,onTIMESTAMP_END)# a[LE_Gap_filled str(shunxu[0])].fillna(a[LE_F_MDS],inplaceTrue) # a[LE_Gap_filled str(shunxu[0])].replace(-8888,np.nan,inplaceTrue) # aa[[TIMESTAMP_START, TIMESTAMP_END, LE_Gap_filled str(shunxu[0]), QC, Drivers str(shunxu[0]), RMSE str(shunxu[0])]]# bianliangmen pd.read_csv(os.path.join(path1,file))# bianliangmen bianliangmen.drop([TIMESTAMP_START ,TIMESTAMP_END,LE_F_MDS],axis1).columns# for i in bianliangmen:# a[str(i)]np.nan# # print(a.columns) year # a[Drivers str(shunxu[0])].replace(np.nan,-9999,inplaceTrue) # ba.loc[a[Drivers str(shunxu[0])]!-9999]# for i in b.columns[6:]:# cb[b[Drivers str(shunxu[0])].str.contains(i)]# c[i].replace(np.nan,,inplaceTrue)# a[i]c[i]# ba.count(axis1)-6# bpd.DataFrame(b)# a[n_drivers]b# a[n_drivers].replace([-1,-2,-3],np.nan,inplaceTrue)# a[Drivers str(shunxu[0])].replace(-9999,np.nan,inplaceTrue)# # print(a)# a.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\FILLED,str(file.split(_,6)[1]) .csv),index False)# # # # total_number.append(int(sole.shape[0]))# # post_dropna_number.append(int(train_option_dropna.shape[0]))# # post_drop_le_abnormal_number.append(int(c.shape[0]))# # test_number.append(int(c.shape[0]*0.25))# # train_number.append(int(c.shape[0]*0.75))# # # N_estimators.append(n_estimators)# # # Max_depth.append(max_depth)# # 绘制散点图file# s_ori pd.read_csv(os.path.join(path1,file))# ori s_ori.loc[s_ori[LE_F_MDS_QC]0,[TIMESTAMP_START,LE_F_MDS]]# filled s_ori.loc[s_ori[LE_F_MDS_QC]!0,[TIMESTAMP_START,LE_F_MDS]]# s_ori[TIMESTAMP_START] pd.to_datetime(s_ori[TIMESTAMP_START])# s_ori[year] s_ori[TIMESTAMP_START].dt.year# gap_filled a.loc[a[QC] 1,[TIMESTAMP_START,LE_Gap_filled str(shunxu[0])]]# fig1 ,ax plt.subplots(5,1,sharexcol,figsize(25,9),dpi300)# ax0 ax[0]# ax0.plot( LE_F_MDS, dataori, linestylenone,markero)# ax1 ax[1]# ax1.plot( LE_F_MDS, datafilled, color#ff7f0e,linestylenone, markero)# ax2 ax[2]# ax2.plot( LE_F_MDS, dataori, alpha0.6, linestylenone, markero)# ax2.plot( LE_F_MDS, datafilled, alpha0.6, linestylenone, markero)# ax3 ax[3]# # ax2.plot( LE_F_MDS, datas_ori, alpha0.6, linestylenone, markero)# ax3.plot(LE_Gap_filled str(shunxu[0]),datagap_filled, color#FAA460, linestylenone, markero )# ax4 ax[4]# ax4.plot( LE_F_MDS, dataori, alpha0.6, linestylenone, markero)# ax4.plot(LE_Gap_filled str(shunxu[0]),datagap_filled,color#FAA460, alpha0.6, linestylenone, markero )# ax0.set_ylabel(in-situ, fontsize19)# ax1.set_ylabel(MDS, fontsize19)# ax2.set_ylabel(FLUXNET2015, fontsize19)# ax3.set_ylabel(RF, fontsize19)# ax4.set_ylabel(Dynamic, fontsize19)# nianfen int(file.split(_,6)[5].split(-,2)[0])# nianfen1 int(file.split(_,6)[5].split(-,2)[1])# ax2.set_xticks([365*48*x for x in range(nianfen12-nianfen)]) # ax2.set_xticklabels([x for x in range(nianfen,nianfen12)],fontpropertiesTimes New Roman,size19)# ax4.set_xlabel(Year, fontsize19)# plt.savefig(os.path.join(rD:\Fluxnet\PIC666\1128,str(file.split(_,6)[1]) .png)# , bbox_inchestight, dpi500)# plt.show()#导出# dic{SITES:site_list,YEAR:year_list,原始数目:total_number# ,去掉空值后:post_dropna_number# ,去掉LE异常值后:post_drop_le_abnormal_number# ,TRAIN_NUMBER:train_number# ,TEST_NUMBER:test_number# # ,n_estimators:N_estimators,max_depth:Max_depth# ,RMSE:Rmse_list,R2:R2_list,BIAS:Bias_list# ,Drivers_column:Drivers_column# ,Filling_rate : Filling_rate_list# }# dicpd.DataFrame(dic)# # print(dic)# dic.to_csv(rD:\Fluxnet\OUTCOME\RMSE_ALL\RMSE_All_Day.csv)# dic_sole{# RMSE:rmse_list,R2:r2_list,BIAS:bias_list# } # dic_solepd.DataFrame(dic_sole)# dic_sole.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\RMSE, str(file.split(_,6)[1]) .csv),index False)#Various length of gap# for j,k in zip([0.05,0.075,0.125],[6,24,48]): #一天 七天 一月 一共占总数据的0.25# #48,336,720# df0sole.copy()# print(len(df0))# dfdf0[df0[LE_F_MDS_QC]0]# print(df[LE_F_MDS_QC])# print(len(df))# print(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)# #可以开始make gap的位置区间# start_pointnp.arange(df[LE_F_MDS_QC].index[0],df[LE_F_MDS_QC].index[-1]-k1) #k是gap长度 # #gap的个数# gap_numberint(len(df)*j/k)# print(gap_number)# # 随机选择开始的位置# # np.random.seed(1) # 每次的随机数都是一样的# gap_posinp.random.choice(start_point,gap_number*3) #多一点选择的余地# posisorted(gap_posi) # 排一下顺序}# print(posi)# count0# gap_qujian[]# # 并不是每个随机开始的位置都可以用不能和以前的gap开始的位置重叠gap的位置数据量也要充足# for m,n in enumerate(posi): # m是索引 n是开始的位置其实也是索引# # 单个gap的区间# # 意思是从第多少位到多少位是gap区间# gap_danqujian_list [h for h in np.arange(n,nk)]# print(gap_danqujian_list)# print()# # 整个DataFrame中的gap# gap_df df0.iloc[gap_danqujian_list]# # print(gap_df)# # gap区间要在限定的范围内# if np.isin(gap_danqujian_list,start_point).all():# # 不同长度gap不能重叠# if m0 and n-posi[m-1] k: # continue# # gap区间内要有足够的原始数据# if len(gap_df.dropna()) / len(gap_df) 0.5:# continue# gap_qujian.extend(gap_danqujian_list)# print(gap_qujian)# count 1# if count gap_number: # 每种gap的数目都要达到gap_number,达到规定的比例才会停止# print()# print(count)# break# # 要去掉索引对应的le为空的suoyin# test_dfdf0.iloc[gap_qujian] # pd.iloc[[1,2,3]] 查找方括号内数字所在的行# print(test_df)# print(len(test_df))# testtest_df.loc[test_df[LE_F_MDS_QC]0,].dropna(axis0) # pd.iloc[[1,2,3]] 查找方括号内数字所在的行# print(test)# print(len(test))# train_indexnp.setdiff1d(df0.index,test_df.index) # setdiff1d 前面那个数组有 后边那个没有的值# print(train_index)# train_dfdf0.iloc[train_index] # # pd.iloc[[1,2,3]] 查找方括号内数字所在的行# traintrain_df.loc[train_df[LE_F_MDS_QC]0,].dropna(axis0)# print(train)# print(len(train))# pd.set_option(display.max_columns, None)# # print(test.head(5))# print(train.shape)# print(test.shape)# apd.DataFrame(test.isna().sum().sort_values(ascendingFalse))# # destest.describe()# # shangxudes.loc[75%]1.5*(des.loc[75%]-des.loc[25%])# # xiaxudes.loc[25%]-1.5*(des.loc[75%]-des.loc[25%])# # testtest[(test[LE_F_MDS] shangxu[3])# # (test[LE_F_MDS] xiaxu[3])]# # print(des)# # destrain.describe()# # shangxudes.loc[75%]1.5*(des.loc[75%]-des.loc[25%])# # xiaxudes.loc[25%]-1.5*(des.loc[75%]-des.loc[25%])# # traintrain[(train[LE_F_MDS] shangxu[3])# # (train[LE_F_MDS] xiaxu[3])]# # print(xiaxu)# traintrain.drop([TIMESTAMP_START,TIMESTAMP_END,LE_F_MDS_QC],axis1)# testtest.drop([TIMESTAMP_START,TIMESTAMP_END,LE_F_MDS_QC],axis1)# # train_Driverstrain.drop([LE_F_MDS],axis1)# train_Driverstrain[feature]# print(train_Drivers.index)# # test_Driverstest.drop([LE_F_MDS],axis1) # test_Driverstest[feature]# print(test_Drivers.index)# train_LEtrain[LE_F_MDS]# print(train_LE.index)# test_LEtest[LE_F_MDS]# print(test_LE.index)# # x_train,x_test,y_train,y_testtrain_test_split(Drivers,LE# # ,test_size0.25# # ,random_state(0)) # print(train_Drivers.shape)# print(test_Drivers.shape)# print(train_LE.shape)# print(test_LE.shape)# # 建模# rf1RandomForestRegressor(n_estimators1100# ,max_depth80# ,random_state(0)) # rf1.fit(train_Drivers,train_LE) # rmse1np.sqrt(mean_squared_error(test_LE,rf1.predict(test_Drivers)))# rmse_list1.append(rmse1)# rmse_dfpd.DataFrame({rmse:rmse_list1})# print(rmse_df)# r2r2_score(test_LE,rf1.predict(test_Drivers)) # r2_list1.append(r2)# r2_dfpd.DataFrame({r2:r2_list1})# bias(rf1.predict(test_Drivers)-test_LE).mean()# bias_list1.append(bias)# bias_dfpd.DataFrame({bias:bias_list1})# site_list1[s.split(_,6)[1]]# year_list1[int(s.split(_,6)[5].split(-,1)[1])# -int(s.split(_,6)[5].split(-,1)[0])1] # # total_number.append(int(b.shape[0]))# # post_dropna_number.append(int(a.shape[0]))# # post_drop_le_abnormal_number.append(int(c.shape[0]))# test_number1.append(int(test.shape[0]))# train_number1.append(int(train.shape[0]))# dic2{SITES:site_list1,YEAR:year_list1# # ,原始数目:total_number# # ,去掉空值后:post_dropna_number# # ,去掉LE异常值后:post_drop_le_abnormal_number# ,TRAIN_NUMBER:train_number1# ,TEST_NUMBER:test_number1# # ,n_estimators:N_estimators,max_depth:Max_depth# ,RMSE:rmse_list1,R2:r2_list1,BIAS:bias_list1# }# dic2pd.DataFrame(dic2)# print(dic2)# dic2.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\GAP_diff, str(s.split(_,6)[1]) .csv),index False)#读一下八个csv# dic_list[]# for i in range(3,5):# dfpd.read_csv(os.path.join(outpath,str(s.split(_,6)[1]) str(i) .csv))# dic{list_name:df, rmse:df[RMSE][0]}# dic_list[dic]# print(dic_list) # print()# # df3pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 3 .csv)) # # df4pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 4 .csv)) # # df5pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 5 .csv)) # # df6pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 6 .csv)) # # df7pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 7 .csv)) # # df8pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 8 .csv)) # # df9pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 9 .csv)) # # df10pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 10 .csv)) # # df11pd.read_csv(os.path.join(rD:\Fluxnet\OUTCOME,str(s.split(_,6)[1]) 11 .csv)) # # dic[{list_name:df3, rmse:df3[RMSE][0]} # # ,{list_name:df4, rmse:df4[RMSE][0]} # # ,{list_name:df5, rmse:df5[RMSE][0]} # # ,{list_name:df6, rmse:df6[RMSE][0]} # # ,{list_name:df7, rmse:df7[RMSE][0]} # # ,{list_name:df8, rmse:df8[RMSE][0]} # # ,{list_name:df9, rmse:df9[RMSE][0]} # # ,{list_name:df10, rmse:df10[RMSE][0]} # # ,{list_name:df11, rmse:df11[RMSE][0]} # # ]# sorted_dicsorted(dic_list, keylambda dic_list: dic_list[rmse], reverseFalse) # print(sorted_dic) # list_name[a[list_name] for a in sorted_dic] # 打印出来的话就是整个dataframe # print(list_name) # dfpd.concat(list_name,axis1)# print(df) # df.to_csv(os.path.join(outpath, str(s.split(_,6)[1]) 6666.csv))# apd.read_csv(os.path.join(outpath, str(s.split(_,6)[1]) 6666.csv)) # # pd.set_option(display.max_columns, None) # dfpd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # print(a) # # 直接用fillna来填可行 但还要填drivers!!! # # 找rmse最低值 对应的来开始填补 # print(df.columns)# 一# ba.loc[a[LE_Gap_filled] -9999, [LE_Gap_filled,Drivers,RMSE]]# a[Drivers]a.loc[a[LE_Gap_filled] np.nan, [Drivers]]# a[Drivers].fillna( b[Drivers] ,inplace True ) # 自立门户 新建第一个模型的Drivers# print(a[Drivers].describe())# a[RMSE]a.loc[a[LE_Gap_filled] np.nan, [RMSE]]# a[RMSE].fillna( b[RMSE] ,inplace True ) # 自立门户 新建第一个模型的RMSE# print(a[RMSE].describe())# ba.loc[a[LE_Gap_filled.1] -9999, [LE_Gap_filled.1, Drivers.1, RMSE.1]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.1]a.loc[a[LE_Gap_filled.1] np.nan, [Drivers.1]]# a[Drivers.1].fillna( b[Drivers.1] ,inplace True ) # 自立门户 新建第二个模型的Drivers# print(a[Drivers.1].describe())# a[RMSE.1]a.loc[a[LE_Gap_filled] np.nan, [RMSE.1]]# a[RMSE.1].fillna( b[RMSE.1] ,inplace True ) # 自立门户 新建第一个模型的RMSE# print(a[RMSE.1].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.1], inplaceTrue) # LE Update# df1pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下# print(df1)# a[Drivers].fillna(a[Drivers.1],inplaceTrue) # Drivers Update# print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.1],inplaceTrue) # Rmse Update# print(a[RMSE].describe())# # 二 # ba.loc[a[LE_Gap_filled.2] -9999, [LE_Gap_filled.2, Drivers.2, RMSE.2]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.2]a.loc[a[LE_Gap_filled.2] np.nan, [Drivers.2]] # a[Drivers.2].fillna( b[Drivers.2] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.2].describe())# a[RMSE.2]a.loc[a[LE_Gap_filled] np.nan, [RMSE.2]] # a[RMSE.2].fillna( b[RMSE.2] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.2].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.2], inplaceTrue) # LE Update # df2pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df2)# a[Drivers].fillna(a[Drivers.2],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.2],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 三 # ba.loc[a[LE_Gap_filled.3] -9999, [LE_Gap_filled.3, Drivers.3, RMSE.3]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.3]a.loc[a[LE_Gap_filled.3] np.nan, [Drivers.3]] # a[Drivers.3].fillna( b[Drivers.3] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.3].describe())# a[RMSE.3]a.loc[a[LE_Gap_filled] np.nan, [RMSE.3]] # a[RMSE.3].fillna( b[RMSE.3] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.3].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.3], inplaceTrue) # LE Update # df3pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df3)# a[Drivers].fillna(a[Drivers.3],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.3],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 四 # ba.loc[a[LE_Gap_filled.4] -9999, [LE_Gap_filled.4, Drivers.4, RMSE.4]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.4]a.loc[a[LE_Gap_filled.4] np.nan, [Drivers.4]] # a[Drivers.4].fillna( b[Drivers.4] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.4].describe())# a[RMSE.4]a.loc[a[LE_Gap_filled] np.nan, [RMSE.4]] # a[RMSE.4].fillna( b[RMSE.4] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.4].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.4], inplaceTrue) # LE Update # df4pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df4)# a[Drivers].fillna(a[Drivers.4],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.4],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 五 # ba.loc[a[LE_Gap_filled.5] -9999, [LE_Gap_filled.5, Drivers.5, RMSE.5]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.5]a.loc[a[LE_Gap_filled.5] np.nan, [Drivers.5]] # a[Drivers.5].fillna( b[Drivers.5] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.5].describe())# a[RMSE.5]a.loc[a[LE_Gap_filled] np.nan, [RMSE.5]] # a[RMSE.5].fillna( b[RMSE.5] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.5].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.5], inplaceTrue) # LE Update # df5pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df5)# a[Drivers].fillna(a[Drivers.5],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.5],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 六 # ba.loc[a[LE_Gap_filled.6] -9999, [LE_Gap_filled.6, Drivers.6, RMSE.6]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.6]a.loc[a[LE_Gap_filled.6] np.nan, [Drivers.6]] # a[Drivers.6].fillna( b[Drivers.6] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.6].describe())# a[RMSE.6]a.loc[a[LE_Gap_filled] np.nan, [RMSE.6]] # a[RMSE.6].fillna( b[RMSE.6] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.5].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.6], inplaceTrue) # LE Update # df6pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df6)# a[Drivers].fillna(a[Drivers.6],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.6],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 七 # ba.loc[a[LE_Gap_filled.7] -9999, [LE_Gap_filled.7, Drivers.7, RMSE.7]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.7]a.loc[a[LE_Gap_filled.7] np.nan, [Drivers.7]] # a[Drivers.7].fillna( b[Drivers.7] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.7].describe())# a[RMSE.7]a.loc[a[LE_Gap_filled] np.nan, [RMSE.7]] # a[RMSE.7].fillna( b[RMSE.7] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.7].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.7], inplaceTrue) # LE Update # df7pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df7)# a[Drivers].fillna(a[Drivers.7],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.7],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 八 # ba.loc[a[LE_Gap_filled.8] -9999, [LE_Gap_filled.8, Drivers.8, RMSE.8]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.8]a.loc[a[LE_Gap_filled.8] np.nan, [Drivers.8]] # a[Drivers.8].fillna( b[Drivers.8] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.8].describe())# a[RMSE.8]a.loc[a[LE_Gap_filled] np.nan, [RMSE.8]] # a[RMSE.8].fillna( b[RMSE.8] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.8].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.8], inplaceTrue) # LE Update # df8pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df8)# a[Drivers].fillna(a[Drivers.8],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.8],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 九 # ba.loc[a[LE_Gap_filled.9] -9999, [LE_Gap_filled.9, Drivers.9, RMSE.9]] # 只是有LE数值的地方用来填充上边的空集# a[Drivers.9]a.loc[a[LE_Gap_filled.9] np.nan, [Drivers.9]] # a[Drivers.9].fillna( b[Drivers.9] ,inplace True ) # 自立门户 新建第二个模型的Drivers # print(a[Drivers.9].describe())# a[RMSE.9]a.loc[a[LE_Gap_filled] np.nan, [RMSE.9]] # a[RMSE.9].fillna( b[RMSE.9] ,inplace True ) # 自立门户 新建第一个模型的RMSE # print(a[RMSE.9].describe())# a[LE_Gap_filled].fillna(a[LE_Gap_filled.9], inplaceTrue) # LE Update # df8pd.DataFrame(a.isna().sum().sort_values(ascendingFalse)) # 统计一下 # print(df8)# a[Drivers].fillna(a[Drivers.9],inplaceTrue) # Drivers Update # print(a[Drivers].describe())# a[RMSE].fillna(a[RMSE.9],inplaceTrue) # Rmse Update # print(a[RMSE].describe())# # 加一下a的时间# sopd.read_csv(os.path.join(path1,s)) # soso[[TIMESTAMP_START ,TIMESTAMP_END,LE_F_MDS]]# print(a[TIMESTAMP_START])# print(a.shape)# a[QC] np.nan # a.loc[a[LE_Gap_filled] -9999, QC] 1 # a.loc[a[LE_Gap_filled] -9999 , QC] 0# a[LE_Gap_filled].replace(np.nan,-8888,inplaceTrue) # 原本是空值的部分 由于变量缺失过多压根儿补不了的部分 在原数据集中QC为3表示的是ERA的数据 # a[LE_Gap_filled].replace(-9999,np.nan,inplaceTrue) # | 空值还有种原因是 因为变量组合的原因没有补到那一块所以仍旧空 # a[LE_Gap_filled].fillna(sole[LE_F_MDS],inplaceTrue)# 最后依旧是空值 # a.loc[a[LE_Gap_filled] -8888 , QC] -9999# print(a.dropna().shape[0]/a.shape[0])# aa[[ TIMESTAMP_END, LE_Gap_filled, QC, Drivers, RMSE]]# a pd.merge(so,a,howouter,onTIMESTAMP_END)# a[LE_Gap_filled].fillna(a[LE_F_MDS],inplaceTrue) # a[LE_Gap_filled].replace(-8888,np.nan,inplaceTrue) # aa[[TIMESTAMP_START, TIMESTAMP_END, LE_Gap_filled, QC, Drivers, RMSE]]# a[SW_IN_F_MDS]np.nan # a[NETRAD]np.nan # a[G_F_MDS]np.nan # a[TA_F_MDS]np.nan # a[RH]np.nan # a[WD]np.nan # a[WS]np.nan # a[PA_F]np.nan # a[VPD_F_MDS]np.nan # a[NDVI]np.nan # a[TS_F_MDS_1]np.nan # a[SWC_F_MDS_1]np.nan # a[TA_F_MDS]np.nan# a[Drivers].replace(np.nan,-9999,inplaceTrue)# ba.loc[a[Drivers]!-9999] # # print(b)# for i in b.columns[6:]:# # print(i)# cb[b[Drivers].str.contains(i)]# c[i].replace(np.nan,,inplaceTrue)# a[i]c[i]# ba.count(axis1)-6 # bpd.DataFrame(b)# a[n_drivers]b# a[n_drivers].replace([-1,-2,-3],np.nan,inplaceTrue)# a[Drivers].replace(-9999,np.nan,inplaceTrue)# # a.to_csv(os.path.join(path,sole.csv),index False)# a.to_csv(os.path.join(rD:\Fluxnet\OUTCOME\FILLED,str(s.split(_,6)[1]) .csv),index False)# # 创造空列 # # df[Empty_1] # # df[Empty_2] np.nan # # df[Empty_3] pd.Series() 在这里插入代码片欢迎使用Markdown编辑器 你好 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持除了标准的Markdown编辑器功能我们增加了如下几点新功能帮助你用它写博客 全新的界面设计 将会带来全新的写作体验在创作中心设置你喜爱的代码高亮样式Markdown 将代码片显示选择的高亮样式 进行展示增加了 图片拖拽 功能你可以将本地的图片直接拖拽到编辑区域直接展示全新的 KaTeX数学公式 语法增加了支持甘特图的mermaid语法1 功能增加了 多屏幕编辑 Markdown文章功能增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能功能按钮位于编辑区域与预览区域中间增加了 检查列表 功能。 功能快捷键 撤销Ctrl/Command Z 重做Ctrl/Command Y 加粗Ctrl/Command B 斜体Ctrl/Command I 标题Ctrl/Command Shift H 无序列表Ctrl/Command Shift U 有序列表Ctrl/Command Shift O 检查列表Ctrl/Command Shift C 插入代码Ctrl/Command Shift K 插入链接Ctrl/Command Shift L 插入图片Ctrl/Command Shift G 查找Ctrl/Command F 替换Ctrl/Command G 合理的创建标题有助于目录的生成 直接输入1次#并按下space后将生成1级标题。 输入2次#并按下space后将生成2级标题。 以此类推我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。 如何改变文本的样式 强调文本 强调文本 加粗文本 加粗文本 标记文本 删除文本 引用文本 H2O is是液体。 210 运算结果是 1024. 插入链接与图片 链接: link. 图片: 带尺寸的图片: 居中的图片: 居中并且带尺寸的图片: 当然我们为了让用户更加便捷我们增加了图片拖拽功能。 如何插入一段漂亮的代码片 去博客设置页面选择一款你喜欢的代码片高亮样式下面展示同样高亮的 代码片. // An highlighted block var foo bar;生成一个适合你的列表 项目 项目 项目 项目1项目2项目3 计划任务 完成任务 创建一个表格 一个简单的表格是这么创建的 项目Value电脑$1600手机$12导管$1 设定内容居中、居左、居右 使用:---------:居中 使用:----------居左 使用----------:居右 第一列第二列第三列第一列文本居中第二列文本居右第三列文本居左 SmartyPants SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如 TYPEASCIIHTMLSingle backticksIsnt this fun?‘Isn’t this fun?’QuotesIsnt this fun?“Isn’t this fun?”Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash 创建一个自定义列表 MarkdownText-to-HTML conversion tool AuthorsJohn Luke 如何创建一个注脚 一个具有注脚的文本。2 注释也是必不可少的 Markdown将文本转换为 HTML。 KaTeX数学公式 您可以使用渲染LaTeX数学表达式 KaTeX: Gamma公式展示 Γ(n)(n−1)!∀n∈N\Gamma(n) (n-1)!\quad\forall n\in\mathbb NΓ(n)(n−1)!∀n∈N 是通过欧拉积分 Γ(z)∫0∞tz−1e−tdt.\Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)∫0∞​tz−1e−tdt. 你可以找到更多关于的信息 LaTeX 数学表达式here. 新的甘特图功能丰富你的文章 Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid关于 甘特图 语法参考 这儿, UML 图表 可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图 #mermaid-svg-OdoSbBfWAW36xZmP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OdoSbBfWAW36xZmP .error-icon{fill:#552222;}#mermaid-svg-OdoSbBfWAW36xZmP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-OdoSbBfWAW36xZmP .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-OdoSbBfWAW36xZmP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-OdoSbBfWAW36xZmP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-OdoSbBfWAW36xZmP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-OdoSbBfWAW36xZmP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-OdoSbBfWAW36xZmP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-OdoSbBfWAW36xZmP .marker.cross{stroke:#333333;}#mermaid-svg-OdoSbBfWAW36xZmP svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-OdoSbBfWAW36xZmP .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-OdoSbBfWAW36xZmP text.actortspan{fill:black;stroke:none;}#mermaid-svg-OdoSbBfWAW36xZmP .actor-line{stroke:grey;}#mermaid-svg-OdoSbBfWAW36xZmP .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-OdoSbBfWAW36xZmP .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-OdoSbBfWAW36xZmP #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-OdoSbBfWAW36xZmP .sequenceNumber{fill:white;}#mermaid-svg-OdoSbBfWAW36xZmP #sequencenumber{fill:#333;}#mermaid-svg-OdoSbBfWAW36xZmP #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-OdoSbBfWAW36xZmP .messageText{fill:#333;stroke:#333;}#mermaid-svg-OdoSbBfWAW36xZmP .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-OdoSbBfWAW36xZmP .labelText,#mermaid-svg-OdoSbBfWAW36xZmP .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-OdoSbBfWAW36xZmP .loopText,#mermaid-svg-OdoSbBfWAW36xZmP .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-OdoSbBfWAW36xZmP .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-OdoSbBfWAW36xZmP .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-OdoSbBfWAW36xZmP .noteText,#mermaid-svg-OdoSbBfWAW36xZmP .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-OdoSbBfWAW36xZmP .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-OdoSbBfWAW36xZmP .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-OdoSbBfWAW36xZmP .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-OdoSbBfWAW36xZmP .actorPopupMenu{position:absolute;}#mermaid-svg-OdoSbBfWAW36xZmP .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-OdoSbBfWAW36xZmP .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-OdoSbBfWAW36xZmP .actor-man circle,#mermaid-svg-OdoSbBfWAW36xZmP line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-OdoSbBfWAW36xZmP :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}张三李四王五你好李四, 最近怎么样?你最近怎么样王五我很好谢谢!我很好谢谢!李四想了很长时间, 文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五这将产生一个流程图。: #mermaid-svg-6gWx4SnioTMKeX72 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6gWx4SnioTMKeX72 .error-icon{fill:#552222;}#mermaid-svg-6gWx4SnioTMKeX72 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6gWx4SnioTMKeX72 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-6gWx4SnioTMKeX72 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6gWx4SnioTMKeX72 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6gWx4SnioTMKeX72 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6gWx4SnioTMKeX72 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6gWx4SnioTMKeX72 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6gWx4SnioTMKeX72 .marker.cross{stroke:#333333;}#mermaid-svg-6gWx4SnioTMKeX72 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6gWx4SnioTMKeX72 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-6gWx4SnioTMKeX72 .cluster-label text{fill:#333;}#mermaid-svg-6gWx4SnioTMKeX72 .cluster-label span{color:#333;}#mermaid-svg-6gWx4SnioTMKeX72 .label text,#mermaid-svg-6gWx4SnioTMKeX72 span{fill:#333;color:#333;}#mermaid-svg-6gWx4SnioTMKeX72 .node rect,#mermaid-svg-6gWx4SnioTMKeX72 .node circle,#mermaid-svg-6gWx4SnioTMKeX72 .node ellipse,#mermaid-svg-6gWx4SnioTMKeX72 .node polygon,#mermaid-svg-6gWx4SnioTMKeX72 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6gWx4SnioTMKeX72 .node .label{text-align:center;}#mermaid-svg-6gWx4SnioTMKeX72 .node.clickable{cursor:pointer;}#mermaid-svg-6gWx4SnioTMKeX72 .arrowheadPath{fill:#333333;}#mermaid-svg-6gWx4SnioTMKeX72 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6gWx4SnioTMKeX72 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6gWx4SnioTMKeX72 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-6gWx4SnioTMKeX72 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-6gWx4SnioTMKeX72 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6gWx4SnioTMKeX72 .cluster text{fill:#333;}#mermaid-svg-6gWx4SnioTMKeX72 .cluster span{color:#333;}#mermaid-svg-6gWx4SnioTMKeX72 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6gWx4SnioTMKeX72 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}链接长方形圆圆角长方形菱形关于 Mermaid 语法参考 这儿, FLowchart流程图 我们依旧会支持flowchart的流程图 Created with Raphaël 2.3.0开始我的操作确认结束yesno关于 Flowchart流程图 语法参考 这儿. 导出与导入 导出 如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 生成一个.md文件或者.html文件进行本地保存。 导入 如果你想加载一篇你写过的.md文件在上方工具栏可以选择导入功能进行对应扩展名的文件导入 继续你的创作。 mermaid语法说明 ↩︎ 注脚的解释 ↩︎
http://www.dnsts.com.cn/news/129261.html

相关文章:

  • 淘宝客网站怎么做的人少了广州网站推广服务商
  • 网站开发公wordpress可以做淘宝
  • 品牌型网站建设哪一米八效果图网站
  • 门户网站建设进展情况网站建设120
  • 怎么把在微企点做响应式网站石家庄建站源码
  • 网站开发东莞免费开源的企业建站系统
  • 什么亲子网站可以做一下广告词长城宽带做网站
  • 虚拟主机 视频网站wordpress 插件 喜欢
  • html设计素材网站国家企业信用网(江苏)
  • 做网站公司郑州句容建设局网站
  • 北京哪家制作网站好沈阳网站制作方法
  • 潍坊seo按天收费鞍山做网站优化
  • 做软件常用的网站做桂林网站的图片大全
  • 网站找人做seo然后网站搜不到了南京cms建站系统
  • 太原晋民网站建设公司帮人做网站在徐州被敲诈五万
  • 兰州做网站公司有哪些黑色星期五wordpress
  • 哪个网站是做安全教育中国万网网站建设服务
  • 一流 北京网站建设网站服务器的采购方案
  • 贵阳网站优化公司wordpress5.2 icp备案号
  • 深圳贸易网站建设网页制作dw软件
  • 现在由哪些网站可以做外链做网站需要什么技术员
  • 旅游网站对比模板上海注册公司流程及费用
  • 网站备案在哪里找惠州宣传片制作公司
  • 毕业答辩为什么做网站做网站最好用的软件
  • 黄山市非遗网站策划书帝国做网站的步骤
  • 网站标题分隔符号央视网商城网站建设
  • 如何建立一个小程序的网站深圳平湖网站开发
  • 做ppt一般在什么网站好合肥网站建设博客
  • 公司建推广网站多少钱网站设计制作报价图片欣赏
  • php数据库的网站模板代理网络是什么意思