使用python从csv读取termdocument矩阵

2024-05-16 15:18:59 发布

您现在位置:Python中文网/ 问答频道 /正文

经典的csv阅读器不能处理术语文档数组的原因是csv文件的第一列是术语,而不是值。因此,该文件具有以下语法:

"";"label1";"label2";"label3" ...
"term1";1;0;8;...
"term2";0;0;3;...
.................................

我需要建立一个字典,它的键是label1,label3,等等。。。值是列向量(这里是:dict[label1]->;1,0,dict[label2]->;0,0等等),这意味着这些术语对我来说完全没有用。在

我实施了一个定制的解决方案,如下所示:

^{pr2}$

不过,用我的笔记本电脑读取8个csv文件(总计:12MB)需要90多分钟。在

有没有人知道更有效的方法来处理这个问题?在


Tags: 文件csvterm1文档gt语法原因数组
2条回答

您可以使用csv模块将CSV文件读入内存,然后使用zip(*rows)itertools.izip(*rows)来转置行:

with open(somecsv, 'rb') as infile:
    reader = csv.reader(infile, delimiter=';')
    headers = next(reader)
    data = list(reader)
    data = dict(zip(headers, zip(*data)))

这将创建一个以头为键、列为值的data字典。如果需要,可以从字典中删除''“terms”列。在

对于您的输入示例,data字典在执行上述代码后如下所示:

^{pr2}$

熊猫显然是最好的选择!你所要做的就是将数据帧加载到字典中,它就生成了一个字典。以下是所有代码,它既快速又高效:

import pandas as pd
data = pd.read_csv(filename)
my_dict = dict(data)

快,简单!在

相关问题 更多 >