我有一个包含以下输入数据的文件:
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等。
答案 0 :(得分: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
答案 1 :(得分:1)
我最近开始使用Pandas数据框。它有一个CSV阅读器,使切片和切块数据非常简单。