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

我最近开始使用Pandas数据框。它有一个 CSV 阅读器,使切片和切块数据非常简单。

于 2012-10-03T18:50:52.077 回答