时序预测领域,不管是Autoformer,FEDformer都使用同一个训练框架。输出的结果文件也都是按照相同的格式,输出为txt。
在每次做完实验那结果的时候,都得一个个ctrl+c ,很麻烦,重复劳动。
所以让kimi给造了个轮子,把txt导成execl。
代码如下:
import pandas as pd
import re
# 定义一个函数来解析文件中的行以获取模型信息
def parse_model_info(line):
pattern = r'^(\w+)_(\w+)_random_modes64_(\w+)_ftM_sl(\d+)_ll\d+_pl(\d+)'
match = re.match(pattern, line.strip())
if match:
data_set, model,nothoing, sl, pl = match.groups()
return {
'Dataset': data_set,
'Model': model,
'Input Length': sl,
'Output Length': pl
}
return None
# 定义一个函数来解析MSE和MAE值
def parse_mse_mae(line):
mse_mae_pattern = r'mse:([^,\s]+), mae:([^,\s]+)'
match = re.match(mse_mae_pattern, line.strip())
if match:
mse, mae = match.groups()
return {
'MSE': mse.strip(),
'MAE': mae.strip()
}
return None
# 读取文件并解析每一行
def read_and_parse_file_to_dataframe(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
lines = file.read().splitlines() # 读取所有行并去除换行符
print(len(lines))
data = []
for i in range(0, len(lines), 3): # 每两行处理一次
model_info = parse_model_info(lines[i])
mse_mae_values = parse_mse_mae(lines[i+1])
if model_info and mse_mae_values:
# 合并两个字典
model_info.update(mse_mae_values)
data.append(model_info)
print(len(data))
# 创建DataFrame
dataframe = pd.DataFrame(data)
return dataframe
# 指定文件路径
file_path = 'result.txt'
dataframe = read_and_parse_file_to_dataframe(file_path)
# 显示DataFrame
print(dataframe)
# 保存DataFrame为execl文件
dataframe.to_excel('result.xlsx', index=False)