2012-10-02 95 views
0

我有以下的輸入數據的文件:python - 如何統計列數的數量?

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

有成千上萬這樣的文件,每個具有相同的數據1,數據2,數據3,...,數據X 我想數數來自所有文件的每個數據和列的每個值。例如:

在文件 '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) 

在文件「數據3-IN」 ......

哪一種Python數據結構將是最好的來算這樣的數據?我想用多維字典,而是我與KeyErrors等

回答

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 
+0

Python 2.6.4(r264:75706,Apr 2 2012,20:24:27)[C] on sunos5 輸入「help」,「copyright」,「credits」或「license」以獲取更多信息。 >>>進口藏品 >>>數= collections.defaultdict(collections.Counter) 回溯(最近通話最後一個): 文件 「」,1號線,在 AttributeError的: '模塊' 對象有沒有屬性'Counter' – przemol

+0

@przemol:改爲使用http://code.activestate.com/recipes/576611-counter-class/。 –

+0

從http://stackoverflow.com/questions/5079790/python-how-to-update-value-of-key-value-pair-in-nested-dictionary?lq=1:dictionary = collections.defaultdict(lambda: collections.defaultdict(int)) 這兩個定義有什麼區別? – przemol

1

我最近使用Pandas數據幀的開始。它有一個CSV閱讀器,使切片和切片數據非常簡單。