最近我需要创建一个直方图,显示大数据集的频率分布。如果数据集很小,这应该是一个简单的工作。但是,我需要绘制的数据集包含大约800000000个数字(假设每个数字需要4个字节),它们都存储在一个文本文件中,每行一个数字。文本文件大约为4 GB。我试过GNUPLOT,但它抱怨没有足够的内存来处理这个数据集。有人可以建议如何解决这个问题,或任何其他工具来完成这项工作吗?
谢谢, 汤姆
答案 0 :(得分: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