如何读取csv文件内容建立映射表(基于pandas)

前言

在进行NLP模型训练的时候,训练数据集经常是被保存在csv文件中,我们训练模型的时候就需要从csv文件中取数据

同时,一些公司的大语言模型的语料来源,往往是通过爬虫等技术从网路上爬取下来的,数据的训练的标签(假如是实体识别的任务)一般都需要进行归一化来满足模型的能效,而业务方面可能有需要对训练的数据进行分析,这时候就需要归一之前的数据,往往这样的情况下,写一个脚本直接得到归一前后的映射表就可以非常方便地完成任务


csv文件

CSV,全称是 Comma-Separated Values,直译就是逗号分隔值。在 CSV 文件中,每一行代表一个数据记录,每一个数据记录中的单个数据,则由逗号分开(也可使用其他分隔符),这样便形成了一个二维的表格结构。

CSV 格式文本文件是一种广泛应用的纯文本格式,它的特点是:

  • 易于阅读:使用纯文本形式存储数据,每一条记录占用一行,字段由逗号分隔,可以直接用文本编辑器打开查阅。
  • 兼容性好:几乎所有表格软件都能够阅读CSV格式的文件,例如 Excel、Google Sheets、OpenOffice 等。
  • 简单且使用广泛:在数据输入输出、数据交换的环节常常会用到,是数据处理、机器学习常用的文件格式。

pandas库

Pandas 是一个强大的开源数据处理库,常用于数据清洗,数据处理,数据分析等。它内建了很多函数和方法,可以让我们非常方便地对各类数据进行操作。

主要功能包括:

  • 数据串联与合并

    Pandas 提供了各种工具(全功能的序列函数,日期范围函数,数据对齐和数据不同结构的合并等),可以快速地将不同结构的数据整合在一起,使我们对数据进行处理。

  • 时间序列:Pandas 提供了简单、强大且高效的功能来执行类似于重采样、设定/获取日期时间偏移量、对时区进行转换的操作。

  • 数据清洗:在将散乱的数据格式化为可以输出的格式之前,需要使用 Pandas 来清洗、转换和加工数据。

  • 数据处理Pandas 省去了大部分数据处理任务需要写大量循环的过程,基于哈希表优秀的设计,这样不仅有提高的性能,也有更高的工作效率。

    扫描二维码关注公众号,回复: 17321645 查看本文章

任务介绍

根据提供的码表数据在脚本里面对应生成归一化前后的映射表

代码实现

需要的环境库

import pandas as pd
from collections import defaultdict
from tqdm import tqdm

defaultdict是默认字典类型,tqdm是进度显示

data_path = r"你的文件路径"
data = pd.read_csv(data_path)

读取csv文件内容,这里data是Dataframe类型的数据

# 定义处理列表的函数
def word_tolist(wordlist):
    if "|" in wordlist:
        return wordlist.split("|")
    else:
        return [wordlist]

从文件里我们看到,wordList字段对应的值用“|”隔开,那我们就以“|”为分割获取列表,如果不存在“|”则直接返回单个数据的列表

dict_list_type = defaultdict(list)

for i,row in tqdm(data.iterrows()):
    key = row["key"]
    wordlist_str = row["wordList"]
    wordlist = word_tolist(wordlist_str)
    type_word = row["type"]
    # print(key)

    dict_list_type[type_word].append({key:wordlist})
    
print(dict_list_type)

iterrows()返回的是csv文件中每一行的序号以及对应的字典数据,大家可以在循环里打印出来就可以有直观的感受

print(row)

这里返回的dict_list_type字典的结构是嵌入列表字典,最外层的主键是类型type,对应的值是一个列表数据,列表里面的每个元素又是一个字典类型,对应这个type所对应的各个归一化后的key作为主键,值为归一化之前的列表数据,打印出来显示为

获取到这个映射表后,就能方便地得到归一化前后的对应数据(对应的csv文件以绑定到资源当中)

欢迎大家讨论交流~


猜你喜欢

转载自blog.csdn.net/weixin_57506268/article/details/135289402