0

最近、大規模なデータセットの度数分布を示すヒストグラムを作成する必要があります。データセットが小さい場合、これは簡単な作業です。ただし、プロットする必要があるデータ セットには約 800000000 個の数値が含まれており (各数値が 4 バイトであると仮定します)、それらはすべて 1 つのテキスト ファイルに 1 行に 1 つずつ格納されています。テキスト ファイルは約 4 GB です。GNUPLOT を試してみましたが、このデータ セットを処理するための十分なメモリがありません。誰かがこの問題を解決する方法、またはこの仕事をするための他のツールを提案できますか?

ありがとう、トム

4

1 に答える 1

0

私は使用しますpython。辞書を作るのと同じくらい簡単です。ファイルに整数が含まれていると仮定します。

from collections import defaultdict

d = defaultdict(int)
with open('datafile') as fin:
    for line in fin:
        d[int(line)] += 1

for item,number_of_occurances in sorted(d.items()):
    print item,number_of_occurances

新しいバージョンの python を使用している場合は、次のようにするとさらに簡単になりますCounter

from collections import Counter
with open('datafile') as fin:
    d = Counter(int(line) for line in fin)

for item,number_of_occurances in sorted(d.items()):
    print item,number_of_occurances
于 2013-01-19T23:54:19.277 に答える