【大模型-驯化】成功搞懂大模型的jsonl数据格式处理和写入,通过pandas读取和保存JSONL文件
本次修炼方法请往下查看
🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 相关内容文档获取 微信公众号
🎇 相关内容视频讲解 B站
🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验。
🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100% 。
📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。
🌵文章目录🌵
- 🎯 1.问题介绍
- 💡 2. 代码实现
- 2.1 读取jsonl文件
- 2.2 保存为JSONL文件
- 💡 3. 高阶用法
- 3.1 处理大型JSONL文件
- 3.2 自定义JSONL的读取
- 💡4. 总结
下滑查看解决方法
🎯 1.问题介绍
JSONL(JSON Lines)是一种文本格式,目前大模型很多的数据格式都是jsonl和json的,通常我们使用json的文件相对较多,对于jsonl的处理,我们其中每一行都是一个独立的JSON对象。这种格式非常适合于那些需要逐行读取和写入数据的场景,比如日志文件处理。Pandas是一个强大的Python数据分析库,它提供了读取和保存JSONL文件的功能,使得处理这种格式的数据变得简单快捷。:
💡 2. 代码实现
2.1 读取jsonl文件
为了要大家更加清晰的理解jsonl文件的数据处理过程,我们首先,我们需要一个JSONL文件。假设我们有一个名为data.jsonl的文件,其内容如下:
{"name": "Alice", "age": 25, "city": "New York"}
{"name": "Bob", "age": 30, "city": "Los Angeles"}
{"name": "Charlie", "age": 35, "city": "Chicago"}
使用Pandas读取这个文件的代码如下:
import pandas as pd
# 读取JSONL文件
df = pd.read_json('data.jsonl', lines=True)
print(df)
name age city
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
2.2 保存为JSONL文件
现在,如果我们想要将DataFrame保存回JSONL格式,可以使用to_json方法:
# 保存DataFrame为JSONL文件
df.to_json('output.jsonl', lines=True, orient='records', force_ascii=False)
💡 3. 高阶用法
3.1 处理大型JSONL文件
当处理大型JSONL文件时,我们可能不希望一次性将所有数据加载到内存中。Pandas的read_json方法支持分块读取:
chunk_size = 1000 # 每次读取1000行
chunks = pd.read_json('large_data.jsonl', lines=True, chunksize=chunk_size)
for chunk in chunks:
print(chunk)
# 可以在这里对每个块进行处理
3.2 自定义JSONL的读取
有时候,JSONL文件中的数据可能包含复杂的结构,比如嵌套的JSON对象。在这种情况下,我们可以使用json_normalize来展平这些结构:
from pandas import json_normalize
# 假设我们有一个包含嵌套JSON的JSONL文件
nested_data = [
{"name": "Alice", "details": {"age": 25, "city": "New York"}},
{"name": "Bob", "details": {"age": 30, "city": "Los Angeles"}}
]
# 将列表转换为JSONL格式的字符串
nested_jsonl = "\n".join([json.dumps(d) for d in nested_data])
# 读取并展平JSONL文件
df_nested = pd.read_json(nested_jsonl, lines=True)
df_flattened = json_normalize(df_nested)
print(df_flattened)
name age city
0 Alice 25 New York
1 Bob 30 Los Angeles
💡4. 总结
Pandas提供了非常便捷的方法来读取和保存JSONL文件,无论是处理小型文件还是大型数据集,都能轻松应对。通过分块读取和自定义数据处理,我们可以有效地处理复杂的数据结构。掌握这些技能,将大大提高数据处理的效率和灵活性。