读取evo输出的zip文件,并将数据保存在Excel中

输出结果示意:

代码:

import numpy as np
import pandas as pd
from openpyxl import load_workbook
import os
"""
本函数作用:读取evo输出的zip文件

info.json: 这个JSON文件包含了运行评估时使用的参数和配置的信息,可能还包括了评估的总结。
stats.json: 这个JSON文件可能包含了统计数据,比如均方误差(RMSE)、平均误差、中位数误差、标准差、最小和最大误差值等。
"""


# TODO 替换为你的文件夹的路径
pathName = 'ape_1-ORB'

file_paths = []

file_path1 = '.\\' + pathName + '\\alignment_transformation_sim3.npy'  # 用于对齐真实轨迹和估计轨迹的变换矩阵
file_paths.append(file_path1)
file_path2 = '.\\' + pathName + '\\distances.npy'  # 累计距离
file_paths.append(file_path2)
file_path3 = '.\\' + pathName + '\\distances_from_start.npy'
file_paths.append(file_path3)
file_path4 = '.\\' + pathName + '\\error_array.npy'
file_paths.append(file_path4)
file_path5 = '.\\' + pathName + '\\seconds_from_start.npy'  # 从轨迹开始到每个时间戳的秒数
file_paths.append(file_path5)
file_path6 = '.\\' + pathName + '\\timestamps.npy'
file_paths.append(file_path6)

# 加载.npy文件
data = []
for path in file_paths:
    n = np.load(path)
    print(f"{n}\n")
    data.append(n)

# 检查error.xlsx文件是否存在
if not os.path.exists('.//errors.xlsx'):
    print(f"\n.\\errors.xlsx 不存在,正在创建一个新文件...")
    df = pd.DataFrame()  # 创建一个空的 DataFrame
    # # index=False:这个参数告诉 pandas 在保存到 Excel 文件时不包括行索引。
    # 如果省略或设置为 True,则每行数据前会有一个额外的列显示行索引(通常是从0开始的整数)。
    df.to_excel('errors.xlsx', index=False)
else:
    print(f"\n.\\errors.xlsx 已存在,将进行数据覆盖 !")

# 将数组转换为 DataFrame
dataNeed = pd.DataFrame({'distances': data[1],
                         'distances_from_start': data[2],
                         'error_array': data[3],
                         'seconds_from_start': data[4],
                         'timestamps': data[5]})
# 注意:如果工作表名称已存在,它将被覆盖
dataNeed.to_excel('errors.xlsx', sheet_name=pathName, index=False, engine='openpyxl')

# alignment_transformation_sim3 是一个矩阵,单独保存
wb = load_workbook('errors.xlsx')
ws = wb.active
ws.title = pathName
# 将矩阵添加到指定位置
ws.cell(row=1, column=6, value='alignment_transformation_sim3')
for i in range(len(data[0])):
    for j in range(len(data[0][i])):
        ws.cell(row=i+2, column=j+6, value=data[0][i][j])
# 保存对Excel文件的修改
wb.save('errors.xlsx')

print(f"\n写入到文件 error.xlsx 的 {pathName} 工作表成功 !")

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AndyVictory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值