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を使用して[場所]列のその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

ファイルが大きすぎない場合、最も単純な方法は次のようになります。

  • ファイルを1行ずつ読み取る
  • 場所の値をリストに追加します
  • そのリストからユニークなセットを構築する
  • リスト内の各一意のカウントを決定します
于 2012-07-09T14:23:33.130 に答える