使用外部csv文件

时间:2015-12-25 13:26:49

标签: python csv

此问题之前由user907629提出,Maria Zverina回答了问题,但她没有从外部csv文件导入数据。

我的文件包含超过800000条记录,我想导入外部csv文件。应该在此frequency count代码中进行哪些更改?

3 个答案:

答案 0 :(得分:3)

您可以在不存储任何中间列表的情况下执行此操作:

itemgetter

除非您打算使用列表,否则没有理由将数据存储在列表中,python setup.py install 将仅从每行中提取第三列值。您需要传递您想要计算的任何列,并将分隔符设置为分隔数据的任何内容。

答案 1 :(得分:1)

  1. 使用open从外部读取文件而不是StringIO
  2. 800,000不是那么大,以至于你对内存有所保留,所以你可以把它看作原始问题。但如果您认为需要更大的文件,则必须逐一阅读。
  3. 检查新代码:

    import csv
    from collections import Counter
    
    
    input_stream = open('external.csv')
    reader = csv.reader(input_stream, delimiter='\t')
    
    reader.next() #skip header
    cities = [row[2] for row in reader]
    
    for (k,v) in Counter(cities).iteritems():
        print "%s appears %d times" % (k, v)
    

答案 2 :(得分:-1)

如果您只需要执行一次,如果您使用的是UNIX计算机,则可以使用优秀的命令行工具。计算单词就像

一样简单
cat "inputfile.txt" | sort | uniq -c > outputfile.txt

要将这些值存储在输出文件中,请使用

{{1}}

有关命令行何时(最多235x)比hadoop群集更快更容易的讨论,请参阅http://aadrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html