如何有效地在python中编写csv?

时间:2013-03-17 18:24:28

标签: python csv

我正在计算大型文档中的tf-idf。我的单词数量超过80,000。我试图在csv文件中写稀疏矩阵。我使用的代码类似于此处How to add a new column to a CSV file using Python?

输出文件太大,超过700 MB,仅约30,000字。 那么,我的问题是如何有效地编写它? 谢谢。

2 个答案:

答案 0 :(得分:11)

您可以使用gzip模块轻松直接编写gzip文件:

import gzip
import csv

f=gzip.open("myfile.csv.gz", "w")
csv_w=csv.writer(f)
for row in to_write :
    csv_w.writerow(row)
f.close()

不要忘记关闭文件,否则生成的csv.gz文件可能无法读取。

您也可以采用更加pythonic的方式:

with gzip.open("myfile.csv.gz", "w") as f :
    csv_w = csv.writer(f)
    ...

保证文件将被关闭。

希望这有帮助。

答案 1 :(得分:1)

CSV是CSV,您无能为力。你可以简单地gzip,如果真的想要坚持使用CSV,或者你可以使用一些更符合你需求的自定义格式。

例如,您可以使用字典并导出为JSON格式,或创建处理数据的专用对象并pickle

当我使用TF-IDF时,我使用sqlite(通过sqlalchemy)来存储文档信息,TF数据作为JSON格式的字典。从那时我创建了IDF统计数据,然后使用numpy

创建了TFIDF的其余部分