大语言模型LLM的微调中 Q&A 转换的小工具 xlsx2json.py

在训练语言模型中,需要将文件整理成规范的文档,因为文档本身会有很多不规范的地方,为了训练的正确,将文档进行规范处理。代码的功能是读取一个 Excel 文件,将其数据转换为 JSON 格式,并将 JSON 数据写入到一个文本文件中,实现了从 Excel 数据到 JSON 数据的转换,方便在其他系统或应用中使用或传输数据。

最终要在模型里使用的还是json 格式,以input / output字典格式的输出为例

{

"input": xxx,

"output": xxx

},

逐条解释代码如下:

1. 导入必要的库

import pandas as pd
import os
import json
  • import pandas as pd:导入pandas库,并使用别名pdpandas是一个用于数据处理和分析的强大库,提供了数据结构(如DataFrame)和数据操作方法,方便处理表格型数据,如 Excel 文件中的数据。
  • import os:导入os模块,用于处理文件路径相关的操作,如获取当前文件所在目录、拼接文件路径等。
  • import json:导入json模块,用于处理 JSON 数据,包括将 Python 对象转换为 JSON 格式以及将 JSON 数据解析为 Python 对象。

2. 设置工作目录并指定数据集文件路径

work_dir = os.path.dirname(os.path.abspath(__file__))
tmp_data_file = os.path.join(work_dir, "output.xlsx")
  • work_dir = os.path.dirname(os.path.abspath(__file__)):获取当前 Python 脚本文件所在的目录路径,并将其赋值给work_dir变量。os.path.dirname获取指定路径的目录部分,os.path.abspath获取绝对路径,__file__是 Python 内置变量,表示当前脚本文件的路径。
  • tmp_data_file = os.path.join(work_dir, "output.xlsx"):通过os.path.join将工作目录和文件名output.xlsx拼接成完整的 Excel 文件路径,这里假设output.xlsx在与脚本相同的目录下。如果实际情况不同,需要根据实际情况修改路径。

3. 读取 Excel 文件

df = pd.read_excel(tmp_data_file)

使用pandasread_excel函数读取指定路径(tmp_data_file)的 Excel 文件,并将其数据加载到一个DataFrame对象中。DataFramepandas库中用于处理二维表格数据的主要数据结构,类似于 Excel 中的工作表,可以方便地进行数据选择、过滤、分析等操作。

4. 将 DataFrame 转换为字典列表

data_list = df.to_dict('records')

调用DataFrame对象的to_dict方法,将DataFrame中的每一行数据转换为一个字典,然后将这些字典组成一个列表。参数'records'表示每行数据作为一个字典,字典的键是列名,值是对应列的值。这样得到的data_list是一个包含多个字典的列表,每个字典代表 Excel 文件中的一行数据。

5. 将字典列表转换为 JSON 字符串

json_data = json.dumps(data_list, ensure_ascii=False, indent=4)

使用json模块的dumps函数将data_list(字典列表)转换为 JSON 格式的字符串。ensure_ascii=False参数确保非 ASCII 字符(如中文)能够正确显示,而不是以转义字符的形式出现。indent=4参数使生成的 JSON 字符串具有缩进,格式更易读,方便查看和调试。

6. 将 JSON 数据写入文件

with open(os.path.join(work_dir, 'json_output.txt'), 'w') as f:
    f.write(json_data)

使用with open语句以写入模式('w')打开指定路径(os.path.join(work_dir, 'json_output.txt'))的文件。在with语句块内,将 JSON 字符串(json_data)写入到文件中。with语句会自动管理文件的打开和关闭,确保在操作完成后正确关闭文件,避免资源泄漏。

excel to json

python 复制代码
import pandas as pd
import os
import json

# 设置工作目录
work_dir = os.path.dirname(os.path.abspath(__file__))
# 处理的数据集
tmp_data_file = os.path.join(work_dir, "output.xlsx")

# 读取Excel文件
df = pd.read_excel(tmp_data_file)

# 将DataFrame转换为字典列表
data_list = df.to_dict('records')

# 使用json.dumps函数将字典列表转换为JSON字符串,设置ensure_ascii=False
json_data = json.dumps(data_list, ensure_ascii=False, indent=4)

# 将JSON数据写入文件
with open(os.path.join(work_dir, 'json_output.txt'), 'w') as f:
    f.write(json_data)

以下是使用pandas库将 JSON 数据转换为 Excel 文件的代码示例:

import pandas as pd
import json
import os

