在matplotlib中高效存储原始和处理数据
我有一些很大的数据集,包括数字和文本。现在我在用Python和numpy/matplotlib学习和制作可视化图表时遇到了一个问题:我加载原始数据,进行计算,然后在matplotlib中创建图表。所有这些都在一个程序里,所以每次我想调整图例或者让图表看起来更好时,都会重复且低效地计算相同的数据。更糟的是,我只是在用数据集中的一小部分,而这个脚本每次运行要花30分钟!
我知道解决办法是先进行计算,然后把结果存储起来,以便在另一个程序中使用;接着用不同的程序来生成实际的图表。我的问题是,我不知道在程序之间如何最好地存储处理过的数据。我应该创建一个.csv文件,还是有其他合适的结构可以自动以(可能)人类可读的格式存储数据呢?
2 个回答
1
我会选择把它们“腌制”起来。这非常简单,通常速度也够快,而且如果你使用更新的二进制协议,空间使用上也会比较高效。记得使用最高版本的协议:
import cPickle
with open("results.dat", "wb") as stream:
cPickle.dump(data, stream, cPickle.HIGHEST_PROTOCOL)
...
with open("results.dat", "rb") as stream:
data = cPickle.load(stream)
3
可以看看 pytables,这是一个用来简化HDF5库的工具。它就是为了处理这类事情而设计的。