使用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 list内存使用详解

    Python中的内存管理之python list内存使用详解

    这篇文章主要介绍了Python中的内存管理之python list内存使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • python静态方法实例

    python静态方法实例

    这篇文章主要介绍了python静态方法,实例分析了python静态方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • 解决windows下命令行执行python3失效,会打开应用商店问题

    解决windows下命令行执行python3失效,会打开应用商店问题

    这篇文章主要介绍了解决windows下命令行执行python3失效,会打开应用商店问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python scrapy爬取苏州二手房交易数据

    Python scrapy爬取苏州二手房交易数据

    scrapy的第二个实例对比上一个,在数据处理上增加了新的需求,运用了管道文件pipelines.py,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python常用标准库之os模块功能

    Python常用标准库之os模块功能

    这篇文章主要介绍了Python常用标准库之os模块功能,os模块的主要功能有系统相关、目录及文件操作、执行命令和管理进程,其中的进程管理功能主要是Linux相关的,此处不做讨论,对Python标准库os相关知识感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Python和Matlab实现蝙蝠算法的示例代码

    Python和Matlab实现蝙蝠算法的示例代码

    蝙蝠算法是一种搜索全局最优解的有效方法,本文主要介绍了Python和Matlab实现蝙蝠算法的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python生成验证码实例

    Python生成验证码实例

    这篇文章主要介绍了Python生成验证码的方法,具有很好的实用价值,代码结构清晰易懂,需要的朋友可以参考下
    2014-08-08
  • python爬虫模拟浏览器的两种方法实例分析

    python爬虫模拟浏览器的两种方法实例分析

    这篇文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操作技巧与使用注意事项,需要的朋友可以参考下
    2019-12-12
  • 解决pycharm 工具栏Tool中找不到Run manager.py Task的问题

    解决pycharm 工具栏Tool中找不到Run manager.py Task的问题

    今天小编就为大家分享一篇解决pycharm 工具栏Tool中找不到Run manager.py Task的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python如何用pyecharts制作词云图

    python如何用pyecharts制作词云图

    大家好,本篇文章主要讲的是python如何用pyecharts制作词云图,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论