使用Python处理数据集的技巧分享

 更新时间:2024年12月27日 08:44:59   作者:engchina  
这篇文章会从加载数据开始,一步步教大家如何格式化数据、保存数据,最后还会教大家如何加载处理后的数据,感兴趣的小伙伴可以跟随小编一起学习一下

1. 导入需要的库

首先,我们需要导入一些Python库,这些库会帮助我们处理数据。代码如下:

import jsonlines
import itertools
import pandas as pd
from pprint import pprint

import datasets
from datasets import load_dataset

解释:

jsonlines: 用来处理JSON Lines格式的文件。

itertools: 提供了一些高效的循环工具。

pandas: 用来处理表格数据,比如Excel或CSV文件。

pprint: 用来美化打印数据,让数据看起来更整齐。

datasets: 一个专门用来加载和处理数据集的库。

2. 加载预训练数据集

接下来,我们要加载一个预训练的数据集。这里我们使用 allenai/c4 数据集,它是一个英文文本数据集。

pretrained_dataset = load_dataset("allenai/c4", "en", split="train", streaming=True)

解释:

load_dataset: 用来加载数据集。

"allenai/c4": 数据集的名称。

"en": 表示我们只加载英文部分。

split="train": 表示我们只加载训练集。

streaming=True: 表示以流式方式加载数据,适合处理大数据集。

3. 查看数据集的前5个样本

我们可以用以下代码查看数据集的前5个样本:

n = 5
print("Pretrained dataset:")
top_n = itertools.islice(pretrained_dataset, n)
for i in top_n:
  print(i)

解释:

n = 5: 表示我们要查看5个样本。

itertools.islice: 用来从数据集中取出前5个样本。

for i in top_n:: 遍历这5个样本并打印出来。

4. 加载公司微调数据集

假设我们有一个名为 lamini_docs.jsonl 的文件,里面存储了一些问题和答案。我们可以用以下代码加载这个文件:

filename = "lamini_docs.jsonl"
instruction_dataset_df = pd.read_json(filename, lines=True)
instruction_dataset_df

解释:

pd.read_json: 用来读取JSON Lines格式的文件,并将其转换为表格形式(DataFrame)。

instruction_dataset_df: 打印表格内容。

5. 格式化数据

我们可以把问题和答案拼接成一个字符串,方便后续处理:

examples = instruction_dataset_df.to_dict()
text = examples["question"][0] + examples["answer"][0]
text

解释:

to_dict(): 把表格数据转换成字典格式。

examples["question"][0]: 获取第一个问题的内容。

examples["answer"][0]: 获取第一个答案的内容。

text: 把问题和答案拼接成一个字符串。

6. 使用模板格式化数据

我们可以使用模板来格式化问题和答案,让它们看起来更整齐:

prompt_template_qa = """### Question:
{question}

### Answer:
{answer}"""

question = examples["question"][0]
answer = examples["answer"][0]

text_with_prompt_template = prompt_template_qa.format(question=question, answer=answer)
text_with_prompt_template

解释:

prompt_template_qa: 定义了一个模板,包含“Question”和“Answer”两部分。

format: 把问题和答案插入到模板中。

7. 生成微调数据集

我们可以把所有的问答对都格式化,并保存到一个列表中:

num_examples = len(examples["question"])
finetuning_dataset_text_only = []
finetuning_dataset_question_answer = []
for i in range(num_examples):
  question = examples["question"][i]
  answer = examples["answer"][i]

  text_with_prompt_template_qa = prompt_template_qa.format(question=question, answer=answer)
  finetuning_dataset_text_only.append({"text": text_with_prompt_template_qa})

  text_with_prompt_template_q = prompt_template_q.format(question=question)
  finetuning_dataset_question_answer.append({"question": text_with_prompt_template_q, "answer": answer})

解释:

num_examples: 获取问题的数量。

finetuning_dataset_text_only: 存储格式化后的文本。

finetuning_dataset_question_answer: 存储格式化后的问题和答案。

8. 保存处理后的数据

我们可以把处理后的数据保存到一个新的文件中:

with jsonlines.open(f'lamini_docs_processed.jsonl', 'w') as writer:
    writer.write_all(finetuning_dataset_question_answer)

解释:

jsonlines.open: 打开一个文件,准备写入数据。

writer.write_all: 把所有的数据写入文件。

9. 加载处理后的数据

最后,我们可以加载刚刚保存的数据集:

finetuning_dataset_name = "lamini/lamini_docs"
finetuning_dataset = load_dataset(finetuning_dataset_name)
print(finetuning_dataset)

解释:

load_dataset: 加载指定名称的数据集。

print(finetuning_dataset): 打印加载的数据集。

总结

通过这篇文章,我们学习了如何用Python加载、处理和保存数据集。我们从简单的数据加载开始,逐步学习了如何格式化数据、保存数据,最后还学会了如何加载处理后的数据。

到此这篇关于使用Python处理数据集的技巧分享的文章就介绍到这了,更多相关Python处理数据集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python文本进度条实例

    python文本进度条实例

    这篇文章主要为大家介绍了python文本进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 利用Python+requests批量检测网站是否可访问的实战指南

    利用Python+requests批量检测网站是否可访问的实战指南

    在日常开发、运维、测试和数据采集中,我们经常需要判断一批网站或接口是否能够正常访问,如果一个一个用浏览器打开,不仅效率低,而且很难记录结果,使用 Python 的 requests 库,就可以把这个过程自动化,本文会用一个完整案例演示,需要的朋友可以参考下
    2026-05-05
  • Ruby使用eventmachine为HTTP服务器添加文件下载功能

    Ruby使用eventmachine为HTTP服务器添加文件下载功能

    这篇文章主要介绍了Ruby使用eventmachine为HTTP服务器添加文件下载功能的实例,同时作者也分享了Windows上eventmachine安装报错问题的解决方法,需要的朋友可以参考下
    2016-04-04
  • 6种将Python代码打包成exe应用的方式

    6种将Python代码打包成exe应用的方式

    这篇文章主要给大家介绍了关于6种将Python代码打包成exe应用的方式,对于很多python的初学者来说,很希望将自己用python写的.py文件生成exe直接在电脑上运行,需要的朋友可以参考下
    2023-08-08
  • Python实现DDos攻击实例详解

    Python实现DDos攻击实例详解

    这篇文章主要给大家介绍了关于Python实现DDos攻击的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • python opencv 找出图像中的最大轮廓并填充(生成mask)

    python opencv 找出图像中的最大轮廓并填充(生成mask)

    这篇文章主要介绍了python opencv 找出图像中的最大轮廓并填充(生成mask),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python接口自动化之正则用例参数化的示例详解

    python接口自动化之正则用例参数化的示例详解

    这篇文章主要介绍了python接口自动化之正则用例参数化,它是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python中的单行、多行、中文注释方法

    Python中的单行、多行、中文注释方法

    今天小编就为大家分享一篇Python中的单行、多行、中文注释方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 详解Python如何实现尾递归优化

    详解Python如何实现尾递归优化

    尾递归是函数返回最后一个操作是递归调用,则该函数是尾递归。本文将介绍Python是如何实现尾递归优化的,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-05-05
  • python判断是否汉字的5种方法实例

    python判断是否汉字的5种方法实例

    这篇文章主要给大家介绍了关于python判断是否汉字的5种方法,文中通过实例代码将判断的几种方法介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06

最新评论