0

次の入力データを含むファイルがあります。

       IN   OUT
data1  2.3  1.3
data2  0.1  2.1
data3  1.5  2.8
dataX  ...  ...

そのようなファイルは何千もあり、それぞれに同じdata1、data2、data3、...、dataXがあります。すべてのファイルの各データと列の各値の数を数えたいと思います。例:

ファイル'data1-IN'(ファイル名)内

2.3 - 50    (times)
0.1 - 233   (times)
... - ...   (times)

ファイル'data1-OUT'(ファイル名)内

2.1 - 1024 (times)
2.8 - 120  (times)
... - ...  (times)

ファイル'data2-IN'(ファイル名)内

0.4 - 312    (times)
0.3 - 202   (times)
... - ...   (times)

ファイル'data2-OUT'(ファイル名)内

1.1 - 124 (times)
3.8 - 451  (times)
... - ...  (times)

ファイル'data3-IN'..。

そのようなデータを数えるのに最適なPythonデータ構造はどれですか?多次元辞書を使いたかったのですが、KeyErrorsなどで苦労しています。

4

2 に答える 2

3

あなたは本当に使いたいですcollections.Counter、おそらく:に含まれていcollections.defaultdictます

import collections
import csv

counts = collections.defaultdict(collections.Counter)

for filename in files:
    for line in csv.reader(open(filename, 'rb')):
         counts[filename + '-IN' ][line[1]] += 1
         counts[filename + '-OUT'][line[2]] += 1
于 2012-10-02T20:07:15.710 に答える
1

最近、パンダのデータフレームを使い始めました。CSVリーダーがあり、データのスライスとダイシングが非常に簡単になります。

于 2012-10-03T18:50:52.077 に答える