python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python处理数据集

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

作者: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处理数据集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文