2

我有一个 csv 文件。csv文件的结构是:

Name Hour Location
A    4    San Fransisco
B    2    New York
C    4    New York
D    7    Denton
E    8    Boston
F    1    Boston

如果你观察上面的数据,有

2 New York and
2 Boston

我尝试使用表格包。我尝试了表格包文档中提到的教程超过 7 个小时。但我勉强通过。

任何人都可以帮助我,我如何使用 Python 在 Location 列中提取该 Csv 文件中的常用词的计数。

谢谢你。

4

3 回答 3

9
data = """Name\tHour\tLocation
A\t4\tSan Fransisco
B\t2\tNew York
C\t4\tNew York
D\t7\tDenton
E\t8\tBoston
F\t1\tBoston
"""

import csv
import StringIO
from collections import Counter


input_stream = StringIO.StringIO(data)
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)

输出:

San Fransisco appears 1 times
Denton appears 1 times
New York appears 2 times
Boston appears 2 times
于 2012-07-09T14:16:39.443 回答
6

不知道你用什么来分隔,但这个例子显示为 4 个空格,所以这是一个解决方案。

如果您实际上是按制表符分隔,请使用@MariaZverina 的答案

import collections

with open('test.txt') as f:
    next(f) # Skip the first line
    print collections.Counter(line.rstrip().rpartition('    ')[-1] for line in f)

输出:

Counter({'New York': 2, 'Boston': 2, 'San Fransisco': 1, 'Denton': 1})
于 2012-07-09T14:15:10.590 回答
0

如果文件不是太大,最天真的方法是:

  • 逐行读取文件
  • 将位置值附加到列表中
  • 从该列表中构建一组唯一性
  • 确定列表中每个唯一值的计数
于 2012-07-09T14:23:33.130 回答