def __get_data_corr(self, df_1, df_2, move_len): #存在数据为nan和inf的,去掉 pd_two = pd.concat([df_1, df_2], axis=1, sort=True) pd_two = pd_two.replace([np.inf, -np.inf], np.nan).dropna() item_list_00 = self.__get_best_corr(pd_two, move_len) #获取最优person平移 item_list_00 += self.__time_diff_corr_new(pd_two, move_len) #获取最优TS item_list_00 += self.__k_l_info(pd_two, move_len) #获取最优KL #0,3,6位移TS for i in [0, 3, 6]: item_list_00 += self.__get_per_ts_kl( pd.concat([df_1, df_2.shift(i)], axis=1, sort=True)) #获取显著的3个周期频率 freqs_list_1 = [] freqs_list_2 = [] base_cycle_1 = cycle_tool.Cycle_PF(df_1, 1) #周期 freqs_list_1 = base_cycle_1.get_fft_top()[0] try: base_cycle_2 = cycle_tool.Cycle_PF(df_2, 1) #周期 freqs_list_2 = base_cycle_2.get_fft_top()[0] except: print("err:fft高斯滤波错误", df_2) item_list_00 += [str(freqs_list_1), str(freqs_list_2)] return item_list_00
def __fft_gau(self, df): try: base_cycle = cycle_tool.Cycle_PF(df, 1) #周期 freqs_list = base_cycle.get_fft_top()[0] #base_cycle.show_fft() #base_cycle.get_fft_top() #三周期拟合数据 base_fit_42_gau = base_cycle.cycle_fit_by_gau(*freqs_list) except: print("err:fft高斯滤波错误") base_fit_42_gau = pd.Series() return base_fit_42_gau
def do_some(): name = "CBA02701.CS_month.xlsx" pf = pd.read_excel(name) pf = pf.set_index("date") print(pf) pf_hp = hp_lb_c(pf[pf.columns.tolist()[0]]) plt.show() raise sz_cycle = cycle_tool.Cycle_PF(pf_hp, 1) sz_cycle.get_fft_top() sz_fft = sz_cycle.show_fft() freqs_list = sz_cycle.get_fft_top()[0] base_fit_42_gau = sz_cycle.cycle_fit_by_gau(45)