# 设置工作目录
work_dir = os.path.dirname(os.path.abspath(__file__))

# JSON文件路径
json_file_path = os.path.join(work_dir, 'json_data.json')

# 读取JSON文件
with open(json_file_path, 'r') as f:
    json_data = json.load(f)

# 将JSON数据转换为DataFrame
df = pd.DataFrame(json_data)

# Excel文件输出路径
excel_file_path = os.path.join(work_dir, 'output.xlsx')

# 将DataFrame写入Excel文件
df.to_excel(excel_file_path, index=False)
  1. 首先设置工作目录,获取当前脚本所在的目录路径。
  2. 然后指定 JSON 文件的路径,通过open函数以只读模式打开 JSON 文件,并使用json.load函数将 JSON 数据加载为 Python 对象(通常是字典或列表)。
  3. 接着使用pandasDataFrame构造函数将 JSON 数据转换为DataFrame,这是pandas中用于处理二维表格数据的主要数据结构。
  4. 再指定输出 Excel 文件的路径。
  5. 最后使用DataFrameto_excel方法将数据写入 Excel 文件,index=False参数表示不将行索引写入 Excel 文件。

sample json_output.txt

[

{

"input": "目前什么事项会有系统邮件或者企信消息通知?",

"output": "[此处未明确提及具体通知事项,需查看文档中的图片,假设图片显示包含合同审批通知、付款通知等]合同审批进度、付款状态等事项会有系统邮件或企信消息通知(具体需根据文档中图片所示内容确定)。"

},

{

"input": "元年商旅订票时身份信息有误,如何修改?",

"output": "行程选择界面,点击出行人">"按钮编辑证件信息,外籍注意检查护照信息,避免证件信息有误影响乘机。"

},

{

"input": "差旅费哪些发票需要员工线下打印?",

"output": "机票中的电子客运行程单、酒店住宿专票、火车票,线上订票月结统付统一打印发票;使用护照等非身份证订票的火车票、火车退改签票据,须员工线下打印后交回;滴滴用车、餐费、洗衣费等,须员工垫付后开票。"

},

{

"input": "差旅酒店住宿不通过线上预订,如何在差旅事前申请中预估费用?",

"output": "按标准添加行程规划,如选择目的地、入住离店日期、房间数、住宿标准等,系统会自动计算预估费用上限。"

},

{

"input": "跨店同事是否可以合住?",

"output": "为节约费用,可以合住,请线下预定酒店,报销时事由特殊报备。另外,同店员工也是可以合住的,请通过元年预定酒店即可。"

},

{

"input": "老系统已审批完成的差旅事前申请在哪提报销?",

"output": "商旅模块---行程方案---迁移前差旅费报销单。"

},

{

"input": "迁移前差旅费报销单据,如何添加未在事前申请中预估的费用?",

"output": "在预算归属中点击操作下的"⊕"按钮,新增行项目添加费用。老系统事前申请的所有行项目、未在事前申请中预估报销新增的行项目均在同一费用明细行里添加。"

},

相关推荐
Yanbin_Q9 分钟前
用 llama.cpp 体验 Meta 的 Llama AI 模型
人工智能·llama
jieshenai10 分钟前
LLamafactory 批量推理与异步 API 调用效率对比实测
深度学习·自然语言处理
jieshenai12 分钟前
基于 LlamaFactory 的 LoRA 微调模型支持 vllm 批量推理的实现
深度学习·自然语言处理
老艾的AI世界35 分钟前
AI让照片跳舞,人人都能是舞王!Swan下载介绍
人工智能·深度学习·神经网络·目标检测·机器学习·ai·图像识别·ai生成视频·ai跳舞·ai视频生成
Dipeak数巅科技36 分钟前
通过数巅能源大模型降本增效
大数据·数据库·人工智能·数据分析·能源
电子工程师UP学堂1 小时前
电子应用设计方案-30:智能扫地机器人系统方案设计
网络·人工智能·单片机·嵌入式硬件·机器人
山川而川-R1 小时前
yolov8的深度学习环境安装(cuda12.4、ubuntu22.04)
人工智能·深度学习·yolov8
whaosoft-1431 小时前
51c自动驾驶~合集38
人工智能
Joker23732 小时前
【目标跟踪】AntiUAV410数据集详细介绍
人工智能·计算机视觉·目标跟踪
白书宇2 小时前
23.100ASK_T113-PRO 移植opencv
人工智能·嵌入式硬件·opencv·物联网·计算机视觉·硬件工